Development/Spring
Spring의 4개의 저장소
우봉수
2023. 1. 19. 07:38
<기본 전제>
HTTP 특징 - 상태정보를 저장하지 않는다 (stateless)
만약에 클라이언트가 로그인 후 다시 요청을 보낸다면
HTTP 특성상 로그인 정보를 저장하지 않기 때문에 같은 클라이언트가 보낸건지 알 수 없다.
따라서 상태정보를 저장해줄 저장소가 필요하다
공통적인 특징
Map 형태로 데이터가 저장되어 있음 - Key값: 속성(attribute)
접근 범위, 생존 기간 존재
setAttribute() 로 데이터를 쓰기(저장)
getAttribute() 로 데이터를 읽기(저장)
removeAttribute() 로 속성을 삭제 가능
getAttributeNames() 모든 속성의 이름을 반환
서로 간의 읽기 쓰기가 가능
pageContext 저장소
- 유효범위: 1개 JSP 페이지
- lv(지역변수) 저장
- request
- response
- 접근 범위: 해당 jsp페이지 내부에서만 접근 가능
- EL 에서 사용하기 위해서 lv(지역변수)를 저장하는 것
- 문법: ${}
- 요청 할때 마다 초기화
application 저장소
- 유효범위: context 전체
- WebApp 전체에서 공유하고 접근이 가능한 저장소
- 개별적인 id를 저장하기에는 좋은 저장소가 아님
- 딱 1개만 존재
- 어디에서나 접근이 가능
- 전체 데이터 저장소
session 저장소
- 유효범위: n개 JSP페이지
- 클라이언트와 1대1로 대응한다.
- 클라이언트가 로그인 하면 생성
- 클라이언트가 로그아웃시 삭제
- 문제점: 사용자 숫자 만큼 객체가 생기기 때문에 수가 많아짐
- 서버 부담이 가장 큼
- 따라서 최소한의 데이터만 저장
- 개별 저장소
- id, 장바구니
- id pass 정보를 저장 하는 곳
- 쿠키를 이용하여 클라이언트와 연결
- 웹 페이지 들 간의 데이터를 전달할 때 가장 쉽다 (권장 x)-메모리 부담이 큼
- 사용을 최소하는 것을 권장
- 사용 하더라도 잠깐 저장하고 삭제하는 방식
request 저장소
- 유효범위: 1개 이상 JSP페이지
- 요청의 시작부터 응답까지. 다른 JSP로 전달(forward) 가능. 요청마다 1개
- 클라이언트가 요청 할 때 마다 생성
- 각각의 request 저장소는 서로 독립적
- 웹 페이지 들 간의 데이터를 전달할 때 부담이 제일 적게 사용 가능 (최우선)