AR삽질러

Session 본문

JAVA/JSP

Session

아랑팡팡 2023. 3. 10. 13:43
728x90

https://arang95.tistory.com/65

 

Cookie

1. Cookie - JSP에서 쿠키(Cookie)는 클라이언트 측에서 데이터를 저장하고 유지하기 위한 방법 중 하나로 쿠키를 사용하면 사용자가 웹 사이트를 방문할 때마다 서버는 브라우저에 데이터를 보내고

arang95.tistory.com

 

1. JSP(JavaServerPages)에서 Cookie와 Session의 공통점은 둘다 클라이언트와 서버간의 데이터를 전송하고 유지하는 방법이다.

 

2. Cookie와 Session의 차이점

  Cookie Session
저장위치 클라이언트 측에 저장 서버측에 저장
저장 데이터 문자열 값만 저장 객체를 저장
보안성 클라이언트 측에 저장되어 유출될 경우 보안상의 위험이 존재 서버 측에 저장되기 때문에 쿠키에 비해 안전하다.
유효기간 만료기간을 설정할 수 있다. 브라우저를 종료하면 삭제된다.
사용용도 로그인 정보 등을 저장하기 위해 사용된다. 사용자의 상태를 유지하기 위해 사용된다.
사용방법 HTTP응답 헤더에 Set-Cookie를 사용하여 설정하고 HTTP요청 헤더에서 Cookie를 사용하여 읽을 수 있다. JSP내장 객체 HttpSession을 사용하여 설정하고 읽을 수 있다.

 

3. Session의 주요 내장객체

- 가장 주요한 Session 내장 객체는 HttpSession

- HttpSession 객체는 사용자별로 생성되고 서버 측에 사용자 정보를 저장한다. 

  1. getSession(): 현재 세션을 반환하거나, 새로운 세션을 생성
  2. setAttribute(String name, Object value): 지정된 이름으로 객체를 세션에 저장
  3. getAttribute(String name): 세션에서 지정된 이름으로 저장된 객체를 반환
  4. removeAttribute(String name): 세션에서 지정된 이름으로 저장된 객체를 제거
  5. invalidate(): 현재 세션을 무효화하여 세션과 관련된 모든 객체를 삭제

4. Session 예제

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page session = "true" %>
<%@ page import = "java.util.Date" %>
<%@ page import = "java.text.SimpleDateFormat" %>    
<%
	Date time = new Date();
	SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Session Info</title>
</head>
<body>
<h1>세션정보</h1>
<HR>
Session ID : <%=session.getId() %><br>
<%
	time.setTime(session.getCreationTime());
%>
세션생성시간 : <%=formatter.format(time) %><br>
<%
	time.setTime(session.getLastAccessedTime());
%>
최근접근시간 : <%=formatter.format(time) %>
</body>
</html>

 

 

5. Session의 속성 사용

- 한번 생성된 세션은 종료전까지 지속적으로 유지된다. setAttribute(), getAttribute() 메소드를 사용하여 속성정보를 저장하고 불러올 수 있다.

Session 정보 저장하기

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page contentType="text/html; charset=UTF-8" %>
<%
	session.setAttribute("STUDENT", "AR");
	session.setAttribute("NAME", "AR삽질러");
%>    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Session Save</title>
</head>
<body>
<h1>Session Info Save</h1>
<HR>
세션에 정보를 저장하였습니다.
</body>
</html>

 

Session 정보 불러오기

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	String Studentid = (String)session.getAttribute("STUDENT");
	String name = (String)session.getAttribute("NAME");
%>    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Session Info GET</title>
</head>
<body>
<h1>세션 정보 로드</h1>
<HR>
StudentID : <%=Studentid %><br>
Name : <%=name %>
</body>
</html>

6. Session종료

- 웹 애플리케이션에서 세션(session)은 클라이언트와 서버 간의 상태 정보를 유지하기 위한 메커니즘으로 세션은 일정 기간동안 클라이언트와 서버 간의 연결을 유지하며 세션에 저장된 데이터는 클라이언트의 요청에 따라 서버에서 처리되어 응답으로 전송됩니다.

세션의 종료는 방법

1. 타임아웃 : 타임아웃시간을 설정

<session-config>
	<session-timeout>5</session-timeout>  // 타임아웃시간을 5분으로 설정
</session-config>

2. setMaxInactiveInterval()메소드를 이용한 타임아웃 설정방법

<%
	session.setMaxInactiveInterval(5 * 60); // 초단위로 설정
%>

ex)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	session.invalidate();
%>    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Session Time Out</title>
</head>
<body>
<h1>Session Time Out</h1>
<HR>
</body>
</html>

 

 

 

 

 

 

 

 

728x90
반응형
LIST