[JSP] SCOPE(Request, Session, Application, Page) #2

[JSP] SCOPE(Request, Session, Application, Page) #2


    • 요청 스코프(Request Scope)
      • Server Client HTTP 요청이 있을때 마다 "javax.servlet.http.HttpServletRequest Interface" 구현한 객체(A) 생성함.
      • A request scope 생명주기 동안에 객체들을 저장할 있는 key(String Type)/value(All type) 속성 쌍들의 컬렉션을 담고 있음.
      • 중요 Method
        • public void setAttribute(String name, Object obj);
        • public Object getAttribute(String name);
        • removeAttribute();   해당 스코프의 속성은  메소드로 삭제속성의 유효 범위는 요청의 존속 기간 동안임. Server 요청을 처리하면 Client에게 응답을 return, Client 자신에게 돌아온 요청(+ 요청의 속성) 사용할  없음, 따라서 JVM 가비지 컬렉션의 대상으로 설정됨.

     


    • 세션 스코프(Session Scope)
      • 컨테이너는 다중 페이지 요청이 발생하면 사용자 식별을 위해 "javax.servlet.http.HttpSession" Interface 구현한 객체(B) 생성함.
      • B 일정 시간동안 유지됨(요청 빈도를 기준으로).
      • B 소멸 시간은 Application's deployment descriptor 통해 설정하거나,  "invalidate();" 메소드를 통해 가능함.
      • request Scope 마찬가지로 key(String Type)/value(All type) 쌍으로 저장이 가능.
      • 다수의 요청에 의해 존재하는 Session Scope Request Scope보다 생명주기가 .

     


    • 애플리케이션 스코프(Application Scope)
      • "javax.servlet.ServletContext" Interface 구현한 객체가 있는 컨테이너안에 설치됨( 컨테이너 시작시 실행).
      • 가시성, 생명주기가 객체에 저장됨.
      • 애플리케이션 스코프 객체의 확인 범위는 모든 클라이언트와 발생되는 어플리케이션임.
      • 생명주기는 객체의 제거, 또는 애플리케이션이 종료할때까지.

     

    ※ Request Scope Session Scope ServletContext Lower Scope.

    ServletContext 모든 Application에서 Application Object 저장, 조회할수 있도록 .


     

    • 페이지 스코프(Page Scope)
      • JSP페이지에서 전반적으로 사용.
      • 페이지 스코프의 객체는 "javax.servlet.jsp.PageContext" 저장되고 접근범위는 객체를 생성한 JSP페이지를 통해서만 가능.
      • Client로부터 응답을 보내거나 Page 다를 자원에 Forward시키면 해당 객체의 생명주기는 없어짐.
      • 모든 JSP 페이지는 "pageContext"라는 객체 참조값을 포함(JSP 생성될 자동으로 생성).
      •  pageContext를 통해 페이지 레벨(page-level) 객체를 조회 저장 가능.