以下內容是我自己整理的一些
Struts
實施的入門,希望能對大家有所幫助
Struts
安裝:
首先請到
http://jakarta.apache.org/Struts
下載
Struts
,建議使用
release
版,現在最高版本為
1.1
,下載后得到的是一個
ZIP
文件。
將ZIP包解開,可以看到這個目錄:lib和webapps,webapps下有一些WAR文件。假設你的Tomcat裝在c:Tomcat下,則將那些WAR文件拷貝到C:\Tomcat\webapps,重新啟動Tomcat即可。打開瀏覽器,在地址欄中輸入:http://localhost:8080/struts-example/index.jsp,若能見到“powered by Struts”的深藍色圖標,即說明成功了。
這是
Struts
自帶的一個例子,附有詳細的說明文檔,可以做為初學者的入門教程。另外,
Struts
還提供了一系統實用對象:
XML
處理、通過
Java reflection APIs
自動處理
JavaBeans
屬性、國際化的提示和消息等
一個實例:
一個用戶注冊系統,用戶通過網頁輸入相關信息:注冊
ID
號,密碼,
EMAIL
,若注冊成功,則返回成功提示信息,反之出現注冊失敗提示信息。
以下是相關文件的部分核心代碼。
項目建立:
正式開發前,需要在
Tocmat
(我的
tomcat
裝在
c:tomcat
)中建立此項目。比較快的一種建立方式為:在
C:tomcatwebapps
下新建目錄
test
,再將
C:tomcatwebappsStruts-example
下的
WEB-INF
目錄拷貝到
test
目錄下,然后將
testWEB-INF
下的
src
和
classes
目錄清空,以及
Struts-config.xml
文件中內容清空即可。這樣,我們需要的
Struts
類包及相關的配置文件就都齊了。
開發時,將JSP文件放在test目錄下,Java原文件放在testWEB-INFsrc下,編譯后的類文件放在testWEB-INFclasses下。
注冊頁面:reguser.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib uri="/WEB-INF/Struts-bean.tld" prefix="bean" %> <%@ taglib uri="/WEB-INF/Struts-html.tld" prefix="html" %> <html:html locale="ue"> <head> <title>RegUser</title> <html:base/> </head> <body bgcolor="white"> <html:errors/> <html:form action="/regUserAction" focus="logname"> < border="0" width="100%"> <> <th align="right"> Logname: </th> < align="left"> <html:text property="logname" size="20" maxlength="20"/> </> </> <> <th align="right"> Password: </th> < align="left"> <html:password property="password" size="20" maxlength="20"/> </> </> <> <th align="right"> E-mail: </th> < align="left"> <html:password property="email" size="30" maxlength="50"/> </> </> <> < align="right"> <html:submit property="submit" value="Submit"/> </> < align="left"> <html:reset/> </> </> </> </html:form> </body> </html:html>
此JSP頁面不同于普通的JSP頁,因為它大量運用了taglib,這些taglib對初學者而言,可能難于掌握,可這卻是Struts的精華之一。
靈活運用,將大大提高開發效率。
Struts-config.xml:
<Struts-config> <form-beans> <form-bean name="regUserForm" type="org.cjea.Struts.example. RegUserForm "/> </form-beans> <action-mappings> <action path="/regUserAction" type=" org.cjea.Struts.example.RegUserAction " atibute=" regUserForm " scope="request" validate="false"> <forward name="failure" path="/ messageFailure.jsp"/> <forward name="success" path="/ messageSuccess.jsp"/> </action> </action-mappings> </Struts-config>
Struts的核心是Conoller,即ActionServlet,而ActionServlet的核心就是Struts-config.xml,Struts-config.xml集中了所有頁面的導航定義。
對于大型的
WEB
項目,通過此配置文件即可迅速把握其脈絡,這不管是對于前期的開發,還是后期的維護或升級都是大有裨益的。掌握
Struts-config.xml
是掌握
Struts
的關鍵所在。
FormBean
:
RegUserForm
package org.cjea.Struts.example;
import javax.Servlet.http.HttpServletRequest; import org.apache.Struts.action.ActionForm; import org.apache.Struts.action.ActionMapping;
public final class RegUserForm extends ActionForm{
private Sing logname; private Sing password; private Sing email;
public RegUserForm(){ logname = null; password = null; email = null; }
public Sing getLogName() { return this.logname; } public void setLogName(Sing logname) { this.logname = logname; } public void setPassWord(Sing password) { this.password = password; } public Sing getPassWord() { return this.password; } public void setEmail(Sing email) { this.email = email; } public Sing getEmail() { return this.email; }
public void reset(ActionMapping mapping, HttpServletRequest request) { logname = null; password = null; email = null; } }
每一個
FormBean
都必須繼承
ActionForm
類,
FormBean
是對頁面請求的封裝。即把
HTTP request
封裝在一個對象中,需要說明的一點就是多個
HTTP request
可以共用一個
FormBean
,便于維護和重用。
ActionBean:RegUserAction
package org.cjea.Struts.example;
import javax.Servlet.http.*; import org.apache.Struts.action.*;
public final class RegUserAction extends Action {
public ActionForward perform(ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse res) { Sing title = req.getParameter("title"); Sing password = req.getParameter("password"); Sing email = req.getParameter("email"); /* 取得用戶請求,做相應數據庫操作,略 */ } }
FormBean的產生是為了提供數據給ActionBean,在ActionBean中可以取得FormBean中封裝的數據,經相應的邏輯處理后,調用業務方法完成相應業務要求。
Servlet的演變:在常規的 JSP,Servlet,JavaBean三層結構中,JSP實現View的功能,Servlet實現Conoller的功能,JavaBean實現Model的實現。
在Struts中,將常規情況下的Servlet拆分與ActionServlet、FormBean、ActionBean三個部分。ActionServlet配合Struts-config.xml,專職完成頁面導航,而不再負責具體的數據獲取與相應邏輯,這兩部分功能由FormBean和ActionBean來完成。
Struts
優缺點
優點:
Struts
跟
Tomcat
、
Turbine
等諸多
Apache
項目一樣,是開源軟件,這是它的一大優點。使開發者能更深入的了解其內部實現機制。
除此之外,
Struts
的優點主要集中體現在兩個方面:
Taglib
和頁面導航。
Taglib
是
Struts
的標記庫,靈活動用,能大大提高開發效率。另外,就目前國內的
JSP
開發者而言,除了使用
JSP
自帶的常用標記外,很少開發自己的標記,或許
Struts
是一個很好的起點。
關于頁面導航,我認為那將是今后的一個發展方向,事實上,這樣做,使系統的脈絡更加清晰。通過一個配置文件,即可把握整個系統各部分之間的聯系,這對于后期的維護有著莫大的好處。尤其是當另一批開發者接手這個項目時,這種優勢體現得更加明顯。
缺點:
Taglib
是
Struts
的一大優勢,但對于初學者而言,卻需要一個持續學習的過程,甚至還會打亂你網頁編寫的習慣,但是,當你習慣了它時,你會覺得它真的很棒。
Struts
將
MVC
的
Conoller
一分為三,在獲得結構更加清晰的同時,也增加了系統的復雜度。
Struts
從產生到現在還不到半年,但已逐步越來越多運用于商業軟件。雖然它現在還有不少缺點,但它是一種非常優秀的
J2EE MVC
實現方式,如果你的系統準備采用
J2EE MVC
架構,那么,不妨考慮一下
Struts
。
Struts實施經驗: 1、基于Struts架構的項目開發,首先需要有一個很好的整體規劃,整個系統中包括哪幾個模塊,每個模塊各需要多少FormBean和ActionBean等,而且最好有專人負責Struts-config.xml的管理。
開發基于
Struts
的項目的難點在于配置管理,尤其是對
Struts-config.xml
的管理
2
、如果你的項目非常緊,并且項目組中又沒有富有經驗的
Struts
開發人員,建議不要冒然采用
Struts
。
Struts
的掌握需要一個過程,對于一個熟練的
JSP
程序員,自學大概需要半個月左右的時間。如果結合
titls
,則需要更長的時間
3
、如果你在網頁中大量運用
taglib
,那么你的美工將做出部分犧牲。當你結合
Tiles
,功能增強的同時,這種犧牲尤為明顯。當然,你對功能和美觀的取舍由你自己決定
4
、
Taglib
是一個好東西,但靈活運用它卻需要一個過程,如果你不想在
Taglib
上花太多的時間,那么只需理解與
FORM
有關的幾個標記,其它的標記就放著吧,以后再看,先去研究
ActionServlet
和
Struts-config.xml
,你會覺得很有成就感
5
、
Struts
是否只適合于大型項目呢?
No
!
Struts
適合于各種大小的項目,當然,對于大型項目,它所體現出來的優勢更加明顯。
|