Struts 應該已經不算很新的東西了,
不知道還有沒有初學者需要下面的內容
一、Struts 簡介
Struts 是 apache 組織 jakarta 項目的一個子項目,用以改善 web 系統的結構。
Web 系統本身的複雜性與商務程序的不確定性,是相當棘手且難於處理的。
例如,使用者可能隨時使用一個連結從系統的這部分跳到另一部分。又或者登陸一個
頁面後可能隔半天沒反映,而突然又請求另一項服務 …………
如果 Web系統沒有一個很好地設計結構,這些煩人的問題能纏著你直到你崩潰,
或者系統崩潰。 即使你硬撐著闖過幾關,後期維護工作又能把你逼瘋,或者把
其他的維護人員逼瘋! :)
MVC(模型-視圖-控制器)模式最重要的思想就是 業務代碼 與 視圖代碼 分離。
能有效地理清系統結構,降低系統複雜度與維護難度。
Struts 就是基於J2EE 的 web 形式 MVC 模式實現!
當然, Struts 不只是如此。 它主要由兩大部分組成,其一是上面所說的改善
web 系統結構的 MVC 架構部分。 另一部分是 Struts 的標籤庫,主要由 web
頁面製作人員使用。
我們主要講的是第一部分,一些入門級的內容,以及新手會碰到的一些問題。
二、環境配置
我們用 Tomcat 4.1.29 + Struts1.1 來做示範。
Tomcat 的:
http://apache.linuxforum.net/dist/jakarta/tomcat-4/v4.1.29/bin/jakarta-tomcat-4.1.29.zip
Struts 的:
http://apache.linuxforum.net/dist/jakarta/struts/binaries/jakarta-struts-1.1.zip
添加環境變數: (例如:)
JAVA_HOME C:/j2sdk1.4.2/
TOMCAT_HOME C:/tomcat/
同時,你也需要將 Struts/lib/struts.jar 、Tomcat/common/lib/servlet.jar
檔案添加到 CLASSPATH 變數中,代碼編譯時間會用到。
(當然,有 eclipse 等Integration Environment就方便多了)
運行 Tomcat /bin/startup.bat 啟動 Tomcat
Tomcat 測試: http://localhost:8080/ 能看到那隻貓就算成功了
Struts 其實根本不需要多少配置
解壓 Struts 的下載壓縮包,複製 /webapps/struts-example.war 檔案
到 Tomcat 的 /webapps/ 目錄下,然後重啟 Tomcat 就可以測試
輸入:http://localhost:8080/struts-example/ 看到藍色的“Struts”表徵圖就OK了
注意:如果你測試老不成功,建議換台機子試試。
Java 環境太亂測試會失敗?!(我就這樣憋了一天)
三、執行個體示範
如果上面的配置做完了,我們開始要做個小示範。 示範任務是做一個使用者
註冊/登陸 的“網站”。 關於 Struts 的示範,這類使用者註冊/登陸的例子算是老套了。
不知道我的例子能否激起你的興趣。 :)
首先,在 Tomcat/webapps/ 目錄下建個子目錄 取名 StrutsDemo
StrutsDemo 下的目錄結構
StrutsDemo 下放所有的 .jsp 分頁檔
複製 Struts 解壓目錄 lib/ 下的所有 *.tld 檔案到 WEB-INF/ 下
這些是 Struts 的標籤庫檔案,我們的例子會用到一點。
複製 Struts目錄lib/ 下的所有 *.jar 檔案到 WEB-INF/lib/ 目錄
用到的 .jar 包都要放這兒,否則會發生找不到類資源的錯誤
(要做 Struts 相關的,起碼要把 Struts 解壓目錄下 /lib 下的 .jar 考過來)
WEB-INF/classes/ 目錄下(或它的子目錄下) 還需要有個 .properties 資源檔
用來支援國際化
上面是準備一個基於 Struts 工程最基本的準備工作
本來打算貼代碼,限於篇幅提供代碼下載,已包含詳細注釋
下載:StrutsDemo.rar
四、初學者需要注意的問題
(1) 2個 .xml 的設定檔確實很煩人,特別是直接用記事本的朋友
要有耐心, 格式一定要正確, 可以參考 Struts 內建的例子
(2) struts-config.xml 檔案裡Acturn 屬性的 validate 欄位屬性需要設定為 “true”
才能啟動 對應 Form 的 validate 方法啟動頁面檢測
(3) strturs_config.xml 設定檔中<action> 的 scope 欄位,用來指定 Action 的活動範 圍,預設的值是"session",所以一般我們將scope設定為"request"。 如果需要設定
為"session",則留心一下對應 Form Bean 的 reset() 方法還原 Form Bean 初始值;
(3)怎樣製作 *_zh.properties 中文資源檔
使用 JAVA_HOME/bin/ 目錄下的 native2ascii 工具
先製作一個 ApplicationResources.properties檔案裡採用中文書寫資訊
然後 命令列視窗鍵入
native2ascii -encoding gb2312 ApplicationResources.properties
ApplicationResources_zh.properties
一時想不出來了,以後再添吧 -___-!!