세션(Session)이란 클라이언트와 웹 서버 간에 네트워크 연결이 지속적으로 유지되고 있는 상태를 말한다. Session을 사용하는 이유는 HTTP 프로토콜의 성질 때문이다.
HTTP 프로토콜은 비연결형 (stateless) 프로토콜이기 때문에 한 페이지가 출력된 다음에 바로 클라이언트와 서버의 연결이 끊어진다. 즉, 클라이언트와 서버는 요청처리가 완료되기 전 까지만 연결되어 있고 그 이후에는 연결이 되어있지 않다.
이런 문제점은 클라이언트와 서버간의 지속적인 소통에 문제를 준다. 이러한 HTTP 프로토콜의 문제점을 해결하기 위해 나온 것이 Session이다. Session은 사용자와 관련된 정보를 서버에 보관하는 방식이다. ( 이와 유사하게 클라이언트 컴퓨터에서 보관하는 방식인 cookie도 있다.)
세션 값 설정
session.setAttrivute(name, value);
name은 String형의 키이고, value는 name 키에 저장하기 위한 object형의 값이다.
예)
String id = request.getParameter("id");
session.setAttribute("id", id);
메 서 드 |
반 환 값 |
설 명 |
getAttribute(name) |
object |
세션에서 name에 해당되는 값을 반환 |
getAttrivuteName() |
String배열 |
세션에서 속성 이름 모두를 배열로 반환 |
getCreationTime() |
long |
세션 생성시 70년 1월 1일 자정기준으로 1/1000초 단위 값으로 반환 |
getID() |
String |
클라이언트에 할당된 세션 ID 값을 반환 |
getLastAccessedTime() |
long |
클라이언트가 마지막으로 서버에 보낸 요청시간을 반환 |
getMaxInactiveInterval() |
int |
현재 실행중인 세션을 종료 |
invalidate() |
void |
현재 실행중인 세션을 종료 |
isNew() |
boolean |
현재 실행중인 세션이 새로운 것인지 여부를 논리 값으로 반환 |
setAttribute() |
void |
현재 세션이 새로운 이름의 속성을 만들고 그 속성값을 설정 |
removeAttrivute() |
void |
저장된 세션에서 지정한 속성값을 삭제 |
setMaxInactiveInterval() |
void |
세션을 할당받고 아무런 요청이 없을때부터 세션을 유지하는 기간을 설정 |
세션 값 얻어내기
Object 변수명 = session.getAttribute(name);
예)
Object id_getdata = session.getAttribute("id");
String session_id = (String)id_getdata;
세션 종료와 제거
- 종료
session.invalidate(); //session 개체를 제거 session.setMaxInactiveInterval(0)과 같음
- 제거
session.removeAttribute(name); //session의 저장된 name객체를 제거
세션에 설정된 모든 값 얻어오기
Enumeration names = session.getAttributeNames();
while(names.hasMoreElements()) {
String name = names.nextElement().toString();
String value = session.getAttribute(name).toString();
out.println(name + " - " + value + "<br>");
}
'Web > JSP' 카테고리의 다른 글
JSP #8 서블릿(Servlet)-2 RequestDispatcher & sendRedirect (0) | 2014.12.29 |
---|---|
JSP #7 서블릿(Servlet)-1 (0) | 2014.12.23 |
JSP #5 쿠키 (0) | 2014.12.22 |
JSP #4 자바빈의 표준 액션 태그 (0) | 2014.12.22 |
JSP #3 주석 (0) | 2014.12.22 |