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

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

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

    隨筆 - 312, 文章 - 14, 評(píng)論 - 1393, 引用 - 0
    數(shù)據(jù)加載中……

    Struts1.x系列教程(4):標(biāo)簽庫(kù)概述與安裝

    本文為原創(chuàng),如需轉(zhuǎn)載,請(qǐng)注明作者和出處,謝謝!

    Struts 2系列教程》
     

    上一篇:Struts1.x系列教程(3):屬性(資源)文件亂碼問(wèn)題的解決之道


        Struts的整個(gè)視圖層(就是MVC模式中的View層)是由Struts的定制標(biāo)簽(或者稱(chēng)為定制動(dòng)作)和客戶(hù)端代碼(JavascriptHTML)實(shí)現(xiàn)的。這些Struts標(biāo)簽被寫(xiě)在JSP頁(yè)面中,用于生成客戶(hù)端代碼、進(jìn)行邏輯判斷等工作,使用Struts標(biāo)簽可以盡量避免直接在JSP頁(yè)面中直接使用Java代碼,以使得JSP頁(yè)面更容易編寫(xiě)和維護(hù)。

    一、Struts1.x標(biāo)簽庫(kù)概述


    Struts
    的標(biāo)簽庫(kù)分為如下五類(lèi):

    1. HTML標(biāo)簽庫(kù)

    HTML標(biāo)簽庫(kù)中的定制標(biāo)簽一般和HTML中的tag是一一對(duì)應(yīng)。如HTML中的<form>、各種類(lèi)型的<input>HTML標(biāo)簽庫(kù)中都有定制標(biāo)簽和其對(duì)應(yīng)。HTML標(biāo)簽庫(kù)的目的是將視圖層的組件和控制層連接起來(lái)(事實(shí)上,不使用HTML標(biāo)簽庫(kù)中的定制標(biāo)簽也可以完成同樣的工作,只是需要寫(xiě)更多的代碼)。

    2. Bean標(biāo)簽庫(kù)

    Bean標(biāo)簽庫(kù)中的定制標(biāo)簽主要用來(lái)向客戶(hù)端輸出文本信息。那么Struts為什么要單獨(dú)提供一個(gè)標(biāo)簽庫(kù)來(lái)向客戶(hù)端輸出文本信息呢?原因有兩個(gè):

    1. Struts提供國(guó)際化支持(也就是說(shuō)可以從屬性文件中讀取文本信息,并將其輸出到客戶(hù)端)。

    2. 為了避免直接使用Java代碼獲得存儲(chǔ)在requestsession對(duì)象中的內(nèi)容。

    3. Logic標(biāo)簽庫(kù)

    為了避免在JSP頁(yè)面中直接使用Java代碼進(jìn)行邏輯判斷和循環(huán)操作。Logic標(biāo)簽庫(kù)提供了一組標(biāo)簽用于在不使用Java代碼的情況下也可以完成同樣的工作。而且使用標(biāo)簽進(jìn)行邏輯判斷和循環(huán)操作要比使用Java代碼更容易理解和維護(hù)。

    4. Nested標(biāo)簽庫(kù)

    這個(gè)標(biāo)簽庫(kù)中的標(biāo)簽有來(lái)顯示form或?qū)ο笾械?#8220;nested”屬性。

    5. Tiles標(biāo)簽庫(kù)

        這個(gè)標(biāo)簽庫(kù)的標(biāo)簽允許我們?yōu)橐晥D層建立布局(layout)。

       
    Struts的標(biāo)簽庫(kù)中有一些標(biāo)簽和JSTL有一定的重合,如Logic標(biāo)簽庫(kù)的邏輯判斷標(biāo)簽。但是JSTL要求Servlet容器要符合JSP 2.0規(guī)范,否則JSTL無(wú)法正常工作。這對(duì)于那么運(yùn)行在較低版本的Servleet容器中的程序就無(wú)法享受JSTL給我們帶來(lái)的強(qiáng)大的功能。但Struts標(biāo)簽卻沒(méi)這個(gè)要求。因此,如果我們的Web程序中使用了Struts,建議盡量使用Struts標(biāo)簽庫(kù)中的標(biāo)簽,除非能保證Web應(yīng)用程序的運(yùn)行環(huán)境都支持JSP 2.0規(guī)范。

    二、安裝和聲明Struts標(biāo)簽


       
    由于在MyEclipse中已經(jīng)帶了Struts相應(yīng)的jar包,因此,使用MyEclipse來(lái)開(kāi)發(fā)基于StrutsWeb應(yīng)用程序就無(wú)需再安裝Struts了。如果讀者想使用其他的Struts版本,可以到http://struts.apache.org/去下載。

        Struts標(biāo)簽庫(kù)的聲明和JSTL類(lèi)似,它們都需要使用taglib指令。其實(shí)在MyEclipse中我們根本不需要記憶如何來(lái)聲明Struts標(biāo)簽,因此,如果使用MyEclipse的高級(jí)JSP模板建立JSP頁(yè)面,MyEclipse就會(huì)自動(dòng)將聲明Struts標(biāo)簽的語(yǔ)句加到了JSP頁(yè)面中。在打開(kāi)高級(jí)JSP模板后,在“Template to use”下拉列表框中選擇“Standard JSP using Struts 1.2/1.3,然后點(diǎn)擊“Finish”按鈕建立一個(gè)JSP頁(yè)面。打開(kāi)這個(gè)剛建立的JSP頁(yè)面,我們會(huì)在page指令的下面看到四條tablib指令,其中Nested標(biāo)簽庫(kù)并未自動(dòng)加入,如果JSP頁(yè)面中使用了Nested標(biāo)簽庫(kù)中的標(biāo)簽,就需要我們手工加入Nested標(biāo)簽庫(kù)的定義,Struts標(biāo)簽庫(kù)的聲明代碼如下:

      <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
      
    <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
      
    <%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
      
    <%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>
      <%-- JSP高級(jí)模板并未加入Nested標(biāo)簽庫(kù)聲明,需要手工加入--%>
      <%@ taglib uri="http://struts.apache.org/tags-nested" prefix="nested" %>

        在上面的Struts標(biāo)簽庫(kù)的聲明中,taglib標(biāo)簽的prefix屬性值可以是任何字符串(但不同的標(biāo)簽庫(kù)的prefix的值不同相同),但建議按著上面代碼的聲明語(yǔ)句中的prefix屬性值來(lái)聲明相應(yīng)的Struts標(biāo)簽庫(kù)。

        還有一點(diǎn)需要注意,taglib指令的uri屬性除了使用在.tld文件中定義的uri值來(lái)定位標(biāo)簽庫(kù)外,還可以直接使用.tld文件的相對(duì)路徑來(lái)定位。在使用MyEclipse將一個(gè)Web工程加入Struts特性后,會(huì)自動(dòng)在WEB-INF目錄中加入如下五個(gè)文件:

    1.       struts-bean.tld:用于聲明Bean標(biāo)簽庫(kù)中標(biāo)簽的tld文件。

    2.       struts-html.tld:用于聲明HTML標(biāo)簽庫(kù)中標(biāo)簽的tld文件。

    3.       struts-logic.tld:用于聲明Logic標(biāo)簽庫(kù)中標(biāo)簽的tld文件。

    4.       struts-tiles.tld:用于聲明Tiles標(biāo)簽庫(kù)中標(biāo)簽的tld文件。

    5.       struts-nested.tld:用于聲明Nested標(biāo)簽庫(kù)中標(biāo)簽的tld文件。

    因此,也可以使用如下的代碼來(lái)聲明Struts標(biāo)簽。

      <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>
      
    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
      
    <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>
      
    <%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles"%>
      
    <%-- JSP高級(jí)模板并未加入Nested標(biāo)簽庫(kù)聲明,需要手工加入--%>
      
    <%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested"%>

    其中WEB-INF前面的“/”表示Web根目錄。感興趣的讀者也可以打開(kāi)這些.tld文件,查看其中的內(nèi)容。也可以將這些.tld文件中的<uri>標(biāo)簽的內(nèi)容改為其他的內(nèi)容,如將struts-bean.tld文件中的<uri>標(biāo)簽的內(nèi)容改為struts-bean,那么就可以使用如下的語(yǔ)句來(lái)聲明Bean標(biāo)簽庫(kù)了:

    <%@ taglib uri="struts-bean" prefix="bean"%>

        但要注意,要想使修改生效,需要重啟Tomcat或是重新發(fā)布當(dāng)前的Web應(yīng)用程序。

    下一篇:
    Struts1.x系列教程(5):HTML標(biāo)簽庫(kù)





    Android開(kāi)發(fā)完全講義(第2版)(本書(shū)版權(quán)已輸出到臺(tái)灣)

    http://product.dangdang.com/product.aspx?product_id=22741502



    Android高薪之路:Android程序員面試寶典 http://book.360buy.com/10970314.html


    新浪微博:http://t.sina.com.cn/androidguy   昵稱(chēng):李寧_Lining

    posted on 2009-01-15 11:53 銀河使者 閱讀(4995) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): javaweb 原創(chuàng)struts1.x

    主站蜘蛛池模板: 亚洲国产精品成人网址天堂| 911精品国产亚洲日本美国韩国 | 222www免费视频| 亚洲国产激情在线一区| 又色又污又黄无遮挡的免费视| 免费国产污网站在线观看不要卡| 免费一级毛片不卡在线播放| 日本一区午夜艳熟免费| 亚洲综合中文字幕无线码| 亚洲一区二区三区在线播放| 久久精品国产免费观看 | 精品国产污污免费网站aⅴ| 亚洲乱理伦片在线观看中字| 国产亚洲精品国产| 国产色爽免费视频| 99久久精品免费精品国产| 国产成人综合久久精品亚洲| 亚洲综合激情视频| 亚洲精品无码99在线观看 | 美女被艹免费视频| 亚洲最大的视频网站| 国产午夜亚洲精品国产成人小说| 妻子5免费完整高清电视| 全黄大全大色全免费大片| 亚洲熟妇久久精品| 亚洲综合色丁香麻豆| 亚洲日韩中文字幕在线播放| 国产免费小视频在线观看| 日本zzzzwww大片免费| 黄页免费在线观看| eeuss影院免费92242部| 亚洲AV永久无码精品一福利| 亚洲美女视频一区| 亚洲VA中文字幕无码一二三区| 亚洲?V无码成人精品区日韩| 在线精品免费视频| 最新欧洲大片免费在线| 57pao国产成永久免费视频| 成全视频免费观看在线看| 国产免费A∨在线播放| 羞羞网站免费观看|