Study/SpringFramework

14. 서블릿과 JSP(2) 25:09

슬기로운 개발자 2022. 8. 1. 00:51
728x90

8. 유효 범위(scope)의 속성(attribute)

HTTP 특징 - Stateless(상태정보 저장x), Stateful(상태정보 저장o)

접근범위와, 생존기간에 따라 4개의 저장소로 분류된다.

사용 목적에 따라 알맞은 저장소를 사용하면 된다.

 

저장소는 Map 형태로 되어있다.

Key Value
속성1 속성값

 

1. pageContext

lv를 저장한다. 기본객체(request, response)도 들어있다.

코드들은 login.jsp -> pageContext를 거쳐(같은 페이지) 접근(읽기, 쓰기)할 수 있다.

pageContext는 &{ } EL 때문에 사용한다. (차후 설명)

 

2. application

WebApp 전체에서 접근 가능. (공통저장소)

Attribute -> 속성

저장소 Map에 저장할 때 쓰는 메서드가 setAttribute() 쓰기(저장), 읽어올 때 쓰는 메서드가 getAttribute()

모든페이지에서 접근할 때 편하긴 한데, 다른 사용자가 접근 할 때.. 키값이 동일한 경우 Value값이 변경됨..

 

3. Session

개별 저장소

클라이언트마다 1개 씩 있음 - 1:1

Cookie : 세션은 쿠키를 이용해서 이 객체가 어떤 사람건지 연결해주는 역활 해줌.(id 뿐만 아니라 장바구니)

사용자마다 1개씩 갖는 개별저장소.. x 사용자 숫자만큼 개수가 늘어나기 때문에

session 저장공간에는 최소한의 데이터만 저장해야 한다. 왜? 서버 메모리 부담이 커서.

최소한!!

 

4. request 

Key Value
속성1

request 객체가 갖고 있는 Map

요청할 때마다 하나씩 생김. 독립적

보통은 요청이 하나의 JSP에서 끝나는데

이 요청을 JSP가 받았다가 응답하지 않고 다른 JSP로 넘겨줄 수 있다.

본인이 응답할 수 있는게 아닐때 데이터를 다른 JSP로 넘겨주는 방법이 forward

그래서 forward들을 사용하면 JSP의 request 데이터를 다른 JSP에서 사용할 수 있다.

기본 객체 유효 범위 설명
pageContext 1개 JSP 페이지 JSP 페이지의 시작부터 끝까지. 해당 JSP 내부에서만 접근가능. 페이지당 1개
EL  ${}때문에 사용함
 request 1+개 JSP 페이지 요청의 시작부터 응답까지. 다른 JSP로 전달(forword) 가능. 요청마다 1개
session n개 JSP 페이지 session의 시작부터 종료까지(로그인~로그아웃). 클라이언트마다 1개
서버부담 큼. 사용 최소화.
application context 전체 Web Application의 시작부터 종료까지. context내부 어디서나 접근 가능
모든 클라이언트가 공유. context마다 1개
속성 관련 메서드 설명
void setAttribute(String name, Object value) 지정된 값(value)을 지정된 속성 이름(name)으로 저장, 쓰기
Object getAttribute(String name) 지정된 이름(name)으로 저장된 속성의 값을 반환, 읽기
void removeAttribute(String name) 지정된 이름(name)의 속성을 삭제
Enumeration getAttributeNames() 기본 객체에 저장된 모든 속성의 이름을 반환

 

 

 

 

728x90