(14) 세션 (API 사용)
sessionform.jsp : 13번과 동일하다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>로그인 정보 입력</title> </head> <body> <% String sessionid=null; if(session.getAttribute("sessionid")!=null){ sessionid= (String)session.getAttribute("sessionid"); //항상 getAttribute는 오브젝트니까 형변환 } else{ sessionid=" "; //초기값을 null이라면 공백으로 보이도록 } %> <h1> 로그인 정보 입력</h1> <form action="sessionset.jsp" method="post"> 아이디: <input type=text name=id value="<%=sessionid%>"> <!-- 로그인한 적이없으니까 null --> <!-- getsession까지 실행하고 sessionform으로 오면 아이디가 저장되있다. --> 비번: <input type=password name=pw> <input type=submit value=로그인> </form> </body> </html> |
sessionset.jsp : html에서 값을 전달받아서, Attribute를 이용해서 서버에 저장한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" session="true"%> <!-- 페이지지시자의 session은 true가 default이기떄문에 항상 사용가능하고, 생략가능하다. --> <!DOCTYPE html> <html> <head> <meta charset=UTF-8"> <title> setsession 추가</title> </head> <body> <% //out.println(session.toString()); //를 통해 session이, null이아닌 값을 반환함으로써 만들어져있다는 것을 확인할 수 있다. String id=request.getParameter("id"); String pw=request.getParameter("pw"); // session.setAttribute("sessionid", id); session.setAttribute("sessionpw", pw); %> <!-- 아이다와 패스워드가 jsp에서 넘겨받은 파라미터이다. 이를 usbBean타입으로 객체를 만들어서 풀어보기. public class LoginVO{ private String id; private String pw; setter/getter메소드 } --> </body> </html> |
sessionget.jsp : 아이디의 받아오는 값과 pw의 받아오는 공유값이 있다면, 로그인아이디: 값을 대문자로 출력한다.
로그인암호: 값을 대문자로 출력한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset=UTF-8"> <title> getsession 조회 </title> <script src='jquery-3.2.1.min.js'></script> <script> $(document).ready(function(){ $('#logout').on("click",function(){ location.href="sessionremove.jsp"; //내장객체를 통해 이동 }); }); </script> </head> <body> <h1> <!-- 버튼이나 링크를 통해 이동하지않고 자동으로 이동하게하려면 jsp:foward 를 쓰면된다 --> <% if(session.getAttribute("sessionid")!=null && session.getAttribute("sessionpw")!=null){ %> 로그인 아이디(세션): <%=((String)session.getAttribute("sessionid")).toUpperCase() %><br> 로그인 암호(세션): <%= session.getAttribute("sessionpw") %><br> </h1> <a href="sessionremove.jsp">로그아웃하러 가기</a> <input type=button value=로그아웃 id=logout> <% } else{ %> <jsp:forward page="sessionform.html"/> <% } %> </body> </html> |
로그아웃 링크를 통해 세션을 제거하고 로그인창으로 a태그이동한다.
로그아웃버튼을 따로 또 만들어서 removesession.jsp로 이동하도록한다. (jquery)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset=UTF-8"> <title>Insert title here</title> </head> <body> <% session.removeAttribute("sessionid"); session.removeAttribute("sessionpw"); //session.invalidate(); 전체삭제 %> <jsp:forward page="/sessionform.html" /> <!-- request.setAttribute("",)와 같이 공유 --> </body> </html> |
추가적으로 sessionform.jsp를 통해 한 번 로그인한 값을 다시 로그인창으로 되돌아갔을때,
접속했던 아이디가 입력창에 저장되도록 만듭시다. (조건문을 통해 초기값을 null이라면 공백으로 보이도록)
==> html실행 => set에서 get을 수기로 실행 => 로그아웃실행시 => 수기로 get실행하면 로그아웃되는걸 확인할 수 있다.
'WEB 기초 > Jsp' 카테고리의 다른 글
[JSP] 18. 로그인화면 만들기 (Session 이용) (0) | 2018.04.23 |
---|---|
[JSP] 17. 방문자 문제 (Cookie 이용) (0) | 2018.04.23 |
[JSP] 15. 쿠키(cookie) 총정리 (0) | 2018.04.23 |
[JSP] 14. 도서구매 정보입력창 문제 (0) | 2018.04.23 |
[JSP] 13. 표준 액션 태그 (java Bean & java Property) (0) | 2018.04.23 |