세션(Session)과 쿠키(Cookie)

2022. 1. 25. 15:07·Back/JSP

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)

쿠키란 클라이언트 측에서 관레되는 정보를 의미한다. 세션과의 차이를 비교해보면 세션은 서버 측에서 관리되지만 쿠키는 클라이언트에 정보가 저장된다. 또한 쿠키의 정보는 세션과 달리 브라우저를 종료한다고 해도 생존 기간이 지정되면 생존 기간 동안 데이터가 사라지지 않는다.

쿠키는 하드디스크에 파일로 저장되기 때문에 그 파일이 남아있는 한 쿠키는 항상 유지된다. 하지만, 쿠키는 클라이언트에서 관리되기 때문에 보안적으로 매우 취약한 면을 가지고 있다.

하드디스크에 있는 쿠키 파일을 수정할 염려가 있기 때문. 보안이 필요한 정보는 세션을 사용함

 

저작자표시 (새창열림)

'Back > 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
'Back/JSP' 카테고리의 다른 글
  • Servlet의 세가지 기능
  • [Servlet 이해하기] 서블릿이란?
  • 자바빈(Java Bean)
  • 자바빈을 이용한 회원가입 폼 작성
soyeon26
soyeon26
  • soyeon26
    개발 일지
    soyeon26
  • 전체
    오늘
    어제
    • 분류 전체보기 (107)
      • Web (22)
        • Web (1)
        • HTTP (0)
      • Language (29)
        • Java Script (3)
        • Type Srcipt (1)
        • Java (25)
      • Front (19)
        • HTML+CSS (4)
        • React (15)
      • Back (41)
        • Spring(Springboot) (9)
        • JSP (21)
        • Database (5)
        • NestJS (6)
      • Devops (6)
        • Docker (1)
        • Git & SVN (5)
      • App (7)
        • Android (7)
      • IT 정보 (3)
  • 블로그 메뉴

    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    과학기술인 번호 발급
    김영한
    백엔드
    SSR
    javascript
    csrvsssr
    Java
    프론트엔드
    과학기술인 등록
    Spring
    자바스크립트set
    과학기술인번호 조회
    스프링부트
    SQL강의 추천
    React
    서블릿
    java의 정석
    데이터베이스 강의
    강의 후기
    강의후기
    인프런
    csr과ssr의 차이
    중복제거
    React Next.js
    springboot
    과학기술인등록번호 조회
    Next.js 필요성
    과학기술인 등록번호 발급
    sql강의
    Next.js
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
soyeon26
세션(Session)과 쿠키(Cookie)
상단으로

티스토리툴바