Front-end

JSP & Servlet DAY 9 ( Maven Project 에서 MVC 패턴을 활용한 회원관리 시스템 실습2 ( MyBatis 활용 ) )

도키마 2024. 8. 5. 16:34



 

 

 

 

오늘의 노래 추천 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

DAY 9

 

 

 

 

 

 

 

 

 

 

 

 

ㅡ  MVC 패턴 회원관리 시스템 실습2 ( myBatis 활용 ) ㅡ

Maven Project, mybatis

 

 

 

 

 

 

 

 

 

 

 

 

로그인 메서드 추가

 

 

 


ㅡ main.jsp 에서 로그인 태그 수정 ㅡ

로그인 form 태그에 action을 추가하고 각 input에 name 추가

 

main.jsp

 

 

 

 

ㅡ 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 추가

 

session.getAttribute

 

<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 서블릿 파일 생성

 

WEB-INF

 

	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값 지정

 

session.getAttribute

 

user.get

 

 

 

 

ㅡ update.jsp 에서 form 태그 수정 ㅡ

session 정보를 불러오고 form 태그에 action, method 속성을 수정, 각 input 태그의 value값 지정