📢 비로그인 사용자: 사용자로부터 로그인정보(아이디와 비밀번호)를 입력받기 위한 JSP 문서
→ [로그인]을 클릭한 경우 form 태그를 실행하여 처리페이지(login_action.jsp)를 [post]방식으로 요청하여 이동 - 인증정보 전달
📢 로그인 사용자 : 클라이언트에게 환영 메세지를 전달하는 JSP 문서
→ [로그아웃]을 클릭한 경우 로그아웃 처리페이지(logout_action.jsp)로 이동
→ [마이페이지]을 클릭한 경우 사용자 출력페이지(login_user.jsp)로 이동
📃login_form.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%-- 비로그인 사용자: 사용자로부터 로그인정보(아이디와 비밀번호)를 입력받기 위한 JSP 문서 --%> <%-- → [로그인]을 클릭한 경우 form 태그를 실행하여 처리페이지(login_action.jsp)를 [post]방식으로 요청하여 이동 - 인증정보 전달 --%> <%-- 로그인 사용자 : 클라이언트에게 환영메세지를 전달하는 JSP 문서 --%> <%-- => [로그아웃]을 클릭한 경우 로그아웃 처리페이지(logout_action.jsp)로 이동 --%> <%-- => [마이페이지]을 클릭한 경우 사용자 출력페이지(login_user.jsp)로 이동 --%> <% //비로그인,로그인 사용자 구분하는 코드 String loginId=(String)session.getAttribute("loginId"); %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>JSP</title> </head> <body> <% if(loginId==null) {//비로그인 사용자가 JSP 문서를 요청한 경우 %> <% //session 내장객체에 저장된 속성값(에러메세지)을 반환받아 저장 String message=(String)session.getAttribute("message"); if(message==null) { message=""; } else { //다른 JSP 문서에서 session 내장객체에 저장된 속성값(에러메세지)을 사용하지 못하도록 속성값 삭제 session.removeAttribute("message"); } //session 내장객체에 저장된 속성값(아이디)을 반환받아 저장 String id=(String)session.getAttribute("id"); if(id==null) { id=""; } else { session.removeAttribute("id"); } %> <h1>로그인</h1> <hr> <form action="login_action.jsp" method="post" name="loginForm"> <table> <tr> <td>아이디</td> <td><input type="text" name="id" value="<%=id%>"></td> </tr> <tr> <td>비밀번호</td> <td><input type="password" name="passwd"></td> </tr> <tr> <td colspan="2"><button type="button" id="loginBtn">로그인</button></td> </tr> </table> </form> <p id="message" style="color: red;"><%=message %></p> <%-- --%> <script type="text/javascript"> loginForm.id.focus(); document.getElementById("loginBtn").onclick=function() { if(loginForm.id.value=="") { document.getElementById("message").innerHTML="아이디를 입력해 주세요."; loginForm.id.focus(); return; } if(loginForm.passwd.value=="") { document.getElementById("message").innerHTML="비밀번호를 입력해 주세요."; loginForm.passwd.focus(); return; } loginForm.submit(); } </script> <% } else {//로그인 사용자가 JSP 문서를 요청한 경우 %> <h1>메인페이지</h1> <hr> <p><%=loginId %>님, 환영합니다. <a href="logout_action.jsp">[로그아웃]</a> <a href="login_user.jsp">[마이페이지]</a> <% } %> </body> </html>
📢 로그인정보 입력페이지(login_form.jsp)에서 전달된 로그인 정보를 반환받아 인증 처리하고 처리결과에 따라 다른 요청 URL 주소를 클라이언트에게 전달하는 JSP 문서
→ 로그인(Login) : 인증을 통한 권한 획득 과정
📍 인증 실패 : 클라이언트가 입력페이지(login_form.jsp)로 이동되도록 URL 주소 전달
📍 인증 성공 : 클라이언트가 출력페이지(login_user.jsp)로 이동되도록 URL 주소 전달
→ 로그인처리를 위해 session 내장객체에 권한 관련 정보를 속성값으로 저장
📃login_action.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%-- 로그인정보 입력페이지(login_form.jsp)에서 전달된 로그인정보를 반환받아 인증 처리하고 처리결과에 따라 다른 요청 URL 주소를 클라이언트에게 전달하는 JSP 문서 --%> <%-- → 로그인(Login) : 인증을 통한 권한 획득 과정 --%> <%-- 인증 실패 : 클라이언트가 입력페이지(login_form.jsp)로 이동되도록 URL 주소 전달 --%> <%-- 인증 성공 : 클라이언트가 출력페이지(login_user.jsp)로 이동되도록 URL 주소 전달 --%> <%-- → 로그인처리를 위해 session 내장객체에 권한 관련 정보를 속성값으로 저장 --%> <% //비정상적인 요청에 대한 처리 if(request.getMethod().equals("GET")) {//JSP 문서를 [GET] 방식으로 요청한 경우 //session 내장객체에 에러메세지를 속성값으로 저장하고 클라이언트에게 입력페이지의 URL 주소 전달 session.setAttribute("message", "비정상적인 방법으로 페이지를 요청 하였습니다."); response.sendRedirect("login_form.jsp");//입력페이지 이동 return; } //전달값을 반환받아 저장 String id=request.getParameter("id"); String passwd=request.getParameter("passwd"); // //아이디와 비밀번호를 비교 - 인증 처리 if(!id.equals("abc123") || !passwd.equals("123456")) {//인증 실패 session.setAttribute("message", "아이디 또는 비밀번호를 잘못 입력 하였습니다."); session.setAttribute("id", id); response.sendRedirect("login_form.jsp");//입력페이지 이동 return; } //인증 성공 //session 내장객체에 권한 관련 정보(아이디)를 속성값으로 저장 session.setAttribute("loginId", id); response.sendRedirect("login_user.jsp");//출력페이지 이동 %>
📢 로그인 사용자에게 환영메세지를 전달하는 JSP 문서
→ 비로그인 사용자가 JSP 문서를 요청한 경우 로그인 입력페이지(login_form.jsp)로 이동하기 위한 URL 주소 전달 - 비정상적인 요청에 대한 처리
→ [로그아웃]을 클릭한 경우 로그아웃 처리페이지(logout_action.jsp)로 이동
→ [메인으로]을 클릭한 경우 메인페이지(login_form.jsp)로 이동
📃login_user.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%-- 로그인 사용자에게 환영메세지를 전달하는 JSP 문서 --%> <%-- → 비로그인 사용자가 JSP 문서를 요청한 경우 로그인 입력페이지(login_form.jsp)로 이동하기 위한 URL 주소 전달 - 비정상적인 요청에 대한 처리 --%> <%-- → [로그아웃]을 클릭한 경우 로그아웃 처리페이지(logout_action.jsp)로 이동 --%> <%-- → [메인으로]을 클릭한 경우 메인페이지(login_form.jsp)로 이동 --%> <% //session 내장객체에 저장된 권한 관련 속성값(아이디)를 반환받아 저장 String loginId=(String)session.getAttribute("loginId"); // //session 내장객체에 저장된 권한 관련 속성값이 없는 경우 - 비로그인 사용자인 경우 if(loginId==null) {//비정상적인 방법으로 JSP 문서를 요청한 경우 session.setAttribute("message", "로그인 사용자만 접근 가능한 페이지입니다."); response.sendRedirect("login_form.jsp"); return; } %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>JSP</title> </head> <body> <h1>로그인 사용자 전용 페이지</h1> <hr> <p><%=loginId %>님, 환영합니다. <a href="logout_action.jsp">로그아웃</a> <a href="login_form.jsp">메인으로</a> </p> <hr> <p>로그인 사용자만 확인 가능한 중요한 내용입니다.</p> <p>로그인 사용자만 확인 가능한 중요한 내용입니다.</p> <p>로그인 사용자만 확인 가능한 중요한 내용입니다.</p> <p>로그인 사용자만 확인 가능한 중요한 내용입니다.</p> <p>로그인 사용자만 확인 가능한 중요한 내용입니다.</p> <p>로그인 사용자만 확인 가능한 중요한 내용입니다.</p> <p>로그인 사용자만 확인 가능한 중요한 내용입니다.</p> <p>로그인 사용자만 확인 가능한 중요한 내용입니다.</p> <p>로그인 사용자만 확인 가능한 중요한 내용입니다.</p> <p>로그인 사용자만 확인 가능한 중요한 내용입니다.</p> </body> </html>
📢 로그아웃 처리 후 클라이언트에게 로그인 정보 입력페이지(login_form.jsp)로 이동하기 위한 URL 주소를 전달하는 JSP 문서
→ 로그아웃 : 권한 관련 정보를 제거하는 작업
📃logout_action.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%-- 로그아웃 처리 후 클라이언트에게 로그인 정보 입력페이지(login_form.jsp)로 이동하기 위한 URL 주소를 전달하는 JSP 문서 --%> <%-- → 로그아웃 : 권한 관련 정보를 제거하는 작업 --%> <% //방법1) //session 내장객체에 저장된 권한 관련 정보(아이디)의 속성값을 삭제 //session.removeAttribute("loginId"); //방법2) //↑보다 확실한 방법 //session.invalidate() : 바인딩 세션을 언바인딩 처리하는 메소드 - session 내장객체 제거 session.invalidate(); // //클라이언트에게 URL 주소 전달 response.sendRedirect("login_form.jsp"); //※보통은 메인페이지로 가지만 메인페이지가 없어서 form으로 이동 %>