20180816

1. Scope

  • 변수가 유지되는 범위. scope

  • Page Scope : 페이지 내에서 변수가 유지.
  • Request Scope : HTTP 요청을 WAS가 받아서 웹 브라우저에게 Response할 때까지 변수가 유지.
  • Session Scope : 웹 브라우저 별로 변수가 관리되는 경우.
  • Applicaition Scope : 웹 어플리케이션이 시작되고 종료될 때까지 변수가 유지.

1) Page Scope

  • 해당 JSP나 서블릿이 실행되는 동안에만 정보를 유지한다.
  • PageContext 추상 클래스 사용.
  • JSP 페이지에서 pageContext라는 내장 객체로 사용가능.
    • setAttribute(), getAttribute() 메소드를 이용.
    • 모든 Scope들이 각 객체별로 공통적으로 위 메소드를 사용한다.
  • forward가 될 경우 해당 Page scope에 지정된 변수는 사용할 수 없다.
  • 마치 지역변수처럼 사용된다는 것이 다른 scope들과의 차이점.

2) Request Scope

  • HTTP요청을 WAS가 받아서 웹 브라우저에게 응답할 때까지 변수값을 유지하고자 할 경우 사용한다.
  • HttpServletRequest 객체 사용.
    • JSP에서는 request 내장 객체 사용.
    • 서블릿에서는 HttpServletRequest 객체 사용.
  • forward시 값을 유지하고자 사용한다.

3) Session Scope

  • 웹 브라우저(Client) 별로 변수를 관리하고자 할 경우 사용한다.
    • 탭 간에는 세션정보가 공유된다.
  • HttpSession 인터페이스를 구현한 객체를 사용한다.
  • JSP에서는 session 내장 객체를 사용한다.
  • 서블릿에서는 HttpServletRequest의 getSession()메소드를 이용하여 session객체를 얻는다.
  • 장바구니 처럼 사용자별로 유지가 되어야할 정보가 있을 경우 사용.

4) Application Scope

  • 웹 어플리케이션이 시작되고 종료될 때까지 변수를 사용할 수 있다.
  • ServletContext 인터페이스를 구현한 객체를 사용한다.
  • JSP에서는 application 내장 객체를 사용.
  • 서블릿에서는 getServletContext()메소드를 이용하여 application객체를 이용.
  • 웹 어플리케이션 하나당 하나의 application객체가 사용된다.
  • 모든 클라이언트가 공통으로 사용해야할 값이 있을 경우 사용.