[MyBatis] MyBatis CRUD - 로그인/로그아웃/정보 변경/ 탈퇴 기능

2022. 11. 11. 17:22·📗 self-study/📗 KH정보교육원 당산지원
더보기

MyBatis의  로그인/로그아웃/정보 변경/탈퇴 기능을 구현해 보자

 

 

 

🔥 로그인 기능 🔥

 

💻 menubar.jsp 

👉🏻 c:when의 test 내용을 empty loginUser로 변경, 로그인 폼에 action값 지정, 로그인 시 환영합니다 문구

        <c:choose>
            <c:when test="${ empty loginUser }">
                <!-- 로그인 전에 보여지는 로그인 폼 -->
                <!-- 
                	현재 나의 url : http://localhost:8888/mybatis/
                	로그인 시 보낼 url : http://localhost:8888/mybatis/login.me
                	
                	절대 경로: /mybatis/login.me
                	상대 경로: login.me
                -->
                <form action="login.me" method="post">
                    <table>
                        <tr>
                            <td>아이디</td>
                            <td><input type="text" name="userId" required></td>
                            <td rowspan="2">
                                <button type="submit" style="height:50px;">로그인</button>
                            </td>
                        </tr>
                        <tr>
                            <td>비밀번호</td>
                            <td><input type="password" name="userPwd" required></td>
                            <td></td>
                        </tr>
                        <tr>
                            <td colspan="3" align="center">
                            	<!-- contextRoot 기준으로 내 경로 마지막 값만 기술하는 상대 경로 방식 -->
                                <a href="enrollForm.me">회원가입</a> | 
                                <a href="">비밀번호 찾기</a>
                            </td>
                        </tr>
                    </table>
                </form>
            </c:when>
            <c:otherwise>
                <!-- 로그인 후에 보여지는 프로필 화면 -->
                <div>
                    <!-- table>(tr>td*2)*2 2행 2열 테이블 애밋문법 -->
                    <table>
                        <tr>
                            <td colspan="2">
                                <h3>${ loginUser.userName }님 환영합니다 ^^</h3>
                            </td>
                        </tr>
                        <tr>
                            <td><a href="">마이페이지</a></td>
                            <td><a href="">로그아웃</a></td>
                        </tr>
                    </table>
                </div>
            </c:otherwise>
        </c:choose>

 

💻 LoginController 생성

url mapping: /login.me

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

		request.setCharacterEncoding("UTF-8");
		
		String userId = request.getParameter("userId");
		String userPwd = request.getParameter("userPwd");
		
		Member m = new Member();
		m.setUserId(userId);
		m.setUserPwd(userPwd);
		
		Member loginUser = new MemberServiceImpl().loginMember(m);
		
		// 조회 결과에 따른 응답 페이지 지정
		if(loginUser == null) { // 로그인 실패
			
			request.setAttribute("errorMsg" , "로그인 실패");
			request.getRequestDispatcher("WEB-INF/views/common/errorPage.jsp").forward(request, response);
			
		} else { // 로그인 성공
			
			// 세션에 로그인한 사용자의 정보를 담기
			request.getSession().setAttribute("loginUser", loginUser);
			
			// 메인 페이지로 url 재요청
			response.sendRedirect(request.getContextPath());
			
		}

 

💻 MemberServiceImpl

	@Override
	public Member loginMember(Member m) {
		
		// 1. SqlSession 객체 생성
		SqlSession sqlSession = Template.getSqlSession();
		
		// 2. 생성된 SqlSession 객체와 전달값을 Dao로 넘기면서 요청 후 결과 받기
		Member loginUser = new MemberDao().loginMember(sqlSession, m);
		
		// 3. 결과에 따른 트랜잭션 처리 => SELECT문을 실행해서 패스
		// 4. SqlSession 객체를 반납
		sqlSession.close();
		
		// 5. 결과 반환
		return loginUser;
		
	}

 

💻 MemberDao

	public Member loginMember(SqlSession sqlSession, Member m) {
		
		/*
		 * SELECT문을 실행할 수 있는 메소드
		 * => 단일 행 조회: selectOne()
		 * => 여러 행 조회: selectList()
		 */
		
		Member loginUser = sqlSession.selectOne("memberMapper.loginMember", m);
		// 만약 조회된 게 없다면 null이 담겨 있을 것
		
		return loginUser;
		
	}

 

💻 member-mapper.xml

	 <resultMap id="memberResultSet" type="member"> <!-- 별칭 사용! -->
	 	<result column="USER_NO" property="userNo" />
	 	<result column="USER_ID" property="userId" />
	 	<result column="USER_PWD" property="userPwd" />
	 	<result column="USER_NAME" property="userName" />
	 	<result column="EMAIL" property="email" />
	 	<result column="BIRTHDAY" property="birthday" />
	 	<result column="GENDER" property="gender" />
	 	<result column="PHONE" property="phone" />
	 	<result column="ADDRESS" property="address" />
	 	<result column="ENROLL_DATE" property="enrollDate" />
	 	<result column="MODIFY_DATE" property="modifyDate" />
	 	<result column="STATUS" property="status" />
	 </resultMap>
     
     
          <select id="loginMember" parameterType="member" resultMap="memberResultSet">
                SELECT *
                FROM MEMBER
                WHERE USER_ID = #{userId}
                    AND USER_PWD = #{userPwd}
                    AND STATUS = 'Y'
    	 </select>

 

💻 숙제

	@Override
	public int updateMember(Member m) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public int deleteMember(Member m) {
		// TODO Auto-generated method stub
		return 0;
	}
저작자표시 비영리 변경금지 (새창열림)
'📗 self-study/📗 KH정보교육원 당산지원' 카테고리의 다른 글
  • [MyBatis] MyBatis CRUD - 게시판 기능 2(게시판 상세 조회 & 댓글리스트 조회, 게시글 검색 기능)
  • [MyBatis] MyBatis CRUD - 게시판 기능 1(공통 코드, 페이징 바, 게시판 전체 조회)
  • [MyBatis] MyBatis CRUD - "회원가입 기능"으로 JDBC와 차이점 비교
  • [MyBatis] Framework와 MyBatis 설치/세팅/mybatis-config.xml, Template클래스
천재강쥐
천재강쥐
  • 천재강쥐
    디버거도 버거다
    천재강쥐
  • 전체
    오늘
    어제
    • Category (467)
      • 진짜 너무 궁금한데 이걸 나만 몰라...? (0)
      • 💾 Portfolio (2)
      • 🐤 CodingTest (28)
        • Java (20)
        • ᕕ(ꐦ°᷄д°᷅)ᕗ❌ (5)
      • 🚀 from error to study (142)
        • AI (1)
        • Cloud (2)
        • DB (12)
        • Front-End (16)
        • Github (14)
        • Java (39)
        • Mac (7)
        • Normal (29)
        • Server (22)
      • 📘 certificate (44)
        • 📘 리눅스마스터1급 (1)
        • 📘⭕️ 정보처리기사 (40)
        • 📘⭕️ SQLD (3)
      • 📗 self-study (234)
        • 📗 inflearn (35)
        • 📗 생활코딩 (8)
        • 📗 KH정보교육원 당산지원 (190)
      • 🎨 Scoop the others (0)
        • 📖 Peeking into other people.. (0)
        • 🇫🇷 (0)
        • 📘⭕️ 한국사능력검정시험 심화 (11)
        • 오블완 (4)
  • 인기 글

  • hELLO· Designed By정상우.v4.10.1
천재강쥐
[MyBatis] MyBatis CRUD - 로그인/로그아웃/정보 변경/ 탈퇴 기능
상단으로

티스토리툴바