기능소개(로그인) - lee-geon-hee/pandang GitHub Wiki

📃 로그인 페이지

📌 로그인, 아이디 기억하기

  • 로그인 정보와 DB 회원정보 일치하는지 확인
  • 로그인 성공 시 회원 번호 세션에 저장
  • 아이디 기억하기 체크 후 로그인 시 쿠키에 저장 후 다음 로그인 시 아이디 자동 입력

💻 코드

MemberFrontController.java
public class MemberFrontController extends HttpServlet{
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doProcess(req, resp);
	}
	
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doProcess(req, resp);
	}
	
	protected void doProcess(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		String target = req.getRequestURI().substring(req.getContextPath().length());
//		System.out.println(target);
		switch(target) {
		// 해당 케이스의 url로 요청이 들어오면 기능별 Controller를 실행시킨다.
		case "/member/login.me":
			new LoginController().execute(req, resp);
			break;
		case "/member/loginOk.me":
			new LoginOkController().execute(req, resp);
			break;
		}
	}
}
LoginController.java
public class LoginController implements Execute {

	@Override
	public void execute(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		Cookie[] cookies = req.getCookies();
		
		if(cookies != null) {
			for(Cookie cookie : cookies) {
				if(cookie.getName().equals("memberId")) {
					req.setAttribute("memberId", cookie.getValue());
				}
			}
		}
		
		req.setAttribute("memberId", req.getParameter("memberId"));
		req.getRequestDispatcher("/app/member/login.jsp").forward(req, resp);
		
	}

}
LoginOkController.java
public class LoginOkController implements Execute {
	@Override
	public void execute(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		MemberDAO memberDAO = new MemberDAO();
		MemberDTO memberDTO = new MemberDTO();
		int memberNumber = 0;
		String remember = req.getParameter("loginKeep");
		
		String memberId = req.getParameter("memberId");
		String memberPassword = req.getParameter("memberPassword");
		String path = null;
		HttpSession session = req.getSession();
		
		memberDTO.setMemberId(memberId);
		memberDTO.setMemberPassword(memberPassword);
		
		memberNumber = memberDAO.login(memberDTO);
	      
		
		if(memberNumber == -1) {
			path = "/member/login.me";
		} else {
//			로그인하면 어떤 경로로 갈건지 적어주세요.
			path = "/main.main";
			session.setAttribute("memberNumber", memberNumber);
		}
		
		
		if(remember != null) {
			Cookie cookie = new Cookie("memberId", memberId);
			cookie.setMaxAge(60 * 60 * 24);
			resp.addCookie(cookie);
		}
		
		resp.sendRedirect(path);
	}
}
MemberDAO.java
public int login(MemberDTO memberDTO) {
		Integer memberNumber = sqlSession.selectOne("member.login", memberDTO);
		return memberNumber == null ? -1 : memberNumber;
	}
MemberMapper.xml
        <select id="login" parameterType="MemberDTO" resultType="_int">
		select member_number from tbl_member
		where member_id = #{memberId} and member_password = #{memberPassword}
	</select>
⚠️ **GitHub.com Fallback** ⚠️