[SPRING]JSP 영역(내장객체)

Date:     Updated:

카테고리:

태그:

[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으로 선언함.

SPRING 카테고리 내 다른 글 보러가기

댓글 남기기