[Java] 세션(Session) 의 정의와 활용 예
[Java] 세션(Session) 의 정의와 활용 예
1. 세션(session) 이란? + 쿠키 (Cookie)
세션 - 웹 서버 쪽의 웹 컨테이너에 상태를 유지하기 위한 정보를 저장한다.
쿠키 - 웹 브라우저에 사용자의 상태를 유지하기 위한 정보를 저장
세션은 정보를 유지를 위해 javax.servlet.http의 HttpSession 인터페이스를 구현해서 사용
쿠키는 정보를 웹 브라우저에 저장해서 웹 서버가 쿠키 정보를 읽어서 사용한다.
이것은 웹 브라우저에 저장된 쿠키는 웹 서버에서 열어볼 수 있다는 점에서 보안상 문제가 발생할 수 있다.
고로 세션을 사용 하는 방법이 보안에는 안정적이다.
2. 세션(Session) 메소드 들
메소드 이름 | 리턴 타입 | 설명 |
getAttribute(String name) | java.lang.Object | 세션 속성명이 name인 속성의 값을 Object 타입으로 리턴한다. 해당 되는 속성명이 없을 경우에는 null 값을 리턴한다. |
getAttributeNames() | java.util.Enumeration | 세션 속성의 이름들을 Enumeration 객체 타입으로 리턴한다. |
getCreationTime() | long | 1970년 1월 1일 0시 0초를 기준으로 하여 현재 세션이 생성된 시간까지 경과한 시간을 계산하여 1/1000초 값으로 리턴한다. |
getId() | java.lang.String | 세션에 할당된 고유 식별자를 String 타입으로 리턴한다. |
getMaxInactiveInterval() | int | 현재 생성된 세션을 유지하기 위해 설정된 세션 유지시간을 int형으로 리턴한다. |
invalidate() | void | 현재 생성된 세션을 무효화 시킨다. |
removeAttribute(String.name) | void | 세션 속성명이 name인 속성을 제거한다. |
setAttribute(String name, Object value) | void | 세션 속성명이 name인 속성에 속성값으로 value를 할당한다. |
setMaxInactiveInterval(int interval) | void | 세션을 유지하기 위한 세션 유지시간을 초 단위로 설정한다. |
3. 세션(Session) 속성
- 세션 설정은 세션 객체의 setAttribute() 메소드 사용
- 세션 저장 하여 유지 할수있도록함
1 | HttpSession session; session.setAttribute("id", "value"); | cs |
- 세션의 속성을 사용하려면 getAttribute() 메소드를 사용
- getAttribute() 을 사용시 형변환을 해야함 - 기본 Object 타입임
1 | String id = (String)session.getAttribute("id"); | cs |
- 세션의 속성을 삭제하려면 removeAttribute() 메소드를 사용
1 | session.removeAttribute("id"); | cs |
- 세션을 끊을때는 invalidate() 메소드를 사용
1 | session.invalidate(); | cs |
4. 세션(Session) 사용 예제
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 | <%@ page language ="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <% request.setCharacterEncoding("euc-kr");%> <% String id = request.getParameter("id"); // request에서 id 파라미터를 가져온다 String pw = request.getparameter("pw"); // request에서 passwd 파라미터를 가져온다. if(check){ // 로그인 체크 session.setAttribute("id", id); // 세션에 "id" 이름으로 id 등록 response.sendRedirect("main"); // 성공시 해당 url로 리다이렉트 }else{ %> <script> alert("로그인 실패"); history.go(-1); // 이전 페이지로 이동 </script> <% } %> //세션(Session) 가져오기 (세션에서 아이디를 가져와 로그인 상태를 인증하고, 값이 없을 경우 로그인 페이지로 넘긴다.) <%@ page language ="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <% request.setCharacterEncoding("euc-kr");%> <% String id = ""; try{ id = (String)session.getAttribute("id"); // request에서 id 파라미터를 가져온다 if(id==null || id.equals(""){ // id가 Null 이거나 없을 경우 response.sendRedirect("login"); // 로그인 페이지로 리다이렉트 한다. } <% } %> // 세션(Session) 끊기 = 로그아웃 <%@ page language ="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <% session.invalidate(); %> // 세션 정보 제거 <script> alert("로그아웃 되었습니다."); location.href="logout.jsp"; // 로그아웃 페이지로 이동 </script> | cs |
'Program > Java' 카테고리의 다른 글
[Java] Class version 확인_컴파일 버전오류_verbose (0) | 2019.11.15 |
---|---|
[Java] JSTL_if문 else(choose)문 사용하는 방법 (1) | 2019.07.24 |
[Java] SSO & Crowd 설정 시 httpclient 관련 에러 해결 (0) | 2019.07.16 |
[Spring] Spring/MyBatis/Oracle 연동&설정 (0) | 2019.04.05 |
[Spring] Spring/MyBatis/MySQL 연동&설정 (0) | 2019.04.04 |