[Java] 세션(Session) 의 정의와 활용 예

2019. 7. 17. 16:42
반응형



[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



반응형

BELATED ARTICLES

more