国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JSP > 正文

JBuilder2005實(shí)戰(zhàn)JSP之特殊頁面(5)

2019-11-18 19:19:12
字體:
供稿:網(wǎng)友

  歡迎頁面welcome.jsp

  當(dāng)用戶錄入正確的密碼后,switch.jsp控制JSP頁面導(dǎo)向welcome.jsp歡迎頁面,在這節(jié)里,我們來開發(fā)這個(gè)welcome.jsp頁面。因?yàn)閣elcome.jsp需要使用到一個(gè)第三方的標(biāo)簽庫,所以在開發(fā)welcome.jsp之前需要在JBuilder中作一些配置引入這個(gè)標(biāo)簽庫。

  將第三方標(biāo)簽庫配置到JBuilder中

  Apache開源組織提供了許多有用標(biāo)簽庫,歡迎頁面welcome.jsp需要使用一個(gè)來源于Apache的datetime標(biāo)簽庫,可以用這個(gè)標(biāo)簽庫在JSP中提供各種時(shí)間的顯示,下載的地址是:http://apache.justdn.org/jakarta/taglibs/datetime/binaries/jakarta-taglibs-datetime-1.0.1.zip

  標(biāo)簽庫一般包括兩個(gè)文件,其一是類包JAR文件,其二是以.tld為擴(kuò)展名的標(biāo)簽符描述文件。從下載的壓縮文檔中解壓后,我們將taglibs-datetime.jar和taglibs-datetime.tld文件放到<工程目錄>/datetimeTag目錄下。

  要在工程中使用第三方的標(biāo)簽庫,必須事先在JBuilder中配置這個(gè)標(biāo)簽庫,并在工程中引用它。配置標(biāo)簽庫和配置類庫相似,也是通過Configure Libraries對(duì)話框來完成。JBuilder類庫及標(biāo)簽庫都列在Configure Libraries對(duì)話框中左邊的樹中,類庫顯示為 圖標(biāo),而標(biāo)簽庫顯示為 圖標(biāo)。下面我們來將datetime標(biāo)簽庫配置到JBuilder中。

  1.Tools->Configure->Libraries->Configure Libraries對(duì)話框。

  點(diǎn)擊Configure Libraries對(duì)話框的左下角的Add...按鈕,彈出New Library Wizard對(duì)話框,如下圖所示:


圖 17新庫向?qū)?duì)話框

  在Name中給這個(gè)庫取一個(gè)名字:datetimeTag,按OK返回Configure Libraries對(duì)話框。

  2.指定標(biāo)簽庫文件。

  在返回Configure Libraries對(duì)話框后,datetimeTag節(jié)點(diǎn)出現(xiàn)在左邊的樹中,因?yàn)檫€沒有為其指定類庫文件,有別于其他節(jié)點(diǎn)顯示為顯目的紅色,點(diǎn)選datetimeTag并將Library Settings設(shè)置頁切換到Framework標(biāo)簽頁中,如下圖所示:


圖 18 切換到Framework中

  在Framework下拉框中選擇User-Defined JSP Tag Library選項(xiàng),點(diǎn)擊標(biāo)簽頁右下方的Add...按鈕,彈出Define New Tag Library對(duì)話框,如下圖所示:


圖 19 指定標(biāo)簽庫的描述文件

  在Define New Tag Library對(duì)話框中,點(diǎn)擊TLD file后的…按鈕,導(dǎo)航到<工程目錄>/datetimeTag/taglibs-datetime.tld文件中,確認(rèn)后JBuilder自動(dòng)填充其余的設(shè)置項(xiàng),一般不需要更改JBuilder這些自動(dòng)補(bǔ)充的設(shè)置。其中PRefix為這個(gè)標(biāo)簽庫指定了一個(gè)引用前綴。點(diǎn)擊OK按鈕返回Configure Libraries對(duì)話框,datetimeTag節(jié)點(diǎn)顯示為正常的顏色如下圖所示:


圖 20 正確配置標(biāo)簽庫后的效果

  點(diǎn)擊Configure Libraries對(duì)話框的OK按鈕完成datetime標(biāo)簽庫的配置。

  3.在當(dāng)前工程中引用這個(gè)新配置的標(biāo)簽庫。

  Project->Project Properties...->Paths->切換到Required Libraries標(biāo)簽頁中->點(diǎn)擊Add...按鈕從JBuilder類庫中選擇datetimeTag。配置成功后,Project Properties對(duì)話框如下所示:


圖 21 工程引用庫

  創(chuàng)建歡迎JSP頁面

  1.File->New…->W(wǎng)eb->雙擊JSP圖標(biāo),啟動(dòng)創(chuàng)建JSP向?qū)В付↗SP文件名為welcome,點(diǎn)擊Next到下一步。

  2.在welcome.jsp頁面中引用datetimeTag標(biāo)簽庫。

  在向?qū)У牡?步中允許你選擇JBuilder中的各種標(biāo)簽庫,我們?cè)谏弦还?jié)中配置的datetimeTag標(biāo)簽庫也出現(xiàn)在Tag Libraries列表中,如下圖所示:


圖 22 引用標(biāo)簽庫

  展開datetime Tag并勾選taglibs-datetime,按Next到一下步。

  3.引用在switch.jsp中放入session域的userBean對(duì)象。


圖 23 引用switch.jsp中放入session的userBean

  點(diǎn)擊Add Bean...選擇bookstore.User類,在ID欄中指定Bean的名字為ses_userBean,Scope欄中選擇session作用域。ses_userBean即是在switch.jsp為userBean所指定的名字,Web容器將根據(jù)這個(gè)名字到session中查找對(duì)象,如果找不到才創(chuàng)建bookstore.User對(duì)象,因?yàn)閣elcome.jsp在switch.jsp之后才被調(diào)用,所以除非session對(duì)期,否則都可以找到userBean對(duì)象。

  直接點(diǎn)擊Finish創(chuàng)建welcome.jsp文件,其代碼如下所示:

  代碼清單 15 welcome.jsp歡迎頁面

1. <%@ page contentType="text/html; charset=GBK" %>
2. <%@ taglib uri="http://jakarta.apache.org/taglibs/datetime-1.0" prefix="dt" %>
3. <html>
4. <head>
5. <title>
6. welcome
7. </title>
8. </head>
9. <jsp:useBean id="ses_userBean" scope="session" class="bookstore.User" />
10. <jsp:setProperty name="ses_userBean" property="*" />

11. <body bgcolor="#ffffff">
12. <h1>
13. JBuilder Generated JSP
14. </h1>
15. </body>
16. </html>

  在向?qū)У?步所引用的標(biāo)簽庫設(shè)置對(duì)應(yīng)第2行的引用標(biāo)簽庫聲明代碼。而在第3步中設(shè)定的Bean對(duì)應(yīng)第9~10行代碼,因?yàn)樵趙elcome.jsp中無需填充Bean的值,所以應(yīng)該手工去除第10行的代碼。

  下面我們?cè)趙elcome.jsp文件中引用datetime標(biāo)簽庫,用它生成一個(gè)當(dāng)前時(shí)間格式化串。打開welcone.jsp文件并切換到Source視圖頁中。首先清除<body></body>中JBuilder所產(chǎn)生的代碼,在<body></body>中輸入"<dt:",JBuilder將使用TagInsight功能顯示出這個(gè)標(biāo)簽庫中所有可用的標(biāo)簽項(xiàng),如下圖所示:

    
            圖 24 利用TagInsight錄入標(biāo)簽庫

  使用TagInsight可以非常方便地錄入標(biāo)簽庫中的可用標(biāo)簽,大大加速標(biāo)簽庫的代碼錄入并保證正確性。在welcome.jsp中我們使用標(biāo)簽庫獲得一個(gè)當(dāng)前的格式化時(shí)間串,此外我們還通過ses_userBean獲取用戶的名字。welcome.jsp的最終代碼如下所示:

  代碼清單 16 welcome.jsp 引用標(biāo)簽庫和Session對(duì)象

1. <%@page contentType="text/html; charset=GBK" errorPage="error.jsp"%>
2. <%@taglib uri="http://jakarta.apache.org/taglibs/datetime-1.0" prefix="dt"%>
3. <html>
4. <head>
5. <title>welcome</title>
6. </head>
7. <jsp:useBean id="ses_userBean" scope="session" class="bookstore.User"/>
8. <body bgcolor="#ffffff">你是
9. <%=ses_userBean.getUserName()%>,歡迎登錄。<br>
10. 現(xiàn)在的時(shí)間是<dt:表單at pattern="MM/dd/yyyy hh:mm"><dt:currentTime/></dt:表單at>
11. <br>點(diǎn)擊<a href="quit.jsp">這兒</a>退出系統(tǒng)

12. </body>
13. </html>

  此外,JBuilder將datetime標(biāo)簽庫描述文件taglibs-datetime.tld拷貝到WEB-INF下,并對(duì)web.xml文件動(dòng)了手腳,聲明taglibs-datetime.tld所在的地址:

  代碼清單 17 web.xml中聲明標(biāo)簽描述文件

1. <?xml version="1.0" encoding="UTF-8"?>
2. …
3. <web-app>
4. <taglib>
5. <taglib-uri>http://jakarta.apache.org/taglibs/datetime-1.0</taglib-uri>
6. <taglib-location>/WEB-INF/taglibs-datetime.tld</taglib-location>
7. </taglib>

8. </web-app>

  如上所示,web.xml的第4~7行,JBuilder自動(dòng)加入了datetime標(biāo)簽庫的描述文件,以便Web容器正確找到所需的信息。

  在編譯工程生成Web目錄時(shí),JBuilder會(huì)將datetime標(biāo)簽庫的JAR文件taglibs-datetime.jar拷貝到WEB-INF/lib目錄下。

  當(dāng)用戶登錄成功后,將轉(zhuǎn)向welcome.jsp頁面,其頁面效果如下圖所示:


圖 25 welcome.jsp效果頁面

  當(dāng)用戶點(diǎn)擊"這兒"的鏈接時(shí),將鏈接到quit.jsp,quit.jsp頁面負(fù)責(zé)清除session,清除session后,將引用session中的對(duì)象解綁并釋放資源。
 
  quit.jsp退出處理頁面

  由于HTTP協(xié)議以請(qǐng)求/響應(yīng)的方式工作,所以客戶端退出系統(tǒng)時(shí)需要主動(dòng)往Web服務(wù)器發(fā)送一個(gè)請(qǐng)求,通知Web服務(wù)器及時(shí)銷毀會(huì)話,否則Web服務(wù)器只會(huì)等到會(huì)話過期時(shí)才會(huì)銷毀它。

  我們用一個(gè)quit.jsp來處理用戶退出系統(tǒng)的操作,quit.jsp負(fù)責(zé)注銷session,及時(shí)釋放資源。

  ·注銷session。

  ·關(guān)閉瀏覽器窗口。

  其代碼如下所示:

1. <%@ page contentType="text/html; charset=GBK" %>
2. <%
3.  session.invalidate();
4. %>
5. <script language="javaScript" >
6.  window.opener = null;
7.  window.close();
8. </script>

  其中第3行負(fù)責(zé)注銷session,原先放入session的對(duì)象將解綁定,等待垃圾回收以釋放資源。對(duì)于本例而言,session中有一個(gè)名為ses_userBean的userBean對(duì)象(它是在switch.jsp中放入session的),調(diào)用session.invalidate()后,userBean從session中解綁定,它的valueUnbound()方法會(huì)被觸發(fā)調(diào)用,然后再等待垃圾回收。

  第5~8行是一段Javascript腳本程序,負(fù)責(zé)關(guān)閉窗口,如果網(wǎng)頁不是通過腳本程序打開的(window.open()),調(diào)用window.close()腳本關(guān)閉窗口前,必須先將window.opener對(duì)象置為null,如第6行所示,否則瀏覽器會(huì)彈出一個(gè)確定關(guān)閉的對(duì)話框,筆者發(fā)現(xiàn)這個(gè)問題困擾了不少的Web程序員,故特別指出。

  實(shí)戰(zhàn)經(jīng)驗(yàn):

  在用戶退出系統(tǒng)時(shí),需要注銷session,否則只有等到session在服務(wù)器中過期后,session對(duì)象才會(huì)被清除。假設(shè)一個(gè)session的不活動(dòng)最大時(shí)間為30分鐘(默認(rèn)的時(shí)間),如果不手工清除session對(duì)象,則當(dāng)一個(gè)用戶退出系統(tǒng)后再過30分鐘,這些對(duì)象所占用的系統(tǒng)資源才會(huì)被釋放。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 康平县| 哈巴河县| 汉源县| 新平| 皮山县| 昭平县| 海淀区| 吴堡县| 苏尼特右旗| 泽库县| 定结县| 江北区| 襄垣县| 汽车| 西藏| 淮南市| 都江堰市| 万宁市| 桓仁| 安吉县| 伊春市| 丰宁| 突泉县| 庆元县| 泰兴市| 高尔夫| 海宁市| 五大连池市| 高雄县| 滦平县| 尚义县| 寻甸| 修文县| 石狮市| 肃南| 伊春市| 大丰市| 伊川县| 望江县| 昌乐县| 明溪县|