기능소개(로그인) - 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>