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

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

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

    海鷗航際

    JAVA站
    posts - 11, comments - 53, trackbacks - 1, articles - 102
    本篇文章簡(jiǎn)單地介紹一下在struts中使用tiles的問題。

    1、tiles框架簡(jiǎn)介:

    大家在編程實(shí)踐中都會(huì)對(duì)代碼重用有一些切身體會(huì),Web頁(yè)面的制作當(dāng)然也不例外。比如:做一個(gè)網(wǎng)站,大部分頁(yè)面都是由頁(yè)頭、主體頁(yè)及版權(quán)頁(yè)組成。其中,頁(yè)頭及版權(quán)頁(yè)的內(nèi)容是不變的,而每頁(yè)的主體內(nèi)容頁(yè)則是不相同的。根據(jù)代碼重用的要求,我們不應(yīng)該在每頁(yè)重寫頁(yè)頭及版權(quán)頁(yè)的代碼。Jsp也的確給我們提供了靜態(tài)和動(dòng)態(tài)包含的方式讓我們來重用這些代碼,也就是通過

    <%@ include file=…%>




    <jsp:include page=…/>


    的形式來達(dá)到代碼重用的目的。但不幸的是:無論采用上述那種形式,都存在一些不盡如人意的地方。如,你如果用這些方式從事過國(guó)際化編程,你將會(huì)為字符集的問題搞得無所適從。為了解決這些問題,一個(gè)名為tiles的框架應(yīng)運(yùn)而生。所謂tile,其實(shí)就是網(wǎng)頁(yè)中的一個(gè)區(qū)域。Tiles框架有如下一些特點(diǎn):

    具有模板能力

    能動(dòng)態(tài)構(gòu)建和裝載頁(yè)面

    屏幕定義

    對(duì)tile和布局的重用支持

    支持國(guó)際化

    從tiles框架的發(fā)展歷史來看,它開始并不是struts的組成部分。正如我們?cè)诒鞠盗械牡谝黄f的那樣:"它對(duì)其他技術(shù)和框架顯示出很好的融合性"。現(xiàn)在,它已經(jīng)成為struts的基本組成部分之一。

    2、在struts中使用tiles框架的條件

    首先,確保如下一些文件在應(yīng)用程序的WEB-INF/lib目錄中:

    commons-digester.jar
    commons-beanutils.jar
    commons-collections.jar
    commons-logging.jar


    其次,還要將tiles的tld文件struts-tiles.tld以及struts-template.tld放在應(yīng)用程序的WEB-INF目錄中。這里順便對(duì)本系列前面一些文章中讀者提出的問題做一些解釋:

    本系列文章的每個(gè)選題都是根據(jù)筆者在論壇中收集的一些熱點(diǎn)問題,結(jié)合自己開發(fā)的一些項(xiàng)目(有很多就是為了便于初學(xué)者的理解將實(shí)際項(xiàng)目做一些適當(dāng)?shù)暮?jiǎn)化)寫成的。因?yàn)閷?duì)那些包之類的文件對(duì)那個(gè)主題是必須的往往沒有足夠的時(shí)間來一一加以驗(yàn)證,有時(shí)寫多了,有時(shí)又寫掉了。

    所以,有些讀者反映照著文章介紹的步驟不能得到正確的結(jié)果。首先,在此向這些讀者表示歉意,筆者以后會(huì)盡量注意一些。說實(shí)在的,要完全避免也有困難,畢竟寫這些東西只是業(yè)余的事情,筆者還有許多本職工作要干,請(qǐng)大家原諒。有一個(gè)折中的方案就是:讀者在明白基本原理之后采用諸如jbx之類的開發(fā)工具,這樣在很大程度上可以避免這些問題的干擾,畢竟正常開發(fā)大多還是要使用這些工具的,熟悉它們也沒有什么壞處。

    3、使用tiles構(gòu)建網(wǎng)頁(yè)的過程

    下面,我們通過構(gòu)建一個(gè)本篇開頭提及的那種簡(jiǎn)單頁(yè)面來體會(huì)一下tiles構(gòu)建網(wǎng)頁(yè)的過程。

    首先,在struts-config.xml中加入tiles插件,代碼如下:









    <plug-in className="org.apache.struts.tiles.TilesPlugin">
        <set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml" />
      </plug-in>


    其次,創(chuàng)建tiles-defs.xml文件,并把它放在應(yīng)用程序的WEB-INF目錄下,其代碼如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE tiles-definitions PUBLIC "-
    //Apache Software Foundation
    //DTD Tiles Configuration 1.1
    //EN" "http://jakarta.apache.org/struts/dtds/tiles-config_1_1.dtd">
    <tiles-definitions>  
      <definition name="testLayout" path="/testLayout.jsp">
        <put name="title" value="my tiles test" />
        <put name="header" value="/header.jsp" />
        <put name="body" value="/body.jsp" />
        <put name="footer" value="/right.jsp" />
      </definition>
    </tiles-definitions>


    再次,創(chuàng)建一個(gè)名為testLayout.jsp的布局模板文件,代碼如下:

    <%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles"%>
    <html>
    <head>
    <title><tiles:get name="title"/>
    </title>
    </head>
    <body>
      <table>
        <tr>
          <td height="80" width="778" bgcolor="#aa0000">
            <tiles:insert attribute="header"/>
          </td>
        </tr>
        <tr>
          <td height="360" width="778" bgcolor="#00aa00">
            <tiles:insert attribute="body"/>
          </td>
        </tr>
        <tr>
          <td height="80" width="778" bgcolor="#0000aa">
            <tiles:insert attribute="footer"/>
          </td>
        </tr>
      </table> 
    </body>
    </html>


    從該文件的代碼可以看出:

    <tiles:insert 標(biāo)簽中的attribute屬性值
    是由tiles-defs.xml中定義的邏輯名來表示的


    這為基于該模板的網(wǎng)頁(yè)動(dòng)態(tài)地裝入tile奠定了基礎(chǔ)。最后,創(chuàng)建幾個(gè)用于實(shí)驗(yàn)的.jsp文件,它們包括header.jsp、body.jsp、body2.jsp以及right.jsp。

    header.jsp的代碼如下:

    <%@ page contentType="text/html; charset=UTF-8" %>
    <html>
    <head>
    <title>
    header
    </title>
    </head>
    <body bgcolor="#ffffff">
    <h1>


    這是頁(yè)頭部分

    </h1>
    </body>
    </html>


    body.jsp的代碼如下:

    <%@ page contentType="text/html; charset=UTF-8" %>
    <html>
    <head>
    <title>
    body
    </title>
    </head>
    <body bgcolor="#ffffff">
    <h1>


    這是內(nèi)容部分

    </h1>
    </body>
    </html>


    body2.jsp的代碼如下:

    <%@ page contentType="text/html; charset=UTF-8" %>
    <html>
    <head>
    <title>
    body
    </title>
    </head>
    <body bgcolor="#ffffff">
    <h1>


    這是內(nèi)容部分2

    </h1>
    </body>
    </html>


    right.jsp的代碼如下:

    <%@ page contentType="text/html; charset=UTF-8" %>
    <html>
    <head>
    <title>
    right
    </title>
    </head>
    <body bgcolor="#ffffff">
    <h1>


    這是版權(quán)頁(yè)

    </h1>
    </body>
    </html>

    4、演示tiles的使用效果

    為此,我們還要建兩個(gè).jsp文件,它們分別名為:page1.jsp和page2.jsp

    其中,page1.jsp的代碼如下:











    <%@ page contentType="text/html; charset=UTF-8" %>
    <%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %>
    <tiles:insert page="/testLayout.jsp" flush="true">
      <tiles:put name="title" content="My first page" direct="true"/>
      <tiles:put name="header" value="/header.jsp"/>
      <tiles:put name="body" value="/body.jsp"/>
      <tiles:put name="footer" value="/right.jsp"/>
    </tiles:insert>


    page2.jsp的代碼如下:

    <%@ page contentType="text/html; charset=UTF-8" %>
    <%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %>
    <tiles:insert page="/testLayout.jsp" flush="true">
      <tiles:put name="title" content="My second page" direct="true"/>
      <tiles:put name="header" value="/header.jsp"/>
      <tiles:put name="body" value="/body2.jsp"/>
      <tiles:put name="footer" value="/right.jsp"/>
    </tiles:insert>


    從這兩個(gè)文件可以看出:

    文件的布局是與模板相對(duì)應(yīng),而這兩個(gè)文件的body部分則對(duì)應(yīng)著不同的.jsp文件。可以想象,如果要對(duì)頁(yè)頭和版權(quán)信息做修改,只要對(duì)header.jsp和right.jsp做相應(yīng)的修改,則修改的結(jié)果則會(huì)反映到page1.jsp和page2.jsp頁(yè)面上。

    以上,只是對(duì)tiles的使用做了一個(gè)簡(jiǎn)單的介紹,它還有其他一些特征如:tile的定義可以擴(kuò)展等等,值得大家深入探討。至于上面各種文件中出現(xiàn)的一些標(biāo)簽,大多可以從標(biāo)簽本身看出其含義,實(shí)在不清楚的也可以參考這方面的有關(guān)資料,如果詳細(xì)在這里講解這些東西會(huì)顯得冗長(zhǎng)乏味。

    現(xiàn)在,如果您在瀏覽器中輸入:http://127.0.0.1:8080/mystruts/page1.jsp就可以看到網(wǎng)頁(yè)效果了;對(duì)比輸入:http://127.0.0.1:8080/mystruts/page2.jsp 看看網(wǎng)頁(yè)的變化。就可以體會(huì)到使用tiles框架的作用了。

    下一篇文章,筆者準(zhǔn)備介紹一下用tiles框架構(gòu)建frame形式的網(wǎng)頁(yè)的問題。之所以準(zhǔn)備寫它們是因?yàn)閒rame形式的網(wǎng)頁(yè)應(yīng)用還是比較廣泛,而且筆者發(fā)現(xiàn)這方面的參考文獻(xiàn)比較少見。另外,本系列第八篇發(fā)表后,就有讀者來信提出過這樣的要求,希望整理出來的東西能對(duì)這部分讀者有所幫助。

    參考文獻(xiàn):

    《Programming Jakarta Struts》Chuck Cavaness著
    主站蜘蛛池模板: 亚洲mv国产精品mv日本mv| 成年免费a级毛片| 亚欧免费无码aⅴ在线观看| 亚洲国产精品自产在线播放| 狠狠热精品免费观看| 国产在线观看免费完整版中文版| 亚洲人成网站免费播放| 成人在线免费看片| 亚洲娇小性xxxx| 天天摸天天碰成人免费视频| 亚洲日本成本人观看| 国产午夜影视大全免费观看| 国产午夜亚洲精品不卡免下载 | www在线观看播放免费视频日本| 亚洲国产精品成人综合色在线| 亚洲欧美日韩中文字幕一区二区三区| 色www永久免费| 亚洲天堂中文字幕| 无码乱肉视频免费大全合集| 亚洲性色AV日韩在线观看| 成年女人永久免费观看片| 免费夜色污私人影院网站电影| 亚洲免费日韩无码系列| 三级网站在线免费观看| 亚洲最大视频网站| 在线免费观看毛片网站| 特级毛片aaaa免费观看| 亚洲AV乱码久久精品蜜桃| 国产人在线成免费视频| 国产亚洲精品美女久久久久| 国产亚洲精品a在线观看app| 成人在线免费看片| 一区二区三区免费精品视频| 久久精品a亚洲国产v高清不卡| 99在线视频免费观看视频| 黄色网址免费在线| 91亚洲国产在人线播放午夜| 四虎影视永久免费观看网址| 日本免费电影一区二区| 亚洲熟妇无码AV| 久久久久亚洲精品美女|