<세션>
웹 브라우저와의 관계를 유지하는 수단, '쿠키' 와 마찬가지로 서버와의 관계를 유지하기 위한 수단.
쿠키는 서버에서 생성되어 클라이언트에 저장이 되는 만큼, 용량이 적고 보안의 문제가 있다.
하지만 세션은 서버 상에 객체로 존재하며 서버에서만 접근이 가능하다. 또한 용량 한계가 없다.
많은 클라이언트들이 요청하면 각 브라우저 별로 세션이 만들어진다.
1. 클라이언트(웹 브라우저) 에서 요청을 하면, jsp컨테이너에서 자동으로 세션이 생성된다.
2. session 이라는 내부 객체로 세션의 속성을 설정하게 된다.
세션과 관련한 메소드
setAttribute(), getAttribute() - 반환값은 오브젝트 , getAttributeNames() : 세션에 데이터 저장, 얻기
getId() : 각 브라우저의 세션의 유니크한 아이디 얻기
isNew() : 최초 생성된 세션인지, 이전에 생성된 것인지
getMaxInactiveInterval() : 세션 유효시간 얻기.
아파치 경로\conf\web.xml 에서 세션 유효시간을 조정할 수도 있다.
removeAttribute(), Invalidate() : 세션 데이터를 제거하는 작업
1. 설정하기
sessionset.jsp
1 2 3 4 5 6 | <% session.setAttribute("mSessionName", "minhye"); session.setAttribute("myNum", 123); %> <a href="sessionget.jsp">get 페이지로 넘어가기 </a> | cs |
2. 가져오기
가져오는 방식은 많다.
sessionget.jsp
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 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | <%@ page import="java.util.Enumeration" %> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <% /* getAttribute 로 가져와서 그냥 출력하기 */ Object obj = session.getAttribute("mySessionName"); out.println("mySessionName : " + obj.toString() + "<br/>"); Object obj2 = session.getAttribute("myNumber"); Integer mNum = (Integer)obj2; out.println("myNum : " + mNum + "<br/>"); /* Enumeration 을 이용하는 방법 */ String Name, Value; Enumeration enumer = session.getAttributeNames(); // 이름 값들을 다 얻음. 직렬화된 객체! while(enumer.hasMoreElements()){ Name = enumer.nextElement().toString(); // 이름을 하나씩 추출해서 Value = session.getAttribute(Name).toString(); // 그 이름을 이용하여 세션에서 값을 얻는다. out.println("Name : " + Name + " , Value : " + Value + "<br/>"); } out.println("-----------------------------<br/>"); /* 아이디와 유효시간 */ String sessionId = session.getId(); //세션아이디 out.println("sessionId : " + sessionId + "<br/>"); int time = session.getMaxInactiveInterval(); //유효시간 out.println("sessionInter : " + time + "<br/>"); /* 세션 삭제 후 실험 */ out.println("-----------------------------<br/>"); session.removeAttribute("mySessionName"); // mySessionName 이라는 이름을 가진 세션을 삭제한다. String cName, cValue; Enumeration cenumer = session.getAttributeNames(); // 이름 값들을 다 얻음. 직렬화된 객체! while(cenumer.hasMoreElements()){ Name = cenumer.nextElement().toString(); // 이름을 하나씩 추출해서 Value = session.getAttribute(Name).toString(); // 그 이름을 이용하여 세션에서 값을 얻는다. out.println("cName : " + Name + " , cValue : " + Value + "<br/>"); } out.println("-----------------------------<br/>"); session.invalidate(); // 세션 전체 삭제 if(request.isRequestedSessionIdValid()){ out.println("세션이 유효합니다." + "<br/>"); }else{ out.println("세션이 유효하지 않습니다." + "<br/>"); } %> </body> </html> | cs |
로그인/ 로그아웃 기능을 구현할 때에도 유용하게 쓸 수 있다.
물론 미리 회원정보가 입력이 되어있어야 하지만, 어쨌든 사용자가 아이디와 비밀번호를 입력했을 때, 세션에 그에 해당하는 값이 있다면 로그인이 되도록 한다.
로그아웃 시 세션을 없애면 로그인 로그아웃 기능이 완성된다.
영상 출처 - https://youtu.be/zu4nmI1tPU4?list=PLYBmkgNU_x7Zj0nCzt5D0qV33C_rU1NK2
'JSP > 정리' 카테고리의 다른 글
[jsp/DB] mysql 과 jsp 연동하기 (0) | 2017.01.17 |
---|---|
[jsp] 자바 빈 (0) | 2017.01.10 |
[jsp] 예외 페이지 (0) | 2017.01.10 |
[jsp] 쿠키 (0) | 2017.01.10 |
[jsp] 액션 태그 (0) | 2017.01.03 |
댓글