본문으로 바로가기

14.세션

category 프로그래밍/jsp 2017. 10. 19. 20:47

세션이란?  쿠키는 로컬로 데이터가 저장, 서버에 객체로  저장됨


앞에서 웹브라우저와의 관계를 유지하는 수단으로 쿠키를 살펴봤습니다.

세션도 쿠키와 마찬가지로 서버와의 관계를 유지하기 위한 수단 입니다.

, 쿠키와 달리 클라이언트의 특정 위치에 저장되는 것이 아니라, 서버상에 객체로 존재 합니다.

따라서 세션은 서버에서만 접근이 가능하여 보안이 좋고, 저장할 수 있는 데이터에 한계가 없습니다.

쿠기는 4kbyte씩 300개정도 1.2MB 저장가능, 세션은 (용량에 제한이 없다)

단 jsp파일을통해 서버로 접근할수 있다.


브라우저 하니당 세션이 생성되고 고유한 id값이 있다. jsp 서버 컨테이너에의해 자동으로 생성됨

세션 문법


세션은 클라이언트의 요청이 발생하면 컨테이너가(서버) 자동생성 됩니다. 그리고 session이라는 내부 객체를 지원하여 세션의 속성을 설정 할 수 있습니다.


클라이언트 요청 -------> session 자동 생성------ session 설정 변경

session 내부 객체의 메소드 이용



세션 메소드


setAttribute() : 세션에 데이터를 저장 합니다.

getAttribute() : 세션에서 데이터를 얻습니다.

getAttributeNames() : 세션에 저장되어 있는 모든 데이터의 이름(유니크한 키값)을 얻습니다.

getId() : 자동 생성된 세션의 유니크한 아이디를 얻습니다.  클라이언트가 요청할때마다 세션이 만들어지는데 각각의 고유한 id를 얻고자 할때

isNew() : 세션이 최초 생성되었는지, 이전에 생성된 세션인지를 구분 합니다.

getMaxInactiveInterval() : 세션의 유효시간을 얻습니다. 가장 최근 요청시점을 기준으로 카운트 됩니다.

(C:\javalec\apache-tomcat-7.0.57\apache-tomcat-7.0.57\conf\web.xml 참조)

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);  속성을 지정(int값)

%>

<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"); //getAttribute값은 object로 반환되며 그것을 obj1로 바꾸었음

String mySessionName = (String)obj1; // 오브젝트를 String으로 캐스팅하여 mySessionName에 저장

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()){

sName = enumeration.nextElement().toString(); 데이터를 하나씩 대입한다.

sValue = session.getAttribute(sName).toString(); // 속성(name)의 값 출력

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

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

}

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

String sessionID = session.getId();  //한페이지당 컨테이너(서버) 자동 id생성 반환형 String

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

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

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

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

session.removeAttribute("mySessionName"); //해당 네임에 헤당하는 value값을 삭제

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>

'프로그래밍 > jsp' 카테고리의 다른 글

16.자바 빈  (1200) 2017.10.24
15.예외처리  (1186) 2017.10.24
13.쿠키  (2622) 2017.10.18
12.액션태그(forward, include, param 태그 살펴보기)  (1209) 2017.10.03
11.JSP 본격적으로 살펴보기-III(request객체, response객체이해)  (1189) 2017.10.02