熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java開源技術 >> 正文

用Struts實現模板

2013-11-23 20:38:19  來源: Java開源技術 

  如果不用框架來開發一個門戶站點將會是一件很困難的事使用模版可以減少些麻煩他可以讓你在眨眼之間方便的更新與部署站點上的內容用Struts模版標簽可以幫助你開發以模版為基礎的門戶站點      這篇文章解釋了與門戶有關的一些基本的模版思想介紹了Struts對於模版的支持圍繞著Struts模版標簽進行了討論本文還闡述了其他的一些模版機制      獲得Struts   網絡應用程序框架使用MVC模式能簡化網絡站點的開發Struts正是這樣的一個框架它提供了類集標簽庫和一些能作為Web開發基礎的接口Struts是JakartaApache論壇下的一個開源項目      和所有Jakarta的項目一樣Struts提供原代碼和二進制程序的下載這篇文章裡我們使用Struts的b版本雖然這不是一個正式的版本但這個版本比起版有許多重大的改進      首先解壓縮二進制程序到你所指定的目錄會有一個名為jakartastrutsb的目錄創建在它之下有兩個子目錄分別為lib和webappsLib目錄包含我們所需要的所有庫DTD文件TLD文件(標簽庫定義)我們需要把它們添加到應用程序的classpath中Webapps目錄包含了許多war(web程序包)文件這些可安裝運行的war文件可以放到任意servlet容器的webapps目錄中我們使用Tomcat作為servlet容器      模板基礎   我們通過模版可以創建很多結構相似的東西模版幫助我們將會改變的東西歸檔打包避免許多重復的工作這對創建網絡應用程序的確是一件很方便的事情      在大多數的網絡應用程序中經常需要更換的是內容JSP很容易做到這一點因為JSP默認提供一個include機制——標簽因此一個標准頁面可以通過改變include文件來改變它的內容但是我們怎麼能如此方便的改變一個頁面的布局呢?當我們需要改變的不僅僅是頁面的內容還包括這個頁面的布局時情況會怎麼樣呢?我們等會就會回答這些問題      用Java提供的布局管理機制可以幫我們更形象的理解這些問題Java提出了布局管理器組件容器的概念來創建圖形界面的應用程序      當容器中的組件改變時布局管理器會決定怎麼樣將新的組件部署到容器中此外容器本身也可以做為其他容器的組件從而實現了嵌套在一些簡單的情況下JSP就可以做為一個網絡應用程序的模版其功能就等價於布局管理器模版隱藏了web頁面布局的實現方法換句話說它隱藏了布局的法則假如布局法則需要改變那麼這些改變將回受限於模版Web頁面通過實現這個模版來做其內容上的改變      如果模版等價於布局管理器那相應的容器和組件又是什麼呢?相應的組件就是實際的內容文件JSP文件HTML文件圖象文件等等容器將這些可見的組件聚集在一個單元裡一個JSP文件就是一個容器容器需要關於模版的信息來部署這些組件用Java GUI舉例來說一個面板(容器集合單元)可以包含按鈕和文本區(組件和內容)使用一個網格布局管理器(GridLayout)來部署這些組件      現在我們可以來回答先前提出的那個問題了我們知道模版集成了布局法則當要改變布局是我們要做的僅僅改變模版這些改變會一起相關頁面布局的改變而不需要去改變這些頁面本身在門戶應用程序中這就意味著當大量頁面需要采用同樣布局時在時間上的節省      Struts用三個模版標簽來實現模版      插入標簽InsertTag——   在容器/集合單元文件(collecting unit file)中使用它定義了當前容器要使用的模版類似於Java GUI中的containersetLayout(layout)方法在它之後用標簽定義組件      放入標簽PutTag——   在容器/集合單元文件(collecting unit file)中使用他定義了組成容器/集合單元的組件/內容它類似於Java GUI中的containeradd(component)方法每個PutTag標簽必須有一個相關組件的名稱      獲得標簽GetTag——   在模版文件中使用它告訴模版由PutTag標簽定義的不同組件的名稱它類似於Java GUI中的layoutaddLayoutComponent(componentName component)方法      一個簡單的例子   你可以下載這個例子我們將要創建兩套內容文件容器(集合單元)文件以及模版文件當我們有了這些文件後就可以就可以互換他們的模版看到他們在布局上的改變   復制Strutsblankwar到Tomcat的webapps目錄並且將他改名為templateexamplewar重起Tomcattemplateexample會由Tomcat自動部署刪除pages目錄和indexjsp文件他們與我們的討論暫時無關      讓我們定義又定義我們自己的內容文件做為一個開始在templateexample下建立一個名為content的目錄並且在其中創建六個文件 middlejsp and middlejsp   放入什麼文件是取決於你的但是對於初學者靜態文件更容易理解舉個例子來說包括以下的內容      This is the TOP Content for the First    example This is a static html file       類似的middlejsp包括如下內容      This is the MIDDLE Content for the First    example This is a dynamic JSP file and the   current date and time is <%= new Date() %>       定義了內容之後讓我們來定義兩個模版   在templateexample下建立名為templates的目錄並在其下創建兩個文件templatejsp和templatejsp   這些模版定義了兩種布局方式如下圖所示  
 
  
 
   我們如下來定義這兩個模版      <%@ taglib uri='/WEB-INF/struts-   template.tld' prefix='template' %>         <template:get name='title'/>                                                      定義 Template    <%@ taglib uri='/WEB-INF/struts-   template.tld' prefix='template' %>         <template:get name='title'/>                                          定義 Template       注意到這兩個模版定義了兩種布局方式換句話說它們定義了兩種不同的布局法則   我們已經有了我們自己的內容和模版現在我們需要的是容器文件在tomcatexample目錄下創建兩個容器文件分別名為containerjsp和containerjsp容器文件需要包含組件(內容)同樣容器文件利用template insert和put tags標簽來逐個定義使用和加入的組件(內容)      讓我們帶著這些概念看一下其中的一個容器文件(containerjsp)      <%@ taglib uri='/WEB-INF/struts-template.tld' prefix='template' %>                        我們可以打開浏覽器輸入看看這個文件的實際輸出你會看到如下的頁面  
 
   在這個頁面的後面containerjsp使用模版templatejsp來定義輸出頁面的布局並且從不同的組件中包含內容注意這裡屬性direct的用法當direct設置為true時content標簽定義的內容將會被直接調用它不尋找一個外部的文件(When direct is set to true the content specified by the content attribute is used directly It is not looked up in an external file有點疑問翻的不好)      Container類似所不同的只是他使用template頁面輸出如下  
 
   我們到目前位置所做的工作的優點是顯而易見的舉例來說我們可以用template替換template(通過簡單的復制和粘貼用templatejsp替換templatejs之後containerjsp會馬上變成如下的模樣我們改變了容器的布局卻沒有碰container!這就是模版的作用  
   Struts Template vs Tiles      從Struts 開始引入了另一種模
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28803.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.