為了簡化JSP表達式和scriptlets中的代碼,提供了8種自動定義的變量,有時稱做implicit objects(固有對象)。它們是:request,response,out,session,application,config,pageContext,和 page。下面我們來詳細的了解它們。 request 與request相聯系的是HttpServletRequest類,使您可以得到request的參數(通過getParameter方法),request 的類型(GET,POST,HEAD,等等),和引入的HTTP頭(cookies,Referer,等等)。嚴格來說,request是類ServletRequest的一個子類而不是HttpServletRequest類的,事實上,如果request的協議不是HTTP,那麽它幾乎不會工作。 response 對客戶端的response與HttpServletResponse 相連。請注意,因為輸出流是放入緩沖的,所以可以設置HTTP狀態碼和response頭,盡管在標准的servlets中不允許將之發送到客戶端。 out 這裡使用PrintWriter類來發送輸出到客戶端。然而,為了使response對象有效,可使用一個PrintWrite類的使用緩沖的版本JspWriter。使用session的屬性page directive,您可以自己定義緩沖的大小,甚至可以在使用了buffer屬性後關閉緩沖。也請注意,out僅用於scriptlets之中,因為JSP表達式自動的放入輸出流,所以極少需要明確的聲明out。 session 應用與request相聯系的HttpSession類。因為session是自動創建的,即使沒有一個引入的session,這種變量仍可綁定。有一個例外是,如果您用page directive關閉session,再試圖使用session時將導致錯誤(在JSP頁面向servlet轉換時)。 application 使用ServeletContext類,通過使用getServletConfig().getContext()得到。 config 是一個ServletConfig類的對象。 pageContext 這是JSP中的一個新的類PageContext,用於精練特定服務器的特點時使用,如提高JspWriters的執行效率。如果您通過這個類訪問而不是直接的,您的代碼將仍然運行在“規則”的JSP /servlet引擎。 page 在JAVA中不是很有用,它僅僅是用來保存在腳本的語言不是JAVA時的時間。