사용자가 생성한 객체(예: JavaBean 객체) 및 JSP 암시적 객체를 포함한 JSP 페이지의 객체에는 범위 속성이 있습니다. 범위는 이러한 객체에 액세스할 수 있는 JSP 페이지와 시간을 정의합니다. 예를 들어 세션 개체는 세션 중에 여러 페이지에서 액세스할 수 있습니다. 웹 애플리케이션의 라이프사이클 전체에서 애플리케이션 개체에 액세스할 수 있습니다. JSP에는 아래와 같이 4가지 유형의 범위가 있습니다.
·페이지 범위
페이지 범위가 있는 객체는 javax.servlet.jsp.PageContext 객체에 바인딩됩니다. 이 범위 내의 개체는 개체가 생성된 페이지에서만 액세스할 수 있습니다. 암시적 개체 pageContext의 getAttribute() 메서드를 호출하여 이 범위 유형의 개체에 액세스할 수 있습니다. pageContext 개체는 다른 범위 개체에 액세스하기 위한 getAttribute 메서드도 제공합니다. pageContext 개체 자체도 페이지 범위에 속합니다. Servlet 클래스의 _jspService() 메소드가 실행되면 페이지 범위에 속하는 객체에 대한 참조가 삭제됩니다. 페이지 범위의 객체는 클라이언트가 JSP 페이지를 요청할 때마다 생성되며, 페이지가 클라이언트에 응답을 다시 보내거나 요청이 다른 리소스로 전달되면 삭제됩니다.
·요청범위
요청 범위가 있는 개체는 javax.servlet.ServletRequest 개체에 바인딩됩니다. 이 범위 유형의 개체에 액세스하려면 요청 암시적 개체의 getAttribute() 메서드를 호출할 수 있습니다. 이 범위의 객체는forward() 메서드를 호출하여 리디렉션된 페이지 또는 include() 메서드를 호출하여 포함된 페이지에서 액세스할 수 있습니다. 클라이언트 요청마다 요청 개체가 다르기 때문에 새 요청마다 이 범위의 개체를 다시 만들고 삭제해야 한다는 점에 유의해야 합니다.
·세션 범위
세션 범위가 있는 객체는 javax.servlet.http.HttpSession 객체에 바인딩됩니다. 세션 암시적 객체의 getAttribute() 메서드를 호출하여 이 범위 유형의 객체에 액세스할 수 있습니다. JSP 컨테이너는 각 세션에 대해 HttpSession 개체를 생성합니다. 세션 중에 세션 범위 내의 개체에 액세스할 수 있습니다.
·적용 범위
애플리케이션 범위가 있는 객체는 javax.servlet.ServletContext에 바인딩됩니다. 이 범위 유형의 객체에 액세스하려면 애플리케이션 암시적 객체의 getAttribute() 메서드를 호출할 수 있습니다. 웹 애플리케이션이 실행되는 동안 모든 페이지는 이 범위의 개체에 액세스할 수 있습니다.