유효범위에 따른 4가지 저장소
HTTP 프로토콜은 상태 정보를 저장하지 않는다 특징(stateless)이 있다. 따라서 저장소라는 것이 필요하다. 유효범위에 따라 4개의 저장소가 있으며 목적에 맞게 사용할 수 있고, 저장소는 Map 형태로 구성된다. 이때 쓰기(저장)에 setAttribute() 메서드와 읽기에 getAttribute() 와 메서드 등을 사용한다.
1. pageContext : 지역 변수를 저장(기본 객체 등)하고 유효 범위는 해당 1개 JSP 페이지 안에서만 접근(읽기, 쓰기) 가능하다. 같은 범위 내에 있음에도 pageContext 저장소를 사용하는 이유는 EL(Expression Language) 때문이다. EL은 지역 변수에 직접 접근할 수 없기 때문이다.
2. request : 요청의 시작부터 응답까지 처리되는 동안 즉 요청마다 1개씩 존재한다. 예를 들어 forward 같이 다른 JSP로 전달되어도 이 request 객체에 접근이 가능하다. session 객체는 서버 부담이 크기 때문에 가능한 request 객체 사용을 우선적으로 고려할 수 있도록 한다.
3. session : 클라이언트 마다 1:1로 대응되는 개별 저장소이며, 쿠키를 이용하여 해당 세션 객체가 어떤 클라이언트의 것인지에 대해 연결해준다. 예를 들어, 아이디와 패스워드를 통한 로그인, 장바구니 등의 기능이 이 session 객체를 이용한다. 하지만 클라이언트 마다 대응된다는 것은 다시 말하면 사용자 수만큼 서버의 부담이 커진다는 것을 의미하므로 최소한의 데이터만 저장해주어야 한다.
4. application : WebApp 전체에서 접근 가능하고, 1개의 저장소만 존재한다.
기본 객체 | 유효 범위 | 설명 |
pageContext | 1개 JSP 페이지 | JSP 페이지의 시작부터 끝까지. 해당JSP내부에서만 접근가능. 페이지당 1개 |
request | 1+개 JSP페이지 | 요청의 시작부터 응답까지. 다른JSP로 전달가능(forward사용) 요청마다 1개 |
session | n개 JSP페이지 | session의 시작부터 종료까지 (로그인~로그아웃), 클라이언트마다 1개(서버부담이 큼) |
application | context 전체 | Web Application의 시작부터 종료까지. context내부 어디서나 접근 가능. 모든 클라이언트가 공유. context마다 1개 |
URL 패턴
우선 순위에 따라 WebServlet으로 서블릿 URL 맵핑
1. exact mapping : 정확히 일치할 경우
ex) /login/hello.do
2. path mapping : 경로가 일치할 경우
ex) /login/*
3. extension mapping : 확장자가 일치할 때
ex) *.do
4. default mapping : 모든 URL(디폴트)
ex) /
위 번호 순서는 우선 순위를 의미하고, 해당되는 패턴을 찾아 하나씩 찾다가 1번부터 3번까지 모두 해당사항이 없다면 4번으로 처리된다.
필터(Filter)
공통적인 요청 전처리와 응답 후처리에 사용된다. 예를 들어 로깅, 인코딩 등에 사용된다. 여러 개의 서블릿이 존재할 때 필터에 공통된 전처리와 후처리를 분리해두면 코드의 중복을 제거할 수 있다.
@WebFilter 어노테이션을 통해 필터로 등록하고, URL 패턴으로 필터를 적용할 대상을 지정해주면 된다.
'[패스트캠퍼스] 스프링의정석 정리 > JSP & Servlet' 카테고리의 다른 글
쿠키(Cookie)와 세션(Session) (2) | 2023.05.17 |
---|---|
Redirect와 Foward (0) | 2023.05.14 |
회원가입 구현 핵심 개념 (0) | 2023.05.14 |
EL / JSTL 정리 (0) | 2023.05.12 |
JSP & Servlet 개념 정리 (1) | 2023.05.11 |