<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 71  文章 - 15  trackbacks - 0
    <2015年8月>
    2627282930311
    2345678
    9101112131415
    16171819202122
    23242526272829
    303112345

    因?yàn)榭诳剩系蹌?chuàng)造了水;
    因?yàn)楹诎担系蹌?chuàng)造了火;
    因?yàn)槲倚枰笥眩陨系圩屇銇淼轿疑磉?br> Click for Shaanxi xi'an, Shaanxi Forecast
    ╱◥█◣
      |田|田|
    ╬╬╬╬╬╬╬╬╬╬╬
    If only I have such a house!
    〖總在爬山 所以艱辛〗
    Email:myesjoy@yahoo.com.cn
    NickName:yesjoy
    MSN:myesjoy@hotmail.com
    QQ:150230516

    〖總在尋夢(mèng) 所以苦痛〗

    常用鏈接

    留言簿(3)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    Hibernate在線

    Java友情

    Java認(rèn)證

    linux經(jīng)典

    OA系統(tǒng)

    Spring在線

    Structs在線

    專家專欄

    企業(yè)信息化

    大型設(shè)備共享系統(tǒng)

    工作流

    工作流產(chǎn)品

    網(wǎng)上購書

    搜索

    •  

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    Struts 提供了一個(gè)強(qiáng)大的 HTML 標(biāo)簽庫來幫助你構(gòu)建 Web 應(yīng)用程序。

    為了更容易、更快速地進(jìn)行開發(fā), Struts 提供了功能同其它 JSP 標(biāo)簽庫類似的五個(gè)標(biāo)簽庫,即: HTML Bean Logic Template Nested 。第一部分講述如何配置一個(gè) Struts 應(yīng)用程序來運(yùn)用這個(gè)標(biāo)簽庫,并介紹了第一組標(biāo)簽;第二部分講述了第二組標(biāo)簽; ?

    HTML 標(biāo)簽庫主要用來顯示 HTML 元素,如果不用這種方法,你就必須用 HTML 標(biāo)簽來指定它們。從表面上看,這個(gè)標(biāo)簽庫很簡(jiǎn)單。但是通過深入研究,我們就會(huì)發(fā)現(xiàn)它很強(qiáng)大。例如,它可以為我們?cè)?/span> HTML 表單的一個(gè)特定輸入元素中放置重點(diǎn)內(nèi)容生成 JavaScript ,或?yàn)榭蛻舳溯斎腧?yàn)證生成腳本。而且,你可以用它通過一行代碼來處理錯(cuò)誤。然而,在將這個(gè)標(biāo)簽庫用于你的 Struts 應(yīng)用程序前,你需要做些簡(jiǎn)單的準(zhǔn)備工作。

    配置應(yīng)用程序來運(yùn)用標(biāo)簽庫
    在運(yùn)用 Struts HTML 標(biāo)簽庫前,你需要通過三個(gè)步驟來配置一個(gè) Struts 應(yīng)用程序。

    1.????? 在部署描述符( web.xml 文件)中注冊(cè)標(biāo)簽庫:

    ? <taglib>

    ??? <taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>

    ??? <taglib-location>/WEB-INF/struts-html.tld</taglib-location>
    </taglib>

    上面的代碼就告訴了 servlet container 有關(guān) Struts HTML 標(biāo)簽庫的情況,以及在哪里可以找到標(biāo)簽庫的 TLD 文件。

    2. 確信將 struts-html.tld 文件復(fù)制到 WEB-INF 目錄中。你不用擔(dān)心標(biāo)簽庫類文件,因?yàn)樗鼈円呀?jīng)包含在 struts.jar 文件中了。

    3. 在運(yùn)用標(biāo)簽庫的每個(gè) JSP 頁面中,插入下面的 <taglib> 指示符:
    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
    另外,你也可以運(yùn)用 struts-html.tld 文件來學(xué)習(xí)它所支持的標(biāo)簽以及每個(gè)標(biāo)簽可以帶有哪些屬性。

    運(yùn)用一個(gè)自定義的標(biāo)簽庫通常是很容易的:只要遵循前面講述的步驟就行了。然而,有些標(biāo)簽庫包含一些原則,這些原則使我們?cè)谶\(yùn)用這些標(biāo)簽庫時(shí)并不那么容易。 Struts HTML 標(biāo)簽庫就是其中之一。有些標(biāo)簽很簡(jiǎn)單、很容易使用;然而,另外有些標(biāo)簽則取決于 Struts 應(yīng)用程序中的其它標(biāo)簽或其它元素。

    我將 HTML 標(biāo)簽庫中的標(biāo)簽大致分成了兩類:簡(jiǎn)單、容易使用的標(biāo)簽,我把它們稱為 獨(dú)立的標(biāo)簽 ,第二類是必須通過一個(gè) form 標(biāo)簽來使用的標(biāo)簽。我把第二類的標(biāo)簽簡(jiǎn)單地稱為與 form 相關(guān)的標(biāo)簽。本文主要講述獨(dú)立的標(biāo)簽,在本系列文章的 第二部分 我將講述與 form 相關(guān)的標(biāo)簽。

    HTML 標(biāo)簽庫包含幾個(gè)很容易使用的獨(dú)立的標(biāo)簽。下面講述幾個(gè)比較重要的標(biāo)簽。

    <html> 標(biāo)簽
    <html>
    標(biāo)簽是 HTML 標(biāo)簽庫中最容易的標(biāo)簽。它有兩個(gè)屬性: locale xhtml ,兩者都不是必需的。下面的代碼選自一個(gè)運(yùn)用 <html> 標(biāo)簽的 JSP 頁面:
    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>

    <html:html locale="true">

    <head>

    <title>Welcome</title>

    </head>

    <body>

    Hello World!

    </body>

    </html:html>

    注意,我們沒有用標(biāo)準(zhǔn)的 <html> 元素,而是用了 <html:html> 標(biāo)簽。其中第一個(gè) html 指的是前綴,第二個(gè)是 <html> 標(biāo)簽本身。而且我們也用了 locale 屬性。 JSP 頁面將顯示成:
    <html lang="en">

    <head>

    <title>Welcome</title>

    </head>

    <body>

    Hello World!

    </body>

    </html>

    注意, <html:html locale=“true”> 中的 locale 屬性在生成的 HTML 頁面中被轉(zhuǎn)換成了 lang=“en” 。生成的結(jié)果取決于 Struts 應(yīng)用程序所位于的服務(wù)器的 locale 。如果你將應(yīng)用程序部署到一個(gè)不同 locale 的服務(wù)器,你不需要改變代碼。 Locale 會(huì)自動(dòng)調(diào)整。

    <base> 標(biāo)簽
    <base>
    標(biāo)簽顯示一個(gè) HTML 元素,用一個(gè) href 屬性表示所包含的 JSP 頁面的絕對(duì)位置。只有當(dāng)這個(gè)標(biāo)簽是內(nèi)嵌在一個(gè) head 標(biāo)簽部分時(shí),它才有效。例如這個(gè) JSP 頁面:
    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>

    <html:html locale="true">

    <head>

    <title>Welcome</title>

    <html:base/>

    </head>

    <body>

    Hello World!

    </body>
    </html:html>

    會(huì)轉(zhuǎn)換成以下形式:
    <html lang="en">

    <head>

    <title>Welcome</title>

    <base >

    </head>

    <body>

    Hello World!

    </body>
    </html>

    <img> 標(biāo)簽
    <img>
    標(biāo)簽用來生成一個(gè) HTML <IMG> 標(biāo)簽。它最重要的屬性有:
    ·page
    :圖象文件相對(duì)于模塊的路徑;前面必須帶有一個(gè)斜線
    ·height
    :圖象的高度
    ·width
    :圖象的寬度
    ·alt
    :如果找不到圖象,顯示的文本

    ?

    ?

    ?

    例如:
    <html:img page="/logo.gif" height="50" width="200" alt="Company Logo"/>

    會(huì)轉(zhuǎn)換成:
    <img src="/myStrutsApp/logo.gif" height="50" width="200" alt="Company Logo">

    <link> 標(biāo)簽
    <link>
    標(biāo)簽會(huì)生成一個(gè)超鏈接。例如標(biāo)簽:
    <html:link page="/index.html">Click here</html:link>
    會(huì)轉(zhuǎn)換成:
    <a href="/myStrutsApp6/index.html">Click here</a>

    <errors> 標(biāo)簽
    <errors>
    標(biāo)簽的易于使用性通常會(huì)掩蓋其真正的強(qiáng)大功能。通過一個(gè)簡(jiǎn)單的 <html:errors/> 標(biāo)簽,你就可以在一個(gè) JSP 頁面上顯示完全自定義的錯(cuò)誤信息。

    這個(gè)標(biāo)簽檢查 Request 對(duì)象的屬性集合來查找一個(gè) reserved key 。如果它找到一個(gè) reserved key ,它就假設(shè)這個(gè) key 是一個(gè) String 、或是一個(gè) String 數(shù)組(它包含在模塊的 MessageResources 中查找的 message keys )、或是類型為 org.apache.struts.action.ActionErrors 的一個(gè)對(duì)象。

    如果在應(yīng)用程序資源中存在相應(yīng)的信息,那么就可以用下面這些可選的 message keys
    · errors.header
    :相應(yīng)的信息在錯(cuò)誤信息的單獨(dú)列表前顯示
    · errors.footer
    :相應(yīng)的信息在錯(cuò)誤信息的單獨(dú)列表后顯示
    · errors.prefix
    :相應(yīng)的信息在錯(cuò)誤信息的單獨(dú)列表前顯示
    · errors.suffix
    :相應(yīng)的信息在錯(cuò)誤信息的單獨(dú)列表后顯示

    ?

    ?

    ?

    ?Struts HTML 標(biāo)簽庫會(huì)使開發(fā)更容易、更快速。為了有效地運(yùn)用這個(gè)標(biāo)簽庫,你需要對(duì)標(biāo)簽庫中的標(biāo)簽很熟悉。在本系列文章的第一部分中,你學(xué)習(xí)了如何配置一個(gè) Struts 應(yīng)用程序來運(yùn)用標(biāo)簽庫,并對(duì)獨(dú)立的標(biāo)簽有了總體的了解。
    在下面第二部分中,你將學(xué)習(xí)與 form 相關(guān)的標(biāo)簽,講述了如何使用 Struts 提供的 form 相關(guān)的標(biāo)簽。
    form 相關(guān)的標(biāo)簽包括 <form> 標(biāo)簽本身以及所有必須包含在其中的標(biāo)簽。比如, <text> <password> 標(biāo)簽就是和 form 相關(guān)的標(biāo)簽,因?yàn)槿绻话阉鼈兎诺揭粋€(gè) form 中它們就沒有意義。

    <form> 標(biāo)簽
    <form>
    標(biāo)簽用于生成一個(gè) HTML form 。使用該標(biāo)簽時(shí)必須遵循許多規(guī)則。
    首先要遵循的規(guī)則是 <form> 標(biāo)簽中必須包含一個(gè) action 屬性,它是這個(gè)標(biāo)簽中唯一必需的屬性。如果不具備該屬性則 JSP 頁面會(huì)拋出一個(gè)異常。之后你必須給這個(gè) action 屬性指定一個(gè)有效值。一個(gè)有效值是指應(yīng)用程序的 Struts 配置文件中 <action-mappings> 元素里的任何一個(gè) <action> 子元素的訪問路徑。而且相應(yīng)的 <action> 元素中必須有一個(gè) name 屬性,它的值是 form bean 的名稱。

    例如,如果你有這樣一個(gè) <form> 標(biāo)簽: ?? <html:form action="/login" >

    那么你的 Struts 配置文件的 <action-mappings> 元素中必須有一個(gè)如下顯示為粗體的 <action> 元素:
    <action-mappings>
    ???? <action path="/login"
    ????? type="com.javapro.struts.LoginAction"?
    ????? name="loginForm"
    ????? scope="request"
    ????? input="/login.jsp">
    ????? <forward name="success" path="/mainMenu.jsp"/>
    ??? </action>
    ??? .
    ??? .
    ??? .
    ? </action-mappings>

    ? 這就是說一個(gè) form 標(biāo)簽是和 form bean 相關(guān)聯(lián)的。

    另一個(gè)要遵循的規(guī)則是: 任何包含在 <form> 中用來接收用戶輸入的標(biāo)簽( <text> <password> <hidden> <textarea> <radio> <checkbox> <select> )必須在相關(guān)的 form bean 中有一個(gè)指定的屬性值。比如,如果你有一個(gè)屬性值被指定為 “username” <text> 標(biāo)簽,那么相關(guān)的 form bean 中也必須有一個(gè)名為 “username” 的屬性。輸入 <text> 標(biāo)簽中的值會(huì)被用于生成 form bean userName 屬性。

    除了上面所講的屬性之外, <form> 標(biāo)簽還有一些不是必須但加上更好的 次要 的屬性 。比如,你可以用 focus 屬性來生成 JavaScript ,它會(huì) 定焦 focus )到該 form 所包含的一個(gè)元素上。使用 focus 屬性時(shí)你需要給它指定元素的名稱。比如,以下代碼是定焦在第二個(gè) Text 元素上的:

    <body>
    <html:form action="/login" focus="password">
    User Name: <html:text property="userName"/>
    <br>Password: <html:text property="password"/>
    <br><html:submit/>
    </html:form>
    </body>

    該段代碼會(huì)被轉(zhuǎn)換成:
    <body>
    <form name="loginForm" method="post" action="/myStrutsApp6/login.do">
    User Name: <input type="text" name="userName"? value="">
    <br>Password: <input type="text" name="password" value="">
    <br><input type="submit" value="Submit">
    </form>
    <script language="JavaScript"
    ?? type="text/javascript">
    ? <!--
    ?if (document.forms["loginForm"].elements["password"].type != "hidden")
    ??? document.forms["loginForm"].elements["password"].focus()
    ? // -->
    </script>

    </body>
    注意, <form> 標(biāo)簽中 method 屬性的缺省值是 POST 。另外,有沒有看到這個(gè)標(biāo)簽庫是如何建立 JavaScript 來定焦到 password 元素上的 ? 這也是該庫讓人著迷的地方之一。你不用擔(dān)心如何在客戶端進(jìn)行編程,它會(huì)幫你自動(dòng)生成。

    在運(yùn)行前面的例子時(shí)還要注意,你必須有一個(gè)包含 userName password 屬性的相關(guān) form 。你可以參考本文第三部分中的 Login 程序。

    <text> 標(biāo)簽
    <text>
    標(biāo)簽用于生成一個(gè)文本的輸入?yún)^(qū)域。它必須包含和相關(guān) form bean 中的相同屬性對(duì)應(yīng)的 “property” 屬性。該標(biāo)簽只有在嵌入到一個(gè) <form> 標(biāo)簽中時(shí)才有效。
    例如: <html:text property="userName"/>
    會(huì)被轉(zhuǎn)換成: <input type="text" name="userName" value="">

    <password> 標(biāo)簽
    <password>
    標(biāo)簽用于生成一個(gè)口令字( type password )的輸入?yún)^(qū)域。它必須包含和相關(guān) form bean 中的相同屬性對(duì)應(yīng)的 “property” 屬性。該標(biāo)簽只有在嵌入到一個(gè) <form> 標(biāo)簽中時(shí)才有效。該標(biāo)簽中的一個(gè)很重要的屬性是 “redisplay” ,它用于重新顯示以前輸入到這個(gè)區(qū)域中的值。該屬性的缺省值為 true 。然而,為了使 password 不能被重新顯示,你或許希望將該屬性的值設(shè)為 false
    例如: <html:password property="password" redisplay="false"/>
    會(huì)被轉(zhuǎn)換成 : <input type="password" name="password" value="">

    <hidden> 標(biāo)簽
    <hidden>
    標(biāo)簽用于生成一個(gè)隱藏文本的輸入?yún)^(qū)域。它必須包含和相關(guān) form bean 中的相同屬性對(duì)應(yīng)的 “property” 屬性。該標(biāo)簽只有在嵌入到一個(gè) <form> 標(biāo)簽中時(shí)才有效:
    例如: <html:hidden property="userName"/>
    會(huì)被轉(zhuǎn)換成 : <input type="hidden" name="userName" value="">

    <textarea> 標(biāo)簽
    <textarea>
    標(biāo)簽用于生成一個(gè)文本區(qū)元素( text area element )。它必須包含和相關(guān) form bean 中的相同屬性對(duì)應(yīng)的 “property” 屬性。

    比如:
    <html:textarea property="details" cols="80" rows="20" value="Enter details here"/>
    會(huì)被轉(zhuǎn)換成:
    <textarea name="details" cols="80" rows="20">Enter details here</textarea>

    <radio> 標(biāo)簽
    <radio>
    標(biāo)簽用于顯示一個(gè)單選按鈕( radio button )。它必須包含 “value” 屬性。比如這段代碼:
    <html:radio property="title" value="1"/>Mr.
    <html:radio property="title" value="2"/>Ms.
    <html:radio property="title" value="3"/>Dr.

    會(huì)被轉(zhuǎn)換成這樣的 HTML
    <input type="radio" name="title" value="1">Mr.
    <input type="radio" name="title" value="2">Ms.
    <input type="radio" name="title" value="3">Dr.

    <checkbox> 標(biāo)簽
    <checkbox>
    標(biāo)簽用于顯示 checkbox 類型的輸入?yún)^(qū)域。比如:
    <html:checkbox property="notify"/>Please send me notification
    會(huì)被轉(zhuǎn)換成:
    <input type="checkbox" name="notify" value="on">Please send me notification

    <submit> 標(biāo)簽
    <submit>
    標(biāo)簽用于生成提交類型( type submit )的輸入?yún)^(qū)域。
    比如: <html:submit value="Login"/>
    會(huì)被轉(zhuǎn)換成: <input type="submit" value="Login">
    ?
    <reset>
    標(biāo)簽
    <reset>
    標(biāo)簽用于生成重置類型( type reset )的輸入?yún)^(qū)域。比如:
    <html:reset/>
    會(huì)被轉(zhuǎn)換成: <input type="reset" value="Reset">

    <option> 標(biāo)簽
    <option>
    標(biāo)簽用于顯示 select box 中的一個(gè)選項(xiàng)。參照下面的 <select> 標(biāo)簽。

    <select> 標(biāo)簽
    <select>
    標(biāo)簽用于顯示一個(gè)包含零個(gè)或更多選項(xiàng)的 HTML 選擇元素。它必須被嵌入一個(gè) <form> 標(biāo)簽中才有效。下面這個(gè)例子將說明如何使用該標(biāo)簽:
    <html:select property="color" size="3">
    ? <html:option value="r">red</html:option>
    ? <html:option value="g">green</html:option>
    ? <html:option value="b">blue</html:option>
    </html:select>

    會(huì)被轉(zhuǎn)換成:
    <select name="color" size="3"><option value="r">red</option>
    ? <option value="g">green</option>
    ? <option value="b">blue</option>
    </select>

    在本文系列的第二部分,你學(xué)到了一些更重要的和 form 相關(guān)的標(biāo)簽。在使用這些標(biāo)簽之前,你必須依照一些規(guī)則以便正確地運(yùn)用它們。第三部分將講述如何在真正的程序中使用這些標(biāo)簽。

    ?

    在本文系列的第一部分中,你已經(jīng)學(xué)習(xí)了如何配置 Struts 提供的 HTML 標(biāo)簽庫以及獨(dú)立使用的標(biāo)簽;在第二部分中你學(xué)習(xí)了和 form 相關(guān)的標(biāo)簽;在第三部分中,你將學(xué)習(xí)如何在 Login 程序中使用 HTML 標(biāo)簽庫。你可以點(diǎn)此下載該程序。如果你閱讀過關(guān)于 Struts 的系列文章(包含六個(gè)部分),你會(huì)發(fā)現(xiàn)這個(gè) Longin 程序是上次我們討論過的 Login 程序的增強(qiáng)版。
      

     


      

    1. 應(yīng)用程序目錄結(jié)構(gòu)


      這個(gè) Login 程序是一個(gè)簡(jiǎn)單的 Struts 程序,它將顯示如何使用 HTML 標(biāo)簽庫,尤其是和 form 相關(guān)的標(biāo)簽和用于錯(cuò)誤處理的標(biāo)簽。其目錄結(jié)構(gòu)如圖 1 中所示。
      
      本文將介紹程序中每個(gè)類之間的關(guān)系以及它們所起的作用。注意,你必須自己將所有的庫文件復(fù)制到 WEB-INF/lib 目錄下;為了節(jié)省下載時(shí)間它們沒有被包含在 ZIP 文件中。
      
      視圖
       MVC 范例中有三種作為視圖的 JSP 頁面: login.jsp mainMenu.jsp viewSecret.jsp login.jsp 文件中包含一個(gè)用于用戶登錄的 form mainMenu.jsp 中顯示了兩個(gè)鏈接(注銷( log out )和查看公司機(jī)密),而 viewSecret.jsp 則用來顯示一條機(jī)密消息。
      
      這個(gè)程序的首頁面是一個(gè) Login 頁面,它是一個(gè)包含兩個(gè)輸入框( userName password )的 form (見圖 2 )。用戶被要求在這兩個(gè)輸入框中輸入正確的值。登錄成功之后程序會(huì)顯示 mainMenu.jsp 頁面,它包含兩個(gè)鏈接:一個(gè)是注銷,另一個(gè)是查看公司機(jī)密賬號(hào)(見圖 3 )。
      
      如果點(diǎn)擊了 注銷 鏈接,程序便會(huì)退出并重新顯示 Login 頁面。如果點(diǎn)擊了 查看機(jī)密 鏈接,則會(huì)顯示 viewSecret.jsp 頁面。如果注冊(cè)失敗,那么用戶會(huì)被重新引導(dǎo)到 Login 頁面以重新登錄。
      
      如果點(diǎn)擊了 注銷 鏈接,程序便會(huì)退出并重新顯示 Login 頁面。如果點(diǎn)擊了 查看機(jī)密 鏈接,則會(huì)顯示 viewSecret.jsp 頁面。如果注冊(cè)失敗,那么用戶會(huì)被重新引導(dǎo)到 Login 頁面以重新登錄。
      

     


      

    2. Login 頁面


      如果用戶輸入正確的用戶名和密碼,程序會(huì)建立一個(gè) session 對(duì)象,并會(huì)有一個(gè)名為 loggedIn 的屬性被添加到這個(gè) session 對(duì)象中去。只有當(dāng)程序能夠在用戶的 session 對(duì)象中查找到這個(gè) loggedIn 屬性時(shí),用戶才可以瀏覽 Main Menu 頁面和 Secret 頁面。所有缺少該屬性或無效的 session 對(duì)象都會(huì)迫使用戶登錄。在這個(gè)程序中,正確的用戶名是 “john” ,密碼是 123” 。這些值是程序中固定寫死的以避免需要連接到數(shù)據(jù)庫里或使用其他存儲(chǔ)來完成用戶驗(yàn)證。
      
      當(dāng)用戶注銷時(shí),他或她的 session 對(duì)象將失效,同時(shí) Longin 頁面會(huì)重新顯示。當(dāng)用戶點(diǎn)擊鏈接要查看公司機(jī)密時(shí),會(huì)彈出 viewSecret.jsp 頁面(見圖 4 )。
      

     


      

    3. 主頁面


      配置文件
       Login 程序有兩個(gè)位于 WEB-INF 目錄下的配置文件:作為部署描述符的 web.xml 文件(見列表 1 );以及作為 Struts 配置文件的 truts-config.xml 文件 (見列表 2 )。在列表 1 中,你需要特別注意 action servlet 配置中的 <init-param> 元素:
    <init-param>
       <param-name>application</param-name>
       <param-value>com.javapro.struts.ApplicationResources
       </param-value>
    </init-param>

      一個(gè) <init-param> 元素代表一個(gè)初始化參數(shù),它會(huì)被包含在傳送到 action servlet 中的 ServletConfig 對(duì)象里。帶有名為 “application” 的初始化參數(shù)對(duì) action servlet 來說具有特殊的意義:它定義了一個(gè)會(huì)被加載到缺省消息資源( message resource )中的屬性文件。(我將在 消息資源 部分介紹這個(gè)屬性文件)。在這個(gè)程序中,該屬性文件被用于存貯整個(gè)程序中的錯(cuò)誤消息。
      
      部署描述符中需要注意的第二個(gè)地方是的 <taglib> 元素,它包含 <taglib-uri> <taglib-location> 元素。基本上, <taglib> 元素是用來告訴 servlet 容器如何使用一個(gè)標(biāo)簽庫的,該標(biāo)簽庫的 TLD 文件可以在 <taglib-location> 元素指定的位置找到。
      


      

    4. 機(jī)密頁面


      注意在列表 2 中, <form-beans> 部分包含一個(gè)名為 loginForm form bean 。我在關(guān)于 Struts 系列文章的第五部分中曾介紹過 form bean
      
       WEB-INF 目錄中的最后一個(gè)文件是 struts-html.tld 文件,它是 HTML 標(biāo)簽庫中的 TLD 文件。為了節(jié)省時(shí)間我將跳過對(duì)它的介紹,但你可以在 ZIP 文件中的 WEB-INF 目錄下找到它。
      
       Form
      該 form com.javapro.struts.LoginForm 類的形式顯示(見列表 3 )。注意粗體的部分:它通過傳入 “error.missing.userName” “error.missing.password” 字符串來舉例說明 ActionError 對(duì)象,這些字符串在消息資源中起關(guān)鍵字( key )的作用。
      
       Action
       Action 類分兩種: LoginAction (見列表 4 )和 LogoutAction (見列表 5 )。另外值得一提的是如何通過消息資源中的一個(gè)關(guān)鍵字來構(gòu)建這個(gè) ActionError 消息(在列表 4 中顯示為粗體)。
      
       HTML 標(biāo)簽庫的使用
      列表 6 、列表 7 和列表 8 中分別包含了 JSP 文件。 login.jsp 頁面(見列表 6 )中顯示了如何在 HTML 庫中使用這些標(biāo)簽(粗體部分)。我在本文系列的第一部分中介紹過這些標(biāo)簽,但通過看它如何在真正的程序中運(yùn)行,你會(huì)對(duì)它們有更深入的了解。
      
      消息資源
      如我在 配置文件 部分簡(jiǎn)要介紹的那樣,在 WEB-INF/classes/com/javapro/struts 目錄下的 ApplicationResources.properties 文件中包含配對(duì)的 key/values ,它們會(huì)被加載到缺省的消息資源中去。 HTML 標(biāo)簽庫中的 <errors> 標(biāo)簽會(huì)在該消息資源中查找到自定義的錯(cuò)誤消息。想知道它是如何出錯(cuò)的,你可以試著用一個(gè)錯(cuò)誤的用戶名或密碼來登錄,看看顯示的錯(cuò)誤消息是什么。更改錯(cuò)誤消息和編輯屬性文件一樣容易。看看如下的屬性文件: errors.header=<b>Error(s)!!!</b><ul>
    errors.footer=</ul><hr>

    error.missing.userName=<li>A user name was not found.</li>
    error.missing.password=<li>A password was not found.</li>
    error.login.failed=<li>Incorrect user name and/or password.</li>

      如果你檢查了程序的 web.xml 文件,你會(huì)看到這些對(duì)象是如何被加載的。消息資源通過將程序的參數(shù)傳入 ActionServlet 來完成加載過程。在 ActionServlet 進(jìn)行初始化時(shí),它會(huì)將 package 文件夾中的 ApplicationResources.properties 屬性解析為缺省的消息資源。如果在資源中更改一個(gè)消息并重新加載程序,它就會(huì)在整個(gè)程序中顯示。在你的 Login 程序中,這個(gè)屬性文件包含一些程序的類中所使用的錯(cuò)誤消息。
      
      本文介紹了如何在一個(gè)簡(jiǎn)單的 Login 程序中使用 HTML 標(biāo)簽庫。它對(duì)程序進(jìn)行了詳細(xì)描述,包括視圖、配置文件、 form bean action 類以及用于 JSP 頁面的代碼。

    posted on 2006-04-19 16:52 ★yesjoy★ 閱讀(3076) 評(píng)論(1)  編輯  收藏 所屬分類: Structs學(xué)習(xí)

    FeedBack:
    # re: Struts提供的強(qiáng)大的HTML標(biāo)簽庫總結(jié)[未登錄] 2015-08-20 13:45 哈哈
    主站蜘蛛池模板: 中文字幕亚洲免费无线观看日本| 最近中文字幕无免费| 亚洲高清无码综合性爱视频| 综合偷自拍亚洲乱中文字幕| 国产免费av片在线播放| 久久精品国产亚洲AV电影网| 在线观看免费精品国产| 亚洲国产区男人本色| 国产在线ts人妖免费视频| 在线观看国产一区亚洲bd| 国产乱子伦精品免费女| 美国免费高清一级毛片| 亚洲精品高清在线| 亚洲一级片免费看| 亚洲人成亚洲人成在线观看 | 99视频全部免费精品全部四虎 | 国产卡二卡三卡四卡免费网址| 亚洲伊人久久大香线蕉在观| 久久精品免费一区二区喷潮 | 久久免费福利视频| 亚洲综合国产精品| 国产成人精品免费视频网页大全 | 99视频精品全部免费观看| 91在线亚洲精品专区| 国内精自视频品线六区免费| 亚洲偷自精品三十六区| 日本v片免费一区二区三区| 直接进入免费看黄的网站| 亚洲精品视频在线看| 免费看一区二区三区四区| 久久精品国产亚洲AV无码偷窥| 88av免费观看| 亚洲人成网站色在线观看| 国产精品免费视频网站| 人人爽人人爽人人片av免费| 亚洲日韩小电影在线观看| 91成人在线免费观看| 亚洲 欧洲 自拍 另类 校园| 亚洲成?v人片天堂网无码| 最新久久免费视频| 亚洲第一成年人网站|