官术网_书友最值得收藏!

4.7 其他JSP內(nèi)置對(duì)象

除了以上介紹的5種常見的內(nèi)置對(duì)象外,也經(jīng)常使用其他內(nèi)置對(duì)象,本節(jié)分別介紹它們的方法和應(yīng)用。

4.7.1 pageContext對(duì)象

pageContext對(duì)象衍生于javax.servlet.jsp.PageContext類,該對(duì)象可以得到當(dāng)前頁面中所有其他的JSP隱含對(duì)象,如getRequest()、getResponse()、getOut()和getSesison()等,并提供了處理JSP各個(gè)對(duì)象與屬性的方法。

pageContext對(duì)象用于訪問頁面有效屬性的方法及對(duì)應(yīng)的說明,如表4-8所示。

表4-8 pageContext對(duì)象訪問頁面內(nèi)有效屬性的方法

pageContext對(duì)象訪問所有范圍的屬性操作與上面的方法類似,只是多了一個(gè)輸入?yún)?shù),例如設(shè)置變量值可以用setAttribute(String name, Object obj, int scope),其中,scope取值可以為PAGE_SCOPE、REQUEST_SCOPE、SESSION_SCOPE和APPLICATION_SCOPE,分別代表頁內(nèi)有效、請(qǐng)求有效、會(huì)話有效和應(yīng)用有效。pageContext對(duì)象還可以實(shí)現(xiàn)頁面重定向和包含頁面等功能。

【例4-18】創(chuàng)建pagecontext1.jsp和pagecontex2.jsp頁面,驗(yàn)證屬性的作用域。

pagecontext1.jsp的代碼如下:

在瀏覽器中輸入http://localhost:8080/ch04//other/pagecontext1.jsp?name=test向pagecontext1.jsp傳遞參數(shù),運(yùn)行結(jié)果如圖4-36所示。

圖4-36 pagecontext1.jsp的運(yùn)行結(jié)果

pagecontex2.jsp的代碼如下:

通過超級(jí)鏈接跳轉(zhuǎn)到pagecontext2.jsp查看顯示結(jié)果,如圖4-37所示。

圖4-37 跳轉(zhuǎn)到pagecontext2.jsp的運(yùn)行結(jié)果

通過比較圖4-36和圖4-37,可以看出各屬性的作用域。關(guān)閉瀏覽器,直接打開pagecontext2.jsp,結(jié)果會(huì)看到如圖4-38所示。

圖4-38 直接運(yùn)行pagecontext2.jsp的結(jié)果

由此得出如下結(jié)論:

pageContext.setAtrribute("useName",name)設(shè)置的屬性在當(dāng)前頁面有效。

pageContext.getSession().setAtrribute("session Value",name)設(shè)置的屬性在session中有效。

pageContext.getServletContext().setAttribute("sharevalue",name)設(shè)置的屬性是對(duì)所有頁面共享的。

4.7.2 config對(duì)象

config對(duì)象是類javax.servlet.ServletConfig的一個(gè)對(duì)象,它標(biāo)識(shí)Servlet的配置。config對(duì)象主要用來取得服務(wù)器的配置信息,在JSP頁面通過JSP Container進(jìn)行初始化時(shí)被傳遞。使用config對(duì)象,在修改需要在Web服務(wù)器中處理的變量時(shí),不需要逐一修改JSP文件,而只需修改相應(yīng)屬性文件的內(nèi)容,這樣就大大簡化了網(wǎng)絡(luò)維護(hù)工作,而且能夠避免由于忘記修改一些文件而造成的錯(cuò)誤。config對(duì)象的常用方法及對(duì)應(yīng)的說明如表4-9所示。

表4-9 config對(duì)象的常用方法及說明

【例4-19】創(chuàng)建config.jsp頁面,利用config對(duì)象的方法,使用Servlet配置的初始值。

前面【例4-16】所示的計(jì)數(shù)器有一個(gè)缺陷,就是每當(dāng)應(yīng)用服務(wù)器關(guān)閉后再啟動(dòng)時(shí),計(jì)數(shù)器就會(huì)從0開始重新計(jì)數(shù)。解決這個(gè)問題的辦法就是在應(yīng)用服務(wù)器死機(jī)后設(shè)置計(jì)數(shù)的初始值。

config.jsp的代碼如下:

在config.jsp中利用config.getInitParameter("counter")方法獲取Web服務(wù)器上初始參數(shù)counter的值。通過web.xml文件設(shè)置初始參數(shù)。

web.xml的代碼如下:

從上面的配置可以看出,counter的初始值是1000,并且為config.jsp做了一個(gè)映射。運(yùn)行這個(gè)JSP頁面,在瀏覽器中輸入http://localhost:8080/ch04/other/config_counter,結(jié)果如圖4-39所示。

圖4-39 config.jsp運(yùn)行及刷新后的結(jié)果

注意

這里必須輸入http://localhost:8080/ch04/other/config_counter。如果在瀏覽器里使用http://localhost:8080/ch04/other/config.jsp來訪問,那么不能得到counter的參數(shù)。原因是當(dāng)通過前一種方式訪問config.jsp時(shí),它是作為一個(gè)Servlet組件來運(yùn)行的,而后者不一樣。有關(guān)Servlet的內(nèi)容請(qǐng)參考第10章。

【例4-20】利用config對(duì)象的方法,使用Servlet配置的多個(gè)初始值。

homepage.jsp的代碼如下:

通過web.xml文件設(shè)置初始參數(shù),增加如下代碼:

從上面的配置可以看出,email、phone、qq的初始值是分別是service@zzu.edu.cn、0371-63888069、12345,并且為homepage.jsp做了一個(gè)映射。運(yùn)行這個(gè)JSP頁面,在瀏覽器中輸入http://localhost:8080/ch04/homepage.jsp,結(jié)果如圖4-40所示。

圖4-40 homepage.jsp運(yùn)行的結(jié)果

4.7.3 page對(duì)象

page對(duì)象代表了正在運(yùn)行的由JSP文件產(chǎn)生的類對(duì)象,此對(duì)象在JSP中并不常用,用戶只需了解其意義即可。

page對(duì)象是指向當(dāng)前JSP程序本身的對(duì)象,有點(diǎn)像類中的this。page對(duì)象其實(shí)是java.lang.Object類的實(shí)例對(duì)象,它可以使用Object類的方法,如hashCode()、toString()等方法。page對(duì)象在JSP程序中的應(yīng)用不是很廣泛,但是java.lang.Object類還是十分重要的,因?yàn)镴SP內(nèi)置對(duì)象的很多方法的返回類型是Object,需要用到Object類的方法,讀者可以參考相關(guān)的文檔,這里就不詳細(xì)介紹。

4.7.4 exception對(duì)象

exception對(duì)象是類java.lang.Throwable的一個(gè)對(duì)象,是為JSP提供用于處理程序運(yùn)行錯(cuò)誤的異常對(duì)象,可以配合page指令一起使用。參考【例3-10】,通過指定某一個(gè)頁面為錯(cuò)誤處理頁面,把所有的錯(cuò)誤都集中到那個(gè)頁面進(jìn)行處理,可以使整個(gè)系統(tǒng)的健壯性得到加強(qiáng),也可以使程序的流程更加簡單明晰。exception對(duì)象的常用方法及對(duì)應(yīng)的說明如表4-10所示。

表4-10 exception對(duì)象的常用方法及說明

注意

必須在isErrorPage="true"的情況下才可以使用exception對(duì)象。

主站蜘蛛池模板: 手游| 开化县| 镶黄旗| 招远市| 牙克石市| 响水县| 湘潭县| 贵阳市| 吉林市| 武安市| 黎平县| 北流市| 安乡县| 浮山县| 武威市| 高台县| 嘉义县| 九龙县| 阜阳市| 丹江口市| 从化市| 图片| 百色市| 丰城市| 肇源县| 万宁市| 霍邱县| 朝阳区| 佛教| 铜陵市| 华亭县| 三明市| 郓城县| 永川市| 龙里县| 和林格尔县| 顺昌县| 泰和县| 黑山县| 柏乡县| 田阳县|