大家好,我是IT修真院深圳分院第01期學員,一枚正直純潔善良的web程序員。今天給大家分享一下,修真院官網(wǎng)JAVA(職業(yè))任務(wù)4的知識點——JSP內(nèi)置對象。
1.背景介紹
內(nèi)置對象(又叫隱含對象):不需要預先聲明就可以在腳本代碼和表達式中隨意使用。jsp內(nèi)置了9大對象:request、response、session、application、out、pageContext、config、page、exception。。
2.知識剖析
2.1 request對象
request對象是javax.servlet.httpServletRequest類型的對象。 該對象代表了客戶端的請求信息,主要用于接受通過HTTP協(xié)議傳送到服務(wù)器的數(shù)據(jù)。(包括頭信息、系統(tǒng)信息、請求方式以及請求參數(shù)等)。request對象的作用域為一次請求。
2.2 response對象
response代表的是對客戶端的響應(yīng),主要是將JSP容器處理過的對象傳回到客戶端。response對象也具有作用域,它只在JSP頁面內(nèi)有效。
2.3 session對象
session對象是由服務(wù)器自動創(chuàng)建的與用戶請求相關(guān)的對象。服務(wù)器為每個用戶都生成一個session對象,用于保存該用戶的信息,跟蹤用戶的操作狀態(tài)。session對象內(nèi)部使用Map類來保存數(shù)據(jù),因此保存數(shù)據(jù)的格式為“Key/value”。session對象的value可以使復雜的對象類型,而不僅僅局限于字符串類型。
2.4 application對象
application對象可將信息保存在服務(wù)器中,直到服務(wù)器關(guān)閉,否則application對象中保存的信息會在整個應(yīng)用中都有效。與session對象相比,application對象生命周期更長,類似于系統(tǒng)的“全局變量”。
2.5 out對象
out對象用于在Web瀏覽器內(nèi)輸出信息,并且管理應(yīng)用服務(wù)器上的輸出緩沖區(qū)。在使用out對象輸出數(shù)據(jù)時,可以對數(shù)據(jù)緩沖區(qū)進行操作,及時清除緩沖區(qū)中的殘余數(shù)據(jù),為其他的輸出讓出緩沖空間。待數(shù)據(jù)輸出完畢后,要及時關(guān)閉輸出流。
2.6 pageContext對象
pageContext對象的作用是取得任何范圍的參數(shù),通過它可以獲取JSP頁面的out、request、reponse、session、application等對象。pageContext對象的創(chuàng)建和初始化都是由容器來完成的,在JSP頁面中可以直接使用pageContext對象。
2.7 config對象
config對象的主要作用是取得服務(wù)器的配置信息。通過pageConext對象的getServletConfig()方法可以獲取一個config對象。當一個Servlet初始化時,容器把某些信息通過config對象傳遞給這個Servlet。 開發(fā)者可以在web.xml文件中為應(yīng)用程序環(huán)境中的Servlet程序和JSP頁面提供初始化參數(shù)。
2.8 page對象
page對象代表JSP本身,只有在JSP頁面內(nèi)才是合法的。page隱含對象本質(zhì)上包含當前Servlet接口引用的變量,類似于Java編程中的this指針。
2.9 exception對象
exception對象:exception對象的作用是顯示異常信息,只有在包含isErrorPage="true"的頁面中才可以被使用,在一般的JSP頁面中使用該對象將無法編譯JSP文件。excepation對象和Java的所有對象一樣,都具有系統(tǒng)提供的繼承結(jié)構(gòu)。exception對象幾乎定義了所有異常情況。在Java程序中,可以使用try/catch關(guān)鍵字來處理異常情況; 如果在JSP頁面中出現(xiàn)沒有捕獲到的異常,就會生成exception對象,并把exception對象傳送到在page指令中設(shè)定的錯誤頁面中,然后在錯誤頁面中處理相應(yīng)的exception對象。
3. 常見問題
實際使用
4. 解決方案
在jsp頁面中寫腳本代碼直接使用(<%...%>)
5. 編碼實戰(zhàn)
6. 擴展思考
關(guān)于jsp:servlet是一個Java類,是一個可以獨立運行的小程序,可以用“請求-響應(yīng)”編程模型訪問,jsp實際上就是一個servlet,也就是說jsp會在servlet容器中編譯成Java類,因此jsp可以接收請求和響應(yīng)。
7.參考文獻
參考一:慕課網(wǎng)
8.更多討論
請求轉(zhuǎn)發(fā)與請求重定向
請求轉(zhuǎn)發(fā)發(fā)生在服務(wù)端內(nèi)部,使用request.getRequestDispatcher().forward(request,response)轉(zhuǎn)發(fā),前后是一次請求,轉(zhuǎn)發(fā)后請求對象會保存,最終瀏覽器url地址不會改變;請求重定向是客戶端行為,使用response.sendRedirect()方法,本質(zhì)上等同于兩次請求,前一次的請求對象不會保存,瀏覽器url地址會發(fā)生改變。
提問:這九大對象中最常用的對象是哪些?
答:request、response、session、pageContext最常用,目前寫web工程都用spring MVC框架,很多內(nèi)置對象的功能都被框架的功能替代。
提問:out.clearBuffer( )和out.clear( )有什么區(qū)別?
答:clear()用來清除輸出緩沖區(qū)。這種方法不寫任何內(nèi)容到客戶機。該方法拋出異常,如果緩沖被刷新。
clearBuffer():清除輸出緩沖區(qū)。這種方法不寫任何內(nèi)容到客戶機。該方法不會拋出異常,如果緩沖被刷新。
提問:ServletContext對象是什么?
答:ServletContext,是一個全局的儲存信息的空間,服務(wù)器開始,其就存在,服務(wù)器關(guān)閉,其才釋放。運行在JAVA虛擬機中的每一個Web應(yīng)用程序都有一個與之相關(guān)的Servlet上下文。ServletContext對象是Web服務(wù)器中的一個已知路徑的根,一個ServletContext對象表示了一個Web應(yīng)用程序的上下文。
鳴謝
感謝大家觀看
------------------------------------------------------------------------------------------------------------------------
今天的分享就到這里啦,歡迎大家點贊、轉(zhuǎn)發(fā)、留言、拍磚~