[SPRING]JSP 영역(내장객체)
카테고리: SPRING
[10] JSP 영역(내장객체)
10.1. JSP의 기본 객체
- 생성없이 사용할 수 있는 객체
- service() 메서드의 지역변수(local variable)로 선언되어 있음
- jsp에서 선언없이 사용 가능
10.2. JSP의 기본 객체 종류
- request
: 요청정보가 담겨있는 객체 - response
: 요청에 응답을 작성할 때 사용 - session
: HTTP session을 구현한 객체. 세션 정보 저장에 사용 - application (javax.servlet.ServletContext)
: Web Application 전체에서 공유하는 객체 - pageContext (javax.servlet.jsp.PageContext)
: JSP 페이지의 context정보를 제공 - page (java.lang.Object)
: JSP 페이지 객체 자신 - config, out, exception
10.3. 유효 범위(scope)와 속성(attribute)
- HTTP 특징
- 상태정보 저장하지 않음(stateless)
- 따라서 저장소가 필요함 (stateful)
- 상태 정보 저장할수 있음.
10.4. 4개의 저장소(접근 범위, 생존 기간에 따라 구분)
- 저장소는 Map 형태 (key-속성, value-속성값)
- Map에 읽기, 쓰기 가능
- 읽기 : getAttribute()
- 쓰기 : setAttribute()
- 각 영역에 저장된 데이터는 공유 범위가 서로 다름
- 각 객체가 저장되는 메모리의 유효기간.
- 웹에서 페이지(page)들이 모여 하나의 요청(request)을 처리하며, 요청들이 모여 하나의 세션(session)을, 다시 세션들이 모여 하나의 웹 애플리케이션(application)을 이룸.
10.5. 내장 객체의 영역 4가지
- page 영역 (pageContext)
- 동일한 페이지에서만 공유됨. 페이지를 벗어나면 소멸됨
- JSP에 존재
- local variable를 저장
- 접근 범위 : 각 페이지안에서만 접근 가능. 다른 페이지에서 접근 불가
- 요청(request)할때마다 초기화 됨.
- request 영역
- 하나의 요청에 의해 호출된 페이지와 포워드(요청 전달)된 페이지까지 공유됨
- 접근범위 : 요청마다 독립적.
- 생존기간 : 요청이 처리되는 동안에만 존재함
- 요청할 때마다 하나씩 생김.
- forward : request 객체를 처리하지 못해서 다른 페이지로 넘기는 것.
- request 객체에 데이터를 저장해서 전달 가능.
- request.getRequestDispatcher(“포워드할 파일 경로”).forward(request, response)
- 현재 페이지로 들어온 요청을 다음 페이지로 보내는 기능.
- 서버의 부담이 제일 적음.
- session 영역
- 클라이언트가 처음 접속한후 웹 브라우저를 닫을 때까지 공유됨
- 접근 범위 : 클라이언트마다 각각 1개씩 있는 개별 저장소
- 생존 기간 : 로그인에서 로그아웃까지.
- 로그인하면 session이 생겼다가, 로그아웃하면 제거됨.
- 로그인시 각 클라이언트마다 따로 1개씩 존재함.
- 각각의 id를 저장해서 클라이언트를 구별 가능.
- id, 장바구니 같이 각 사용자의 개별 정보를 담으면 좋음.
- 사용자마다 1개씩 갖기 때문에 최소한의 데이터만 저장해야 함.
- 서버 부담이 제일 큼
- application 영역
- 한 번 저장되면 웹 애플리케이션이 종료될 때까지 유지됨
- 접근 범위 : WebApp (ServletContext) 전체에서 접근 가능
- 공통 저장소, 단 1개만 존재
- 어느 곳에서든 읽기, 쓰기가 가능
기본 객체 유효범위 pageContext 1개 JSP페이지 - JSP페이지의 시작부터 끝까지.
- 내부에서만.request 1개+ 개 JSP페이지 - 요청의 시작부터 응답까지.
- 요청마다 1개session n개 JSP페이지 - session의 시작부터 종료까지(로그인~로그아웃).
- 클라이언트마다 1개application context 전체 - Web Application의 시작부터 종료까지. context 내부 어디서나 접근가능.
- 모든 클라이언트가 공유.
10.6. 영역이 제공하는 주요 메서드
- void setAttribute(String name, Object value)
- 각 영역에 속성을 저장함.
- 첫 번째 인수는 속성명, 두 번째 인수는 저장할 값임
- 값의 타입은 Object이므로 모든 타입의 객체를 저장할수 있음.
- Object getAttribute(String name)
- 영역에 저장된 속성값을 얻어옴
- void removeAttribute(String name)
- 영역에 저장된 속성을 삭제함
10.7. 데이터 전송 객체 (DTO)
- 주로 데이터를 저장하거나 전송하는데 쓰이는 객체
- 다른 로직없이 순수하게 데이터만 담고 있음.
- DTO는 자바빈즈(JavaBeans) 규약에 따라 작성함
- 자바빈즈 규약
- 자바반즈는 기본(default) 패키지 이외의 패키지에 속해야함.
- 멤버 변수(속성)의 접근 지정자는 private으로 선언함
- 기본 생성자가 있어야 함.
- 멤버 변수에 접근할 수 있는 게터(getter)/세터(setter) 메서드가 있어야 함.
- 게터/세터 메서드의 접근 지정자는 public으로 선언함.
댓글 남기기