Jsp已經(jīng)是中古時(shí)代的技術(shù),但對(duì)于很多新入門的程序員來說,學(xué)習(xí)JSP不僅是理解javaEE設(shè)計(jì)原理的重要部分,也是理解目前盛行的戰(zhàn)后分離技術(shù)源流的基礎(chǔ)。
而且,很多程序員可能會(huì)接觸到的一些中古時(shí)期的代碼修改,很可能需要對(duì)Jsp頁面進(jìn)行修改,因此,了解并會(huì)使用Jsp對(duì)Java Web程序員來講,還是非常必要的。下面我們就來了解一個(gè)Jsp內(nèi)置對(duì)象的相關(guān)知識(shí)。
一、什么是Jsp內(nèi)置對(duì)象
顧名思義,Jsp內(nèi)置對(duì)象就是Jsp本身自帶的,不需要new一下也能直接使用的對(duì)象,為提高程序員的開發(fā)效率,Jsp將一些內(nèi)置對(duì)象預(yù)定義好,這樣就可以直接使用了。Jsp的內(nèi)置對(duì)象是web容器實(shí)現(xiàn)和管理的,在使用的時(shí)候可以直接調(diào)用,而不需要實(shí)例化。但是在項(xiàng)目里,需要引入servlet和jsp的jar包。
Jsp內(nèi)置對(duì)象使用的代碼實(shí)例如下:
二、Jsp有哪些內(nèi)置對(duì)象
Jsp的內(nèi)置對(duì)象主要有以下9種:
1、out對(duì)象
out對(duì)象是Jsp內(nèi)置的向客戶端輸出內(nèi)容的對(duì)象。out對(duì)象繼承于java.io.Writer,其類型為javax.,與與HttpServletResponse接口的getWriter()方法獲得PrintWriter對(duì)象對(duì)象的功能相同。out對(duì)象的常用方法包括print, println, newline等。
2、request對(duì)象
request對(duì)象用于存儲(chǔ)客戶端向服務(wù)端發(fā)送的請(qǐng)求信息。其類型為javax.。request的常用方法有g(shù)etProtocol、getRemoteAddr、getRemoteHost、getQueryString、getMethod、getParameter、setAttribute、getParameterNames、getParameterValues、getRequestURI等。代碼示例如下:
3、response對(duì)象
與request相對(duì)應(yīng),response對(duì)象表示服務(wù)器端對(duì)客戶端的響應(yīng),其類型為javax.。大部分時(shí)候,程序無需使用response來響應(yīng)客戶端請(qǐng)求,因?yàn)橛袀€(gè)更簡(jiǎn)單的響應(yīng)對(duì)象——out,它代表頁面輸出流,直接使用out生成響應(yīng)更簡(jiǎn)單。但out是JspWriter的實(shí)例,JspWriter是Writer的子類,Writer是字符流,無法輸出非字符內(nèi)容。假如需要在JSP頁面動(dòng)態(tài)生成一副位圖、或者一個(gè)PDF文檔,使用out作為相應(yīng)對(duì)象將無法完成,此時(shí)需要response作為響應(yīng)輸出。除此之外,還可以使用response來重定向請(qǐng)求,以及用于客戶端增加Cookie。代碼示例如下:
4、session對(duì)象
HTTP是無狀態(tài)協(xié)議,這意味著每次客戶端檢索網(wǎng)頁時(shí),都要單獨(dú)打開一個(gè)服務(wù)器連接,因此服務(wù)器不會(huì)記錄下先前客戶端請(qǐng)求的任何信息。在這種情況下,Jsp利用servlet提供的HttpSession來識(shí)別用戶,存儲(chǔ)這個(gè)用戶的所有訪問信息。這就是session對(duì)象,其類型為javax.。默認(rèn)情況下,JSP允許會(huì)話跟蹤,一個(gè)新的HttpSession對(duì)象將會(huì)自動(dòng)地為新的客戶端實(shí)例化。禁止會(huì)話跟蹤需要顯式地關(guān)掉它,通過將page指令中session屬性值設(shè)為false來實(shí)現(xiàn)。
<%@ page session="false" %>
其代碼示例如下:
5、application對(duì)象
application對(duì)象是jsp中的全局變量,用于用戶間數(shù)據(jù)的共享,其類型為ServletContext。在從服務(wù)器啟動(dòng)到關(guān)閉的過程中,application對(duì)象一直存在。在任何地方對(duì)application對(duì)象進(jìn)行操作,都會(huì)影響到其它用戶的訪問。其代碼示例如下:
6、exception對(duì)象
exception對(duì)象是Jsp內(nèi)置的異常處理對(duì)象。其類型為java.lang.Throwable。代表JSP腳本中產(chǎn)生的錯(cuò)誤和異常,是JSP頁面機(jī)制的一部分。但是在JSP腳本中無須處理異常。所以,如果想使用jsp的exception對(duì)象,必須把頁面中的isErrorPage設(shè)為true。如下圖所示:
實(shí)際上,JSP腳本所包含的所有可能出現(xiàn)的異常都可以交給錯(cuò)誤處理頁面進(jìn)行處理。但是需要指定errorPage,如圖所示:
這樣的話,如果程序中出現(xiàn)什么異常,就可以直接使用exce()來打印出異常了。
7、page對(duì)象
page對(duì)象即為當(dāng)前jsp頁面的內(nèi)置對(duì)象,類似開java里面的this,為處理當(dāng)前請(qǐng)求時(shí),該頁面實(shí)現(xiàn)類的實(shí)例。在轉(zhuǎn)換后的Servlet類的代碼中,可以看到Object page = this。其類型為java.long.Object。page對(duì)象常以指令形式為Jsp頁面定義全局屬性。類型于:
<%@ page autoFlush = "false" %>
<%@ page buffer = "16kb" autoflush = "true" %>
<%@ page contentType = "text/html:charset=UTF-8" %>
8、pageContext對(duì)象
pageContext對(duì)象代表頁面上下文,其類型為javax.。用來代表整個(gè)JSP頁面。該對(duì)象主要用于訪問 JSP 之間的共享數(shù)據(jù),使用pageContext可以訪問page、request、session、application范圍的變量。JSP頁面中只需將pageContext對(duì)象傳遞給某個(gè)Java類的實(shí)例對(duì)象,在該Java對(duì)象中就可以訪問和調(diào)用其他隱式對(duì)象的功能了。在Jsp中,pageContext可以獲取到其它的內(nèi)置對(duì)象,雖然本身內(nèi)置對(duì)象在jsp中可以直接使用,但是在el表達(dá)式中卻不能直接使用,所以可以通過pageContext來獲取。
9、config對(duì)象
config對(duì)象代表當(dāng)前JSP配置信息,其類型為ServletConfig,config對(duì)象常用來獲取Servlet的初始化參數(shù)。例如:
<%=con()%>
<%=con("name")%>
三、Jsp內(nèi)置對(duì)象的使用范圍
在這些內(nèi)置對(duì)象中:
pageContext僅對(duì)當(dāng)前頁面有效,頁面跳轉(zhuǎn)后無效;
request對(duì)同一次請(qǐng)求有效,重定向后無效;
session對(duì)同一次會(huì)話有效,無論怎么跳轉(zhuǎn),都有效,關(guān)閉/切換瀏覽器后無效,從登錄到退出之間全部有效;
application 整個(gè)服務(wù)器運(yùn)行期間有效,切換瀏覽器也依然有效。除非服務(wù)器端重啟了服務(wù)。
以上就是Jsp內(nèi)置對(duì)象的使用方法,在平時(shí)的工作中,你會(huì)用到嗎?
1.《jsp入門教程看這里!Java Web程序員應(yīng)知應(yīng)會(huì):Jsp的內(nèi)置對(duì)象與應(yīng)用》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識(shí),僅代表作者本人觀點(diǎn),與本網(wǎng)站無關(guān),侵刪請(qǐng)聯(lián)系頁腳下方聯(lián)系方式。
2.《jsp入門教程看這里!Java Web程序員應(yīng)知應(yīng)會(huì):Jsp的內(nèi)置對(duì)象與應(yīng)用》僅供讀者參考,本網(wǎng)站未對(duì)該內(nèi)容進(jìn)行證實(shí),對(duì)其原創(chuàng)性、真實(shí)性、完整性、及時(shí)性不作任何保證。
3.文章轉(zhuǎn)載時(shí)請(qǐng)保留本站內(nèi)容來源地址,http://f99ss.com/gl/2494825.html