-
Servlet-JSP MVC06 (1) - Session을 이용한 로그인 처리Web/Servlet-JSP 2023. 6. 24. 09:05
- Sesstion을 이용하여 로그인 처리를 구현해보자.
- 먼저 로그인을 위한 화면을 간단하게 만들어보자
<div class="container"> <h2>회원관리 시스템</h2> <div class="panel panel-default"> <div class="panel-heading"> <c:if test="${sessionScope.userId==null || sessionScope.userId==''}"> <form class="form-inline" action="${ctx}/memberLogin.do" method="post"> <div class="form-group"> <label for="user_id">ID:</label> <input type="text" class="form-control" id="user_id" name="user_id"> </div> <div class="form-group"> <label for="pwd">Password:</label> <input type="password" class="form-control" id="password" name="password"> </div> <button type="submit" class="btn btn-default" onclick="return check()">로그인</button> </form> </c:if> <c:if test="${sessionScope.userId!=null && sessionScope.userId!=''}"> ${sessionScope.userName}님 환영합니다. <button type="button" class="btn btn-warning" onclick="logout()">로그아웃</button> </c:if> </div>
-로그인 구현
1 유효성 check
<button type="submit" class="btn btn-default" onclick="return check()">로그인</button>
로그인 버튼을 누르면, 먼저 유효성을 검사하도록 check()함수를 넣었다.
return값이 true일때만 submit이 정상 작동할 것이다.
function check(){ if($("#user_id").val() ==''){ alert("아이디를 입력하세요"); return false; } if($("#passward").val()==''){ alert("비밀번호를 입력하세요"); return false; } return true; }
check()함수는 위와 같이 간단하게 아이디와 비밀번호를 검사하도록 구현했다.
*#은 html에 태그 속성 중 id값을 가져올 때 사용한다.
2 로그인 처리 controller 만들기
public String requestHandler(//...) throws //...{ String ctx = request.getContextPath(); //요청받기 String user_id = request.getParameter("user_id"); String pass = request.getParameter("password"); //요청 담기 MemberVO vo = new MemberVO(); vo.setID(user_id); vo.setPass(pass); //DB에 등록된 id,pass와 일치하는지 검사 DB에 정보와 일치하면 회원명 return MemberDAO dao = new MemberDAO(); String user_name = dao.memberLogin(vo); if(user_name !=null && !"".equals(user_name)){ //로그인 성공 request.getSession().setAttribute("user_id",user_id); request.getSession().setAttribute("userName",user_name); }else{ request.getSession().setAttribute("user_id",""); request.getSession().setAttribute("userName",""); request.getSession().setAttribute("msg","사용자 정보가 올바르지 않습니다."); } return "redirect:"+ctx+"/memberList.do"; }
memberList.jsp에서 넘어온 아이디와 비밀번호를 DB에 저장된 아이디 및 비밀번호와 비교하여
일치하면, 사용자 이름을 return 하도록 하였다.
- 로그인에 성공하면 session에 id 및 user이름을 저장하고
- 실패시에 빈문자열과 msg를 저장해두었다.
3 로그인 처리 DB메소드 만들기
public String memberLogin(MemberVO vo) { SqlSession session = sqlSessionFactory.openSession(); String user_name = session.selectOne("memberLogin", vo); session.close(); return user_name; }
mybatis를 이용해 간단하게 만들 수 있다. select name from member where (id,pass) in ((#{id},#{pass})); 로 검사했다.
4 로그인 실패시 실패 메시지를 띄우기
$(document).ready(function(){ <c:if test="${!empty msg}"> alert("${msg}"); <c:remove var="msg" scope="session"/> </c:if> })
제이쿼리 문법을 사용하여 문서가 준비될 때(memberList.jsp가 호출될 때) session에 msg를 검사하여
- msg가 빈 msg가 아니라면, 경고문을 띄우고, session에서 msg를 지우도록 하였다.
*1회 인증처리 후에 msg를 지워주지 않으면, msg가 계속 session에 남아서 페이지 호출 시마다 경고문이 나온다.
참고자료:
나프2탄 (인프런) 박매일:
https://www.inflearn.com/course/%EB%82%98%ED%94%84-mvc-2
'Web > Servlet-JSP' 카테고리의 다른 글
Servlet-JSP MVC06 (3) - 기타 설정 (0) 2023.06.24 Servlet-JSP MVC06 (2) - 로그아웃 처리와 여러설정 (0) 2023.06.24 Servlet-JSP MVC04 (2) - handlerMapping and viewResolver (0) 2023.06.16 Servlet-JSP MVC04(1) - FrontController and POJO (0) 2023.06.16 Servlet-JSP MVC05 - JDBC to Mybatis (0) 2023.06.14