Struts原理與應用(完)

Chapter 7: Taglib and Other Skills

Struts principle and practice

TAGLIB
Struts對Taglib進行了擴展, Struts提供了四種基本自定義Taglib以及兩種附加Taglib:

bean:struts-bean taglib包含在訪問bean和bean屬性時使用的tag,也包含一些消息顯示的tag。
html:struts-html taglib包含用來創建struts輸入表單的tag,和其它通常用來創建基於HTML用戶界面的tag。
logic:struts-logic taglib包含的tag用來管理根據條件生成輸出文本,和其它一些用來控制的信息。
template:struts-template taglib包含的tag用來定義模板機制。

tiles:Tiles插件,用於簡化jsp開發
nested: 而Nested標記庫的作用是讓以上這些基本標記庫能夠嵌套使用,發揮更大的作用。

使用taglib可以簡化jsp頁面的開發,使得jsp包含最少的代碼。

如,在JSP開發過程中,虛擬目錄是相對於Domain的。如果http://localhost/context1/test.jsp執行href="/”則會返回到http://localhost/,如何返回到http://localhost/context1/呢? 這樣我們就可以用<html:link page="/" >按照相對於虛擬目錄的url來定位。

I18n支持
如果要顯示一套支持i18n的界面,首先要定義一個ApplicationResource文件,將信息以key=value的形式放入。在struts-config.xml中指定resouces的地址,即可用<bean:message key="welcome">這樣的tag來顯示,而不需要將信息固化在JSP文件中。

TILES:
Tiles中對頁面的劃分有點象jakarta的另外一個項目Turbine中的TDK。增加了layout的概念.
其實就是把一個頁面劃分爲幾塊。 通常的來說一個頁面大概可以劃分爲如下幾塊:
head頁面頭部:存放一個運用的公共信息:logo等,如果是網站可能是最上面的一塊.
menu頁面菜單:放置一個運用中需要使用的菜單,或者在每一個頁面都使用的連接.
footer頁面尾部:如版權信息等.
body頁面主題內容:每個頁面相對獨立的內容.
如果按上面的劃分那對每一個頁面我們只要寫body裏面的內容,其他的就可以共享重用.
如果大多數頁面的佈局基本相同我們甚至可以使用一個jsp文件根據不同的參數調用不同的body.

Tiles除了替代Template的基本模板功能外,還增加了佈局定義、虛擬頁面定義和動態頁面生成等功能。Tiles強大的模板功能能夠使頁面獲得最大的重用性和靈活性,此外可以結合Tiles配置文件中的頁面定義和Action的轉發邏輯,即你可以將一個Action轉發到一個在Tiles配置文件中定義的虛擬頁面,從而減少頁面的數量。比如,下表中的Action定義了一個轉發路徑,它的終點是tile.userMain,而後者是你在Tiles配置文件中定義的一個頁面。

EXCEPTION
異常處理在Struts1.1中得到了很好的支持

可以在配置文件中指定由誰來處理Action類中擲出的某種異常。按照以下步驟來完成該功能:

1 實現org.apache.struts.action.ExceptionHandler的子類,覆蓋execute方法,在該方法中處理異常並且返回一個ActionForward對象

2 在配置文件中配置異常處理對象,你可以配置一個全局的處理類或者單獨爲每個Action配置處理類

下表就定義了一個全局的處理類CustomizedExceptionHandler,它被用來處理所有的異常。

<global-exceptions> <exception handler="com.yourcorp.CustomizedExceptionHandler" key="global.error.message" path="/error.jsp" scope="request" type="java.lang.Exception"/></global-exceptions>

 

Chapter 8: Other Web Framework

Struts principle and practice

Web Framework
Sstruts是一個web framework。那麼什麼是Framework?

Framework概念並不是很新了,伴隨着軟件開發的發展,在多層的軟件開發項目中,可重用、易擴展的,而且是經過良好測試的軟件組件,越來越爲人們所青睞。這意味着人們可以將充裕的時間用來分析、構建業務邏輯的應用上,而非繁雜的代碼工程。於是人們將相同類型問題的解決途徑進行抽象,抽取成一個應用框架。這也就是我們所說的Framework。
Framework的體系提供了一套明確機制,從而讓開發人員很容易的擴展和控制整個framework開發上的結構。 通常,framework的結構中都有一個“命令和控制”組件

常見的B/S WebFramework已經有很多了,其中不少也是很成功優秀作品。下面列舉一部分

Struts:主要關注於Controller流程,基於JSP與Taglib實現的View。

Cocoon:jakarta出品的用於處理XML的框架,將XML作爲View並可以良好結合XSLT

Webwork:jive論壇採用的框架,採用command模式進行action的轉發,並可結合多種view模型

Turbine: 同樣是jakarta出品。是一個基於 Servlet 的Framework,使得 java 開發者可以快速、安全的構建自己的網絡應用。採用Velocity 作爲表現層。(Velocity:一個基於 Java 的模版引擎 )

Tapestry: 一個優秀的framwork,類似於dotNet中的winform,使用html和一個servlet共同生成一個View

Spring: Spring是一個服務於所有層面的application framework:提供了bean的配置基礎,AOP的支持,JDBC的提取框架,
抽象事務支持,等等。它有一個非常顯著的特點:在某個層面上如果你不需要Spring的支持,你就可以不使用String的class,只使用它的某一部分的功能。

JSF:JavaServerFaces,它並不算是Framework,但JSF同樣提供了一種不同的View生成方式。它可以和多種Framework整合。在J2EE1.4中,JSP2.0規範就包含了JSF標準。

Framework有很多種,Struts並不是我們唯一的選擇。我們可以根據具體的項目來選擇不同的framework。

之所以struts現在比較流行,其主要原因是它推出的比較早,版本較穩定,並且是MVC及core J2EE patterns的標準實現。

將來的發展趨勢,很有可能是JSF+Struts+Spring+Hibernate/JDO的開發模式

版權所有,歡迎轉載
CSDN首發,轉載請註明作者:冰雲



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章