JSP session을 이용한 아주 기초적인 로그인 페이지를 만들어 보겠습니다.
먼저 로그인 form이 필요합니다.
<body>
<form action="http://localhost:8181/JSPbasic/jspobject/session/session_login_check.jsp" method="post">
아이디 : <input type="text" name="id" placeholder="아이디"><br/>
비밀번호 : <input type="password" name="pw" placeholder="패스워드"><br/>
<input type="submit" value="확인">
</form>
</body>
로컬파일의 session_login_form.jsp에 다음과 같이 생성했습니다.
이후 session_login_check.jsp 파일에
확인 버튼을 눌렀을 시 실행될 로직을 작성해보겠습니다.
이 기초적인 로그인 메서드는 DB를 통한 로그인이 아니기 때문에
abc1234 라는 ID와
1111이라는 패스워드를 대조하는 형식입니다.
<%
request.setCharacterEncoding("utf-8");
String id = request.getParameter("id");
String pw = request.getParameter("pw");
String userId = id;
if (id.equals("abc1234")) {
if(pw.equals("1111")) {
session.setAttribute("s_id", userId);
response.sendRedirect("http://localhost:8181/JSPbasic/jspobject/session/session_login_ok.jsp");
} else {
System.out.println("비밀번호가 틀렸습니다. 다시 입력해주세요.");
response.sendRedirect("http://localhost:8181/JSPbasic/jspobject/session/session_pw_fail.jsp");
}
} else {
System.out.println("아이디가 없습니다. 다시 입력해주세요.");
response.sendRedirect("http://localhost:8181/JSPbasic/jspobject/session/session_id_fail.jsp");
}
%>
if else문을 이용해 id와 pw가 일치하면
세션을 발급하고 session_login_ok.jsp로 리다이렉트 시킵니다.
<%-- session_loginok.jsp파일입니다. --%>
<%
// 세션 검사를 통해 세션값을 변수에 저장합니다.
request.setCharacterEncoding("utf-8");
String userId = (String)session.getAttribute("s_id");
System.out.println(userId);
// 비로그인 사용자가(s_id로 발급된 세션이 없는 사용자가) 해당 페이지 접근 시 userId == null 입니다.
// 로그인 안 한 사용자가 접근할 경우 강제로 로그인창으로 보내는 로직을 아래에 작성해보겠습니다.
if(userId == null) {
response.sendRedirect("session_login_form.jsp");
}
%>
<body>
<%= userId %>님 로그인을 환영합니다.
<h2>어플리케이션에 들어있던 값 : <%= sapp %></h2>
<a href="session_logout.jsp">로그아웃하기</a>
</body>
로그아웃을 눌렀을 떄는 logout.jsp로
이동시킵니다. 로그아웃은 어떻게 작동해야할까요.
세션 삭제를 이용한 로그아웃
session.invalidate() 가 실행되면
해당 서버에서 발급한 세션을 모두 파기하고
로그인 여부는 해당 서버에서 발급한 세션 유무로 판단하므로
세션을 삭제하는 행위 자체로 로그아웃이라고 볼 수 있습니다.
발급한 세션이 삭제되면 서버는 로그인으로 인식하지 않습니다.
<%
// logout.jsp 파일입니다.
// 1. 세션을 삭제해주세요.
session.invalidate();
// 2. 로그인창으로 리다이렉트 시켜주세요.
response.sendRedirect("session_login_form.jsp");
%>
이렇게 간단한 로그인 로그아웃이 정상 작동을 하게 되었습니다.
일단은 여기까지 입니다.