<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

    因為口渴,上帝創造了水;
    因為黑暗,上帝創造了火;
    因為我需要朋友,所以上帝讓你來到我身邊
    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

    〖總在尋夢 所以苦痛〗

    常用鏈接

    留言簿(3)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    Hibernate在線

    Java友情

    Java認證

    linux經典

    OA系統

    Spring在線

    Structs在線

    專家專欄

    企業信息化

    大型設備共享系統

    工作流

    工作流產品

    網上購書

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    Struts 提供了一個強大的 HTML 標簽庫來幫助你構建 Web 應用程序。

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

    HTML 標簽庫主要用來顯示 HTML 元素,如果不用這種方法,你就必須用 HTML 標簽來指定它們。從表面上看,這個標簽庫很簡單。但是通過深入研究,我們就會發現它很強大。例如,它可以為我們在 HTML 表單的一個特定輸入元素中放置重點內容生成 JavaScript ,或為客戶端輸入驗證生成腳本。而且,你可以用它通過一行代碼來處理錯誤。然而,在將這個標簽庫用于你的 Struts 應用程序前,你需要做些簡單的準備工作。

    配置應用程序來運用標簽庫
    在運用 Struts HTML 標簽庫前,你需要通過三個步驟來配置一個 Struts 應用程序。

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

    ? <taglib>

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

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

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

    2. 確信將 struts-html.tld 文件復制到 WEB-INF 目錄中。你不用擔心標簽庫類文件,因為它們已經包含在 struts.jar 文件中了。

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

    運用一個自定義的標簽庫通常是很容易的:只要遵循前面講述的步驟就行了。然而,有些標簽庫包含一些原則,這些原則使我們在運用這些標簽庫時并不那么容易。 Struts HTML 標簽庫就是其中之一。有些標簽很簡單、很容易使用;然而,另外有些標簽則取決于 Struts 應用程序中的其它標簽或其它元素。

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

    HTML 標簽庫包含幾個很容易使用的獨立的標簽。下面講述幾個比較重要的標簽。

    <html> 標簽
    <html>
    標簽是 HTML 標簽庫中最容易的標簽。它有兩個屬性: locale xhtml ,兩者都不是必需的。下面的代碼選自一個運用 <html> 標簽的 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>

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

    <head>

    <title>Welcome</title>

    </head>

    <body>

    Hello World!

    </body>

    </html>

    注意, <html:html locale=“true”> 中的 locale 屬性在生成的 HTML 頁面中被轉換成了 lang=“en” 。生成的結果取決于 Struts 應用程序所位于的服務器的 locale 。如果你將應用程序部署到一個不同 locale 的服務器,你不需要改變代碼。 Locale 會自動調整。

    <base> 標簽
    <base>
    標簽顯示一個 HTML 元素,用一個 href 屬性表示所包含的 JSP 頁面的絕對位置。只有當這個標簽是內嵌在一個 head 標簽部分時,它才有效。例如這個 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>

    會轉換成以下形式:
    <html lang="en">

    <head>

    <title>Welcome</title>

    <base >

    </head>

    <body>

    Hello World!

    </body>
    </html>

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

    ?

    ?

    ?

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

    會轉換成:
    <img src="/myStrutsApp/logo.gif" height="50" width="200" alt="Company Logo">

    <link> 標簽
    <link>
    標簽會生成一個超鏈接。例如標簽:
    <html:link page="/index.html">Click here</html:link>
    會轉換成:
    <a href="/myStrutsApp6/index.html">Click here</a>

    <errors> 標簽
    <errors>
    標簽的易于使用性通常會掩蓋其真正的強大功能。通過一個簡單的 <html:errors/> 標簽,你就可以在一個 JSP 頁面上顯示完全自定義的錯誤信息。

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

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

    ?

    ?

    ?

    ?Struts HTML 標簽庫會使開發更容易、更快速。為了有效地運用這個標簽庫,你需要對標簽庫中的標簽很熟悉。在本系列文章的第一部分中,你學習了如何配置一個 Struts 應用程序來運用標簽庫,并對獨立的標簽有了總體的了解。
    在下面第二部分中,你將學習與 form 相關的標簽,講述了如何使用 Struts 提供的 form 相關的標簽。
    form 相關的標簽包括 <form> 標簽本身以及所有必須包含在其中的標簽。比如, <text> <password> 標簽就是和 form 相關的標簽,因為如果不把它們放到一個 form 中它們就沒有意義。

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

    例如,如果你有這樣一個 <form> 標簽: ?? <html:form action="/login" >

    那么你的 Struts 配置文件的 <action-mappings> 元素中必須有一個如下顯示為粗體的 <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>

    ? 這就是說一個 form 標簽是和 form bean 相關聯的。

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

    除了上面所講的屬性之外, <form> 標簽還有一些不是必須但加上更好的 次要 的屬性 。比如,你可以用 focus 屬性來生成 JavaScript ,它會 定焦 focus )到該 form 所包含的一個元素上。使用 focus 屬性時你需要給它指定元素的名稱。比如,以下代碼是定焦在第二個 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>

    該段代碼會被轉換成:
    <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> 標簽中 method 屬性的缺省值是 POST 。另外,有沒有看到這個標簽庫是如何建立 JavaScript 來定焦到 password 元素上的 ? 這也是該庫讓人著迷的地方之一。你不用擔心如何在客戶端進行編程,它會幫你自動生成。

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

    <text> 標簽
    <text>
    標簽用于生成一個文本的輸入區域。它必須包含和相關 form bean 中的相同屬性對應的 “property” 屬性。該標簽只有在嵌入到一個 <form> 標簽中時才有效。
    例如: <html:text property="userName"/>
    會被轉換成: <input type="text" name="userName" value="">

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

    <hidden> 標簽
    <hidden>
    標簽用于生成一個隱藏文本的輸入區域。它必須包含和相關 form bean 中的相同屬性對應的 “property” 屬性。該標簽只有在嵌入到一個 <form> 標簽中時才有效:
    例如: <html:hidden property="userName"/>
    會被轉換成 : <input type="hidden" name="userName" value="">

    <textarea> 標簽
    <textarea>
    標簽用于生成一個文本區元素( text area element )。它必須包含和相關 form bean 中的相同屬性對應的 “property” 屬性。

    比如:
    <html:textarea property="details" cols="80" rows="20" value="Enter details here"/>
    會被轉換成:
    <textarea name="details" cols="80" rows="20">Enter details here</textarea>

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

    會被轉換成這樣的 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> 標簽
    <checkbox>
    標簽用于顯示 checkbox 類型的輸入區域。比如:
    <html:checkbox property="notify"/>Please send me notification
    會被轉換成:
    <input type="checkbox" name="notify" value="on">Please send me notification

    <submit> 標簽
    <submit>
    標簽用于生成提交類型( type submit )的輸入區域。
    比如: <html:submit value="Login"/>
    會被轉換成: <input type="submit" value="Login">
    ?
    <reset>
    標簽
    <reset>
    標簽用于生成重置類型( type reset )的輸入區域。比如:
    <html:reset/>
    會被轉換成: <input type="reset" value="Reset">

    <option> 標簽
    <option>
    標簽用于顯示 select box 中的一個選項。參照下面的 <select> 標簽。

    <select> 標簽
    <select>
    標簽用于顯示一個包含零個或更多選項的 HTML 選擇元素。它必須被嵌入一個 <form> 標簽中才有效。下面這個例子將說明如何使用該標簽:
    <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>

    會被轉換成:
    <select name="color" size="3"><option value="r">red</option>
    ? <option value="g">green</option>
    ? <option value="b">blue</option>
    </select>

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

    ?

    在本文系列的第一部分中,你已經學習了如何配置 Struts 提供的 HTML 標簽庫以及獨立使用的標簽;在第二部分中你學習了和 form 相關的標簽;在第三部分中,你將學習如何在 Login 程序中使用 HTML 標簽庫。你可以點此下載該程序。如果你閱讀過關于 Struts 的系列文章(包含六個部分),你會發現這個 Longin 程序是上次我們討論過的 Login 程序的增強版。
      

     


      

    1. 應用程序目錄結構


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

     


      

    2. Login 頁面


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

     


      

    3. 主頁面


      配置文件
       Login 程序有兩個位于 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>

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


      

    4. 機密頁面


      注意在列表 2 中, <form-beans> 部分包含一個名為 loginForm form bean 。我在關于 Struts 系列文章的第五部分中曾介紹過 form bean
      
       WEB-INF 目錄中的最后一個文件是 struts-html.tld 文件,它是 HTML 標簽庫中的 TLD 文件。為了節省時間我將跳過對它的介紹,但你可以在 ZIP 文件中的 WEB-INF 目錄下找到它。
      
       Form
      該 form com.javapro.struts.LoginForm 類的形式顯示(見列表 3 )。注意粗體的部分:它通過傳入 “error.missing.userName” “error.missing.password” 字符串來舉例說明 ActionError 對象,這些字符串在消息資源中起關鍵字( key )的作用。
      
       Action
       Action 類分兩種: LoginAction (見列表 4 )和 LogoutAction (見列表 5 )。另外值得一提的是如何通過消息資源中的一個關鍵字來構建這個 ActionError 消息(在列表 4 中顯示為粗體)。
      
       HTML 標簽庫的使用
      列表 6 、列表 7 和列表 8 中分別包含了 JSP 文件。 login.jsp 頁面(見列表 6 )中顯示了如何在 HTML 庫中使用這些標簽(粗體部分)。我在本文系列的第一部分中介紹過這些標簽,但通過看它如何在真正的程序中運行,你會對它們有更深入的了解。
      
      消息資源
      如我在 配置文件 部分簡要介紹的那樣,在 WEB-INF/classes/com/javapro/struts 目錄下的 ApplicationResources.properties 文件中包含配對的 key/values ,它們會被加載到缺省的消息資源中去。 HTML 標簽庫中的 <errors> 標簽會在該消息資源中查找到自定義的錯誤消息。想知道它是如何出錯的,你可以試著用一個錯誤的用戶名或密碼來登錄,看看顯示的錯誤消息是什么。更改錯誤消息和編輯屬性文件一樣容易。看看如下的屬性文件: 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 文件,你會看到這些對象是如何被加載的。消息資源通過將程序的參數傳入 ActionServlet 來完成加載過程。在 ActionServlet 進行初始化時,它會將 package 文件夾中的 ApplicationResources.properties 屬性解析為缺省的消息資源。如果在資源中更改一個消息并重新加載程序,它就會在整個程序中顯示。在你的 Login 程序中,這個屬性文件包含一些程序的類中所使用的錯誤消息。
      
      本文介紹了如何在一個簡單的 Login 程序中使用 HTML 標簽庫。它對程序進行了詳細描述,包括視圖、配置文件、 form bean action 類以及用于 JSP 頁面的代碼。

    posted on 2006-04-19 16:52 ★yesjoy★ 閱讀(3075) 評論(1)  編輯  收藏 所屬分類: Structs學習

    FeedBack:
    # re: Struts提供的強大的HTML標簽庫總結[未登錄] 2015-08-20 13:45 哈哈
    是  回復  更多評論
      
    主站蜘蛛池模板: 成人免费一区二区三区在线观看| 免费人成激情视频在线观看冫| 国产一卡二卡3卡四卡免费 | 热99re久久免费视精品频软件| 久久丫精品国产亚洲av| 久久精品免费观看国产| 亚洲人成在线播放网站岛国| 久久狠狠躁免费观看2020| 亚洲国产综合专区电影在线| 亚欧免费一级毛片| 亚洲国产精品yw在线观看| 在线观看无码AV网站永久免费| 久久乐国产综合亚洲精品| 韩国免费三片在线视频| 真正全免费视频a毛片| 精品国产亚洲男女在线线电影| 最近中文字幕免费大全| 亚洲欧洲校园自拍都市| 最近的免费中文字幕视频| 美女免费视频一区二区三区| 亚洲日韩在线中文字幕第一页| 两个人看的www免费视频| 亚洲理论片在线观看| 天天看片天天爽_免费播放| 人妻仑刮八A级毛片免费看| 伊伊人成亚洲综合人网7777| 在线免费中文字幕| 亚洲欧美aⅴ在线资源| 国产亚洲老熟女视频| 亚洲免费在线观看视频| 国产成人不卡亚洲精品91| 亚洲精品乱码久久久久久久久久久久| 亚洲一区二区免费视频| 国产成人综合亚洲一区| 亚洲毛片在线观看| 国产成人aaa在线视频免费观看| 国产一精品一AV一免费| 亚洲人成未满十八禁网站| 久久久久亚洲精品中文字幕| 国产免费的野战视频| 一级毛片a免费播放王色|