○ Cookie & Session
http 프로토콜이 비연결형 프로토콜이기 때문에 출력된 다음에는 클라이언트와 연결이 끊어진다
따라서 한번 로그인한 사용자가 로그아웃할 때까지 페이지를 이동해도 보관해야할 정보가 있다면 이에 대한 처리가 곤란해진다
이러한 http 프로토콜 문제점을 해결하려고 나온것이 페이지 간의 지속성 서비스를 제공하기 위한 기법인 Cookie와 Session이다
■ Cookie
클라이언트 정보 관리 기법이며 클라이언트의 사용자 컴퓨터에 정보를 저장 관리한다
그러므로 Cookie 방식은 서버에 부하를 주지 않고 사용자 정보를 관리할 수 있는 방식이지만 보안에 약한 것이 단점이다
쿠키는 서버에서 만들어진 작은 정보의 단위로 서버에서 클라이언트의 브라우저로 전송되어 사용자의 컴퓨터에 저장된다
이렇게 저장된 쿠키는 다시 해당하는 웹 페이지에 접속할 때 브라우저에서 서버로 전송될 수 있다
Cookie는 패키지 javax.servlet.http에 속하며 아래와 같은 메소드를 제공한다
▲ Cookie의 메소드
- getMaxAge() : 쿠키의 만료 시간을 얻어온다
- getName() : 쿠키의 이름을 반환한다
- getValue() : 쿠키의 값을 반환한다
- setMaxAge(int expiry) : 쿠키의 만료 시간을 초 단위로 지정한다
- setValue(String newValue) : 쿠키에 새로운 값을 설정한다
▲ 형식
Cookie cookie = new Cookie("user", "ironman"); => 쿠키 생성
cookie.setMaxAge(2 * 60); => 초단위 2분 설정
실행 코드
실행 결과
■ Session
JSP에서 제공하는 클라이언트의 브라우저 정보 관리 기법으로 브라우저마다 각기 다른 사용자 정보를 서버에 저장하는 방법이다
클라이언트의 정보를 클라이언트 PC에 저장하는 것이 Cookie라면
클라이언트의 브라우저마다 각기 다른 정보를 저장하는 것이 Session이다
즉, Session은 클라이언트 사용자 별로 여러 페이지 이동을 인식하며 필요한 정보를 서버에 저장하고
조회할 수 있는 방법과 세션을 관리할 수 있는 방법을 제공한다
▲ 내장 객체 session
내장 객체 session은 javax.servlet.http에 속하는 인터페이스 HttpSession 참조 변수이다
session은 접속하는 사용자 별로 따로 생성되며 일정시간 유지되고 소멸된다
이러한 세션의 특징을 이용해 setAttribute() 메서드를 이용해 임의의 값을 저장해놓고 활용할 수 있다
내장 객체인 session은 세션 자체인 식별자와 생성 시간 정보를 제공하는 메소드인 getId(), getCreationTime()등을 제공한다
-세션이 주로 사용되는 경우
- 사용자 로그인 후 세션을 설정하고, 일정 시간이 지난 경우 다시 사용자 인증을 요구할 때
- 쇼핑몰에서 장바구니 기능을 구현할 때
- 사용자의 페이지 이동 동선 등 웹 페이지 트래킹 분석 기능 등을 구현할 때
▲ Session의 메소드
- getCreationTime() : 1970년 1월 1일 0시를 기준으로 현재 세션이 생성된 시간까지 지난 시간을 계산하여 밀리세컨드로 반환한다
- getId() : 세션에 할당된 유일한 식별자(ID)를 String 타입으로 변환한다
- setMaxInactiveInterval(int interval) : 세션의 최대 유지 시간을 초단위로 설정한다
- getMaxInactiveInterval() : 현재 생성된 세션을 유지하기 위해 설정된 최대 시간을 초의 정수값으로 반환한다
지정하지 않으면 기본값으로 1800초, 즉 30분이며 기본값도 서버에서 설정이 가능하다 - setAttribute(String name, Object value) : name으로 지정한 이름에 value를 할당한다
- getAttribute(String name) : name이란 이름에 해당하는 속성값을 Object 타입으로 반환한다
해당하는 이름이 없을 경우 null을 반환한다 - getAttributeNames() : 속성의 이름들을 Enumeration 타입으로 반환한다
- removeAttribute(String name) : name으로 지정한 속성값 삭제(현재 세션을 끊음. 지정한 세션을 지운다)
- getLastAccessedTime() : 현재 세션으로 마지막 작업한 시간을 long형 밀리세컨드 값으로 반환한다
- invalidate() : 현재 생성된 세션을 무효화 시킨다(현재 세션을 끊음. 모든 세션을 한꺼번에 지움)
- isNew() : 세션이 새로 만들어 졌으면 true, 이미 만들어진 세션이면 false를 반환한다
'JSP' 카테고리의 다른 글
Connection Pool (0) | 2020.07.08 |
---|---|
JDBC 프로그래밍 (0) | 2020.07.06 |
page와 pageContext 내장 객체 (0) | 2020.07.03 |
config와 application 내장 객체 (0) | 2020.07.03 |
out과 exception 내장 객체 (0) | 2020.07.03 |