1.什么叫做內置對象?
答:在jsp中,有一些對象即開發者不需要自己去創建對象(全部由系統創建好),就可以直接使用對象調用相應的方法,這些由系統創建的對象稱為內置對象。
2.九大內置對象分別是哪些?
內置對象名 類型 對象名 作用域
四大作用域對象:
request javax.servlet.http.HttpServletRequest 請求對象 Request
session javax.servlet.http.HttpSession 會話對象 Session
application javax.servlet.ServletContext 應用程序對象 Application
pageContext javax.servlet.jsp.PageContext 頁面上下文對象 Page
兩個輸出
out javax.servlet.jsp.JspWriter 輸出對象 Page
response javax.servlet.http.HttpServletResponse 響應對象 Page
三個打醬油
page java.lang.Object 頁面對象 Page
config javax.servlet.ServletConfig 配置對象 Page
exception java.lang.Throwable 例外對象 Page
對作用域的解釋:
Page域:只能在當前jsp頁面使用(當前頁面)。
Request域:只能在同一請求中使用(轉發)。
Session域:只能在同一會話(session會話)中使用(私有的)。
Context(Application)域:只能在一個web應用中使用(全局)。
3.一一解析各個內置對象
3.1 request 對象
該對象代表客戶端的請求信息,主要用於接收通過HTTP協議傳送到服務器的數據(包括請求頭信息,系統信息,請求方法以及請求參數等)。request對象的作用域為一次請求。
3.1.1 常用方法:
getParameter(String name) :返回指定參數名稱的數值,如果沒有相對應的數值則返回null。
getParameterValues(String name):返回具有相同參數名稱的數值的集合,返回String類型的數組。
getRequestDispatcher(String uripath):頁面的轉發,地址不會發生改變,因為針對客戶端來說只發送一次請求。
3.2 session 對象
session對象是由服務器自動創建的與用戶請求相關的對象。服務器為每個用戶都生成一個session對象,用於保存該用戶的信息,跟蹤用戶的操作狀態。session對象內部使用Map類來保存數據的,因此保存數據的格式為“key/value”。
session對象的value可以使用復雜的對象類型,不僅僅局限於字符串類型。
3.2.1 session對象就做會話:即每次瀏覽器訪問網站,服務器就會給這個請求創建一個會話,存儲到服務器端,服務器根據每一個會話的ID區別每一個請求的用戶。
3.2.2 常用方法:
setAttribute(String key,Object obj):以key/value形式保存數據。
getAttribute(String key:通過key獲取數據。
getId:獲取session id。
invalidate():設置session對象失效。
setMaxInactiveInterval(int interval):設置session對象的有效期。
removeAttribute(String key):移除session中的屬性。
3.2.3 Session過期時間的三種設置方式:
a. 在tomcat服務器的web.xml文件中進行設置,tomcat默認時間為30分鍾。
web.xml文件在conf文件夾下,具體設置如下:(單位為分鍾)
<session-config>
<session-timeout>30</session-timeout>
</session-config>
b. 在項目中的web.xml文件中進行設置:
設置方法如a,優先順序b>a,也就是說b設置了,a就無效了。
c. 在代碼中設置:通過setMaxInactiveInterval()方法設置。
3.2.4 session 的銷毀
a. 設置的時長到了以后自動銷毀,常見的情況就是你在一個頁面長時間不進行操作就要重新登錄。
b. 調用invalidate()方法摧毀,常見的情況是注銷登錄。
3.2.5 注意事項
Session的存儲類型可以是任意類型。存儲位置在服務器端,安全性比較高。
在同一台電腦中,不同的瀏覽器也認為是不同的用戶,也會分配一個session id。
session也會隨着瀏覽器的關閉而失效。但請注意,session還會保留在服務器端,一直到設定的時間,才真正的被銷毀。
3.3 application對象
application對象可以將信息保存在服務器中,知道服務器關閉,否則application對象中保存的信息會在整個應用中都有效。與session對象相比,application對象的生命周期更長,類似於系統的“全局變量”。
整個應用程序中只有一個,所有的用戶都可以訪問到,安全性較高。隨應用程序啟動就產生,一直保存在服務器端,通常用於存儲一些所有用戶都需要的數據。
3.4 pageContext 對象
pageContext對象的作用是取得任何范圍的參數,通過它可以獲取jsp頁面的out,request,response,session,application等對象。pageContext對象的創建和初始化都是由容器來完成的,在jsp頁面中可以直接使用pageContext對象。
3.4.1 使用場景:在自定義標簽時會頻繁的使用pageContext對象;或者是定義一個方法需要用到多個對象時,傳一個pageContext對象
就能解決問題。
3.5 out對象
out對象用於在web瀏覽器內輸出信息,並管理應用服務器上的輸出緩存區。在使用out對象輸出數據時,可以對數據緩存區進行操作,及時清理緩存區中的殘余數據,為其他的輸出讓出緩存空間。待數據輸出完畢后,要及時關閉輸出流。
PrintWriter:writer("內容"); 直接向瀏覽器輸出內容
JspWriter:writer("內容"); 向jsp緩存區寫出內容
JspWriter當滿足一下條件之一時,緩存區的內容寫出:
a. 緩存區滿了
b. 刷新緩存區
c. 關閉緩存區
d. jsp頁面執行完畢
3.6 response 對象
response對象代表對客戶端的響應,主要是將jsp容器處理過對象傳回到客戶端。response對象也有作用域,它只是在jsp頁面內有效。
Response對象叫做響應,服務器端對客戶端的請求作出響應。
常用方法:
response.sendRedirect ("index.jsp");
頁面的重定向,地址會改變,因為針對客戶端來說,一共發生了兩次請求。
3.7 page 對象
page對象代表jsp本身,只有在jsp頁面內才合法。page隱含對象本質上包含當前servlet接口引用的變量,類似於Java編程中的this指針。
3.8 config 對象
confige對象的主要作用於取得服務器的配置信息。通過pageContext對象的getServletConfig()方法可以獲取一個
config對象。當一個Servlet初始化時,容器把某些信息通過config對象傳達給這個servlet。開發者可以在web.xml文件中為應用程序環境中的servlet程序和jsp頁面提供初始化參數。
3.9 exception 對象
exception對象的作用是顯示異常信息,只有在包含isErrorPage="true"的頁面中才可以使用的,一般的jsp頁面中使用該對象將無法編譯jsp文件。exception對象和Java的所有對象一樣,都具有系統提供的繼承結構。exception對象幾乎定義了所有異常情況。在Java程序中,可以使用try/catch關鍵字來處理異常情況;如果在jsp頁面中出現沒有捕獲到的異常,就會生成exception對象,並把exception對象傳送到page指令中設定的錯誤頁面中,然后在錯誤的頁面中處理相應的exception對象。