HTTP 프로토콜
세션을 이해하기 위해 HTTP 프로토콜의 특성을 알아두면 좋다
HTTP란?
∙ 웹에서 텍스트, 이미지, 사운드 등의 파일들을 주고받기 위한 통신 규약
∙ 데이터를 요청하고 데이터의 결과 값을 받게 되면 바로 연결은 종료된다.
∙ HTTP 프로토콜은 데이터 송/수신을 하자마자 바로 연결이 끊기게 됨(항상 연결된 상태에서 데이터를 주고 받지X)
세션(Session)
세션이란 서버측의 컨테이너에서 관리되는 정보.
세션의 정보는 컨테이너에 접속해서 종료 되기까지(브라우저를 종료할 때까지)유지됨
접속 시간에 제한을 두어 일정 시간 응답이 없다면 정보는 더이상 유지되지 않게 설정이 가능
(정보가 서버측에서 저장된다는 면에서 보안적으로 유리)
보안이 필요한 정보를 공유하기 위해서는 서버측에서 관리될 수 있는 세션을 이용하는 것이 좋음
세션은 클라이언트와 서버간의 접속을 유지시켜주는 역할을 한다. 클라이언트가 세션에 요청할 경우 서버측에서는 클라이언트에게 클라이언트를 구분할 수 있는 식별자(세션ID)를 부여하게 된다. 여러 클라이언트가 요청하는 정보들은 이 세션 ID를 통하여 각 클라이언트를 구분하여 정보를 저장할 수 있다.
JSP에서의 세션 관리
메소드 | 설명 |
setAttribute( String attrName, Object attrValue ) | 세션 영역에 속성을 생성한다. |
removeAttribute( String attrName ) | 파라미터로 지정된 이름의 속성을 제거한다. |
getAttribute( String attrName ) | 지정된 이름의 속성값을 반환한다. |
getId( ) | 클라이언트의 세션 ID값을 반환한다. |
setMazInactiveInterval( int seconds ) | 세션의 유지 시간을 설정한다. |
getMaxInactiveInterval( ) | 세션의 유지 시간을 반환한다. |
invalidate( ) | 현재의 세션 정보들을 모두 제거한다. |
세션 기능 예제로 확인해보기
1) sessionTest.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
String name;
if(session.getAttribute("name")!=null){
name=(String)session.getAttribute("name");
}else{
name="세션 값 없음";
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Session Test</title>
</head>
<body>
<h2>세션테스트</h2>
<input type="button" onclick="location.href='sessionSet.jsp'" value="세션 값 저장">
<input type="button" onclick="location.href='sessionDel.jsp'" value="세션 값 삭제">
<input type="button" onclick="location.href='sessionInvalidate.jsp'" value="세션 초기화">
<h3><%=name %></h3>
</body>
</html>
2) sessionSet.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<% session.setAttribute("name", "Session Test!"); %>
<script> location.href="sessionTest.jsp"; </script>
3) sessionDel.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<% session.removeAttribute("name"); %>
<script> location.href="sessionTest.jsp"; </script>
4) sessionInvalidate.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<% session.invalidate(); %>
<script> location.href="sessionTest.jsp"; </script>
쿠키(Cookie)
쿠키란 클라이언트 측에서 관레되는 정보를 의미한다. 세션과의 차이를 비교해보면 세션은 서버 측에서 관리되지만 쿠키는 클라이언트에 정보가 저장된다. 또한 쿠키의 정보는 세션과 달리 브라우저를 종료한다고 해도 생존 기간이 지정되면 생존 기간 동안 데이터가 사라지지 않는다.
쿠키는 하드디스크에 파일로 저장되기 때문에 그 파일이 남아있는 한 쿠키는 항상 유지된다. 하지만, 쿠키는 클라이언트에서 관리되기 때문에 보안적으로 매우 취약한 면을 가지고 있다.
하드디스크에 있는 쿠키 파일을 수정할 염려가 있기 때문. 보안이 필요한 정보는 세션을 사용함
'Web > JSP' 카테고리의 다른 글
Servlet의 세가지 기능 (0) | 2022.01.31 |
---|---|
[Servlet 이해하기] 서블릿이란? (0) | 2022.01.27 |
자바빈(Java Bean) (0) | 2022.01.21 |
자바빈을 이용한 회원가입 폼 작성 (0) | 2022.01.21 |
Servlet을 사용한 로그인 기능 구현 (0) | 2022.01.20 |