- 최초 요청부터 최종 요청까지의 사용자 상태를 유지하는 수단
- 웹 브라우저마다 하나의 세션이 생성되며, 사용자를 구분하는 식별 값으로 활용됨
- 서버에서 관리되므로 보안성이 높음 (쿠키는 클라이언트에 저장)
세션 동작 방식
- 클라이언트가 서버에 요청을 보냄.
- 서버는 새로운 세션을 생성하고, 세션 ID를 발급하여 클라이언트에게 전달
- 클라이언트는 이후 요청마다 세션 ID를 서버에 전달
- 서버는 세션 ID를 이용해 클라이언트 정보를 식별하고 유지
메서드
| 메서드 |
설명 |
session.setAttribute(name, object) |
세션에 데이터 저장 |
session.getAttribute(name) |
세션에서 데이터 가져오기 |
session.removeAttribute(name) |
세션 데이터 삭제 |
session.invalidate() |
세션 종료 |
쿠키 vs 세션 비교
| 구분 |
쿠키 |
세션 |
| 클래스 |
Cookie |
HttpSession |
| 저장 위치 |
클라이언트(브라우저) |
서버 |
| 저장 형식 |
Text |
Object |
| 만료 시점 |
유효 기간 설정 (브라우저 종료 후에도 유지 가능) |
브라우저 종료 또는 invalidate() 호출 시 삭제 |
| 보안성 |
낮음 (클라이언트 저장, 변조 가능) |
높음 (서버 관리) |
| 리소스 사용 |
클라이언트 리소스 |
서버 리소스 |
세션 로그인 예제
(1) 로그인 화면 (session.jsp)
사용자가 아이디와 비밀번호를 입력하고 로그인 요청을 보낸다.
<form action="./proc2/LoginSession.jsp" method="Post">
<input type="text" name="uid" placeholder="아이디 입력"><br>
<input type="password" name="pass" placeholder="비밀번호 입력"><br>
<input type="submit" value="로그인">
</form>
(2) 로그인 처리 (LoginSession.jsp)