在JSP頁面中的對象,包含使用者建立的對象(例如,JavaBean對象)和JSP的隱含對象,都有一個範圍屬性。範圍定義了在什麼時間內,在哪一個JSP頁面中可以存取這些物件。例如,session物件在會話期間內,可以在多個頁面中被存取。 application物件在整個Web應用程式的生命週期中都可以被存取。在JSP中,有4種範圍,如下所示。
·page範圍
具有page範圍的物件被綁定到javax.servlet.jsp.PageContext物件中。在這個範圍內的對象,只能在創建對象的頁面中存取。可以呼叫pageContext這個隱含物件的getAttribute()方法來存取具有這種範圍類型的物件(pageContext物件也提供了存取其他範圍物件的getAttribute方法),pageContext物件本身也屬於page範圍。當Servlet類別的_jspService()方法執行完畢,屬於page範圍的物件的參考將被丟棄。 page範圍內的對象,在客戶端每次請求JSP頁面時創建,在頁面向客戶端發送迴響應或請求被轉發(forward)到其他的資源後被刪除。
·request範圍
具有request範圍的物件被綁定到javax.servlet.ServletRequest物件中,可以呼叫request這個隱含物件的getAttribute()方法來存取具有這種範圍類型的物件。在呼叫forward()方法轉向的頁面或呼叫include()方法包含的頁面中,都可以存取這個範圍內的物件。要注意的是,因為請求物件對於每個客戶請求都是不同的,所以對於每一個新的請求,都要重新建立和刪除這個範圍內的物件。
·session範圍
具有session範圍的物件被綁定到javax.servlet.http.HttpSession物件中,可以呼叫session這個隱含物件的getAttribute()方法來存取具有這種範圍類型的物件。 JSP容器為每一次會話,建立一個HttpSession對象,在會話期間,可以存取session範圍內的對象。
·application範圍
具有application範圍的物件被綁定到javax.servlet.ServletContext中,可以呼叫application這個隱含物件的getAttribute()方法來存取具有這種範圍類型的物件。在Web應用程式運作期間,所有的頁面都可以存取在這個範圍內的物件。