오늘의 노래 추천
DAY 9
ㅡ MVC 패턴 회원관리 시스템 실습2 ( myBatis 활용 ) ㅡ
Maven Project, mybatis
로그인 메서드 추가
ㅡ main.jsp 에서 로그인 태그 수정 ㅡ
로그인 form 태그에 action을 추가하고 각 input에 name 추가
ㅡ MemberMapper.xml 에서 sql문 작성 ㅡ
실행하고자하는 sql문 키워드가 태그 이름이 됨
<!-- select문 -->
<!-- resultType : 조회 결과를 어떤 객체에 옮겨담아줄지
조회 결과의 컬럼명 == 옮겨담을 DTO의 변수명 -->
<select id="login" parameterType="com.smhrd.entity.Member" resultType="com.smhrd.entity.Member">
select * from member
where email=#{email} and pw=#{pw}
</select>
insert 문과는 다르게 리턴값이 발생할 수 있으므로 resultType 지정이 필요함
ㅡ MemberDAO 에서 login메서드 작성 ㅡ
SqlSession 을 불러와 메서드 작성
// 2) 로그인
public Member login(Member member) {
// (1) SqlSession 불러오기
// openSession(boolean) : auto commit을 사용할지
SqlSession session = factory.openSession(true);
// (2) SQL 쿼리 실행하기
// selectOne : ResultType에 명시한 자료형
// selectList : List<Member>라는 자료형
Member result = session.selectOne("login", member);
// (3) SqlSession 반납
session.close();
// (4) 실행결과 리턴
return result;
}
ㅡ LoginController에서 작성한 메서드 실행 ㅡ
login 으로 url mapping
파라미터를 불러와 login 메서드 기능 실행 후 view 선택해 페이지 이동
SqlSession 을 불러와 메서드 작성
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 1. parameter 수집
request.setCharacterEncoding("utf-8");
String email = request.getParameter("email");
String pw = request.getParameter("pw");
Member member = new Member();
member.setEmail(email);
member.setPw(pw);
// 2. 기능 실행
MemberDAO dao = new MemberDAO();
Member result = dao.login(member);
if(result!=null) {
System.out.println("로그인 성공");
// 사용자의 정보를 세션에 저장
HttpSession session = request.getSession();
session.setAttribute("user", result);
}else{
System.out.println("로그인 실패");
}
// 3. view 선택
String url = "main";
response.sendRedirect(url);
}
ㅡ main.jsp 에서 update 태그 수정 ㅡ
로그인 form 태그에 action을 추가하고 각 input에 name 추가
<nav>
<% if(user==null){ %>
<a href="#menu">로그인</a>
<% } else { %>
<a href=>게시판</a>
<a href=>개인정보 수정</a>
<a href=>로그아웃</a>
<% } %>
<!--Ex07. 로그인 한 상태라면 '게시판'버튼과 '개인정보수정', '로그아웃' 버튼을 출력하시오. -->
<header class="major">
<%--Ex07. 로그인 후 로그인 한 사용자의 세션아이디로 바꾸시오. ex)smart님 환영합니다 --%>
<% if(user==null){ %>
<h1>로그인 한 세션아이디를 출력해주세요</h1>
<% } else { %>
<h1><%=user.getEmail() %></h1>
<% } %>
</header>
ㅡ main.jsp 에서 update 태그 수정 ㅡ
개인정보 수정 a태그 href에 goUpdate 경로 작성
ㅡ GoUpdateController 클래스 생성 ㅡ
update.jsp가 WEB-INF 내에 있기 때문에 goUpdate 서블릿 파일 생성
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String url = "WEB-INF/views/update.jsp";
// redirect : Controller --> Controller 다시 요청하는 경우
// forward : Controller --> jsp 이동하는 경우
RequestDispatcher rd = request.getRequestDispatcher(url);
// Controller가 갖고있는 request, response를 forward로 넘겨줘야함
rd.forward(request, response);
}
forward 방식으로 update.jsp 파일로 이동하는 코드 작성
ㅡ update.jsp 에서 form 태그 수정 ㅡ
session 정보를 불러오고 form 태그에 action, method 속성을 수정, 각 input 태그의 value값 지정
ㅡ update.jsp 에서 form 태그 수정 ㅡ
session 정보를 불러오고 form 태그에 action, method 속성을 수정, 각 input 태그의 value값 지정