심심한 개발자의 취미생활

본 글은 victolee님의 포스팅을 보고 따라 학습하며 내용을 정리한 포스팅 입니다.

객체 범위 (Scope)

객체 범위 종류

  • 웹 애플리케이션에는 4개의 객체 범위가 존재합니다.
  1. page 영역

    • 한 번의 클라이언트 요청이 오면, 하나의 JSP 페이지가 응답됩니다.
    • page영역은 이 때 하나의 JSP 페이지 내에서만 객체를 공유하는 영역을 의미합니다.
    • JSP 파일에 <% %>안에 변수를 사용하면, 이 변수는 해당 JSP파일 내에서만 유효한데 이는 page스코프에 정의된 객체이기 때문입니다.
  2. request 영역

    • 요청을 받아서 응답하기까지 객체가 유효한 영역입니다.
    • servlet에서 forward또는 include를 사용한다면, request 요청 객체가 공유되어서 request영역이 됩니다.
  3. session 영역

    • 하나의 브라우저(동일한 클라이언트) 당 1개의 session 객체가 생성됩니다.
    • 같은 브라우저(동일한 클라이언트) 내에서 요청되는 페이지들은 같은 객체를 공유하게 되는데, 이를 세션 영역이라고 합니다.
  4. application 영역

    • 하나의 application당 1개의 application 객체가 생성됩니다.
    • 다른 클라이언트에서 공유, 모든 클라이언트에서 동일한 객체의 사용이 가능합니다.
page영역 request영역 session역역 application영역
저장소 pageContext HttpServletRequest HttpSession ServletContext
저장메소드 setAttribute(KEY, 객체) setAttribute(KEY, 객체) setAttribute(KEY, 객체) setAttribute(KEY, 객체)
호출메서드 getAttribute(KEY) getAttribute(KEY) 1. getAttribute(KEY)
2. getSession()
1. getAttribute(KEY)
2. getServletContext()

애트리트트 명은 좁은 범위의 영역부터 큰 범위의 영역으로 탐색을 합니다.