본문 바로가기

JSP/세션,Session

세션 사용하기

서버 세션을 사용하면 클라이언트의 상태를 저장할 수 있다. 쿠키와의 차이점은 세션은 서버에 값을 저장한다는 점이다.


세션은 웹 컨테이너에 정보를 보관할 때 사용한다. 세션은 오직 서버에만 생성된다.


웹 컨테이너는 기본적으로 한 웹 브라우저마다 한 세션을 생성한다. 같은 JSP 페이지라도 웹 브라우저에 따라 서로 다른 세션을 사용한다. 웹 브라우저마다 세션이 따로 존재하기 때문에 세션은 웹 브라우저와 관련된 정보를 저장하기에 알맞은 장소이다. 세션을 생성해야 정보를 저장할 수 있다. session 기본 객체를 통해 세션을 사용할 수 있다.


세션 관련 메소드

 setAttribute()

세션에 데이터를 저장 

 getAttribute()

세션에서 데이터 얻음 

 getAttributeNames()

세션에 저장되어 있는 모든 데이터의 이름(유니크한 키값) 얻음 

 getId()

자동 생성된 세션이 유니크한 아이디를 얻음 

 isNew()

세션이 최초 생성되었는지, 이전에 생성된 세션인지 구분 

 getMaxInactiveInterval()

세션의 유효시간을 얻음. 최근 요청시점을 기준으로 카운트 

removeAttribute()

세션에서 특정 데이터 제거 

 invalidate()

세션의 모든 데이터 삭제 


sessioninit.jsp 파일


<%@ page language="java" contentType="text/html; charset=EUC-KR"

    pageEncoding="EUC-KR"%>

<!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=EUC-KR">

<title>Insert title here</title>

</head>

<body>

<%

session.setAttribute("mySessionName","mySessionData"); //속성 지정, (이름, 값)

session.setAttribute("myNum",12345);

%>

<a href="sessionget.jsp">session get</a>

</body>

</html>


sessionget.jsp 파일


<%@page import="java.util.Enumeration" %>

<%@ page language="java" contentType="text/html; charset=EUC-KR"

    pageEncoding="EUC-KR"%>

<!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=EUC-KR">

<title>Insert title here</title>

</head>

<body>

<%

Object obj1 = session.getAttribute("mySessionName"); //특정 객체를 얻어옴, 반환형이 Object임

String mySessionName = (String)obj1;//Object 타입을 String 형변환

out.println(mySessionName+"<br/>");

Object obj2 = session.getAttribute("myNum");

Integer myNum = (Integer)obj2;

out.println(myNum+"<br/>");

out.println("******************</br>");

String sName;

String sValue;

Enumeration enumeration = session.getAttributeNames();//모든 객체 이름 얻어옴

while(enumeration.hasMoreElements()){ //enumeration에 객체가 있으면 

sName = enumeration.nextElement().toString(); //이름을 넣음

sValue = session.getAttribute(sName).toString();//이름으로 값을 받아옴

out.println("sName:"+sName+"<br/>");

out.println("sValue:"+sValue+"<br/>");

}

out.println("****************</br>");

String sessionID = session.getId(); //브라우저에 맞는 ID 가져옴

out.println("sessionID:"+ sessionID +"<br/>");

int sessionInter = session.getMaxInactiveInterval();//유효시간

out.println("sessionInter:"+sessionInter+"<br/>");

out.println("*****************<br/>");

session.removeAttribute("mySessionName"); //세션 삭제, myNum만 남음

Enumeration enumeration1 = session.getAttributeNames();

while(enumeration1.hasMoreElements()){

sName = enumeration1.nextElement().toString();

sValue = session.getAttribute(sName).toString();

out.println("sName:"+sName+"<br/");

out.println("sValue:"+sValue+"<br/>");

}

out.println("***********************<br/>");

session.invalidate(); //세션의 모든 데이터 삭제

if(request.isRequestedSessionIdValid()){ //유효 세션이 있는지

out.println("session valid");

}else{

out.println("session invalid");

}

%>

</body>

</html>