搭建struts平臺的一點經驗之談
基于MVC 的Struts 平臺建設參考手冊Writen by Minton-----Index -----1|----- |----- |-----2|-----|----- |----- |---
基于MVC 的Struts 平臺建設參考手冊
Writen by Minton
-----Index -----
1
|----- |----- |-----
2
|-----
|----- |----- |----- |----- |----- |----- |----- |-----
總結
附表:建立遠程訪問數(shù)據(jù)庫鏈接
㈠ 環(huán)境配置
⒈JDK Install
從http://Java.sun.com/downloads可以下載到最新版本的jdk 開發(fā)包。 安裝到指定路徑,比如E:j2sdk1.4.2_10
配置環(huán)境變量:
右鍵點擊“我的電腦”->“屬性”->“高級”->“環(huán)境變量”,在“系統(tǒng)變量”中編輯path 選項(見圖-1)。
,
圖-1 設置path 環(huán)境變量1
將E:j2sdk1.4.2_10bin添加到path 變量中以分號與其他值分開。有一點必須注意,由于系統(tǒng)加載環(huán)境變量時是按照path 中變量值的順序進行查找,所以必須保證你的jdk 環(huán)境變量排在所有變量值中的第一位。某些基于java 應用的軟件可能自帶jdk 包,比如oracle ,它在安裝時自動設置jdk 的環(huán)境變量,而它的jdk 版本通常很低,所以會導致你的eclipse 啟動不了。如果發(fā)生這種情況就要檢查你的環(huán)境變量配置是否正確。
在“系統(tǒng)變量”中新建名為“JA VA_HOME”的變量,并進行如下編輯: JA VA_HOME=E:j2sdk1.4.2_10
在“系統(tǒng)變量”中新建名為“CLASSPATH ”的變量,并進行如下編輯: CLASSPATH =.; E:jdk1.4.2_10libtools.jar; E: 1.4.2_10jrelibrt.jar;
此外,在命令行中也可以進行上述操作,操作命令是set path和set classpath 見圖-

2
圖-2 設置path 環(huán)境變量2
執(zhí)行完上述操作后就可以檢驗jdk 環(huán)境安裝是否成功了,在命令行中執(zhí)行下述操
,作:
Java -version 顯示版本信息(見圖-3)。

圖-3 java 命令
執(zhí)行 javac 查看java 編譯器是否正常(見圖-4)。

圖-4 javac編譯器
如果上述操作失敗,請回到前面的步驟重新配置。
⒉Config Tmocat
Tomcat 既是運行JSP 所必須的servlet 容器同時也可以作為web 服務器,但只適用于小型的web 應用,因為它畢竟是開源的項目,有很多bug (這點我深有體會)。如果你打算部署大型的web app請選擇BEA 的Weblogic 或者JBOSS ,前提是你的內存足夠大。
從這個地址http://jakarta.apache.org/builds/tomcat/release/可以下載Tomcat 服務器的最新版本。 目前Tomcat Release 有兩個version family ,5.0和5.5,我不太清楚他們之間的區(qū)別,偶都試用過,沒感覺什么特別,不過5.5系列好像更輕量級。 下面就開始安裝Tomcat 吧。
開始運行安裝文件,安裝過程中會提示你設置端口號,你可以接受默認值8080,也可以設成知名端口80,前提是80沒有被其他應用或服務占用(這點強烈bs 下oracle 的http 服務器,做的很爛還老霸占80端口),將文件解壓到E 盤根目錄,E:Tomact 5.5。
在“系統(tǒng)變量”--->“新建”
,在變量名中輸入:TOMCAT_HOME,變量值中輸入:E:Tomact 5.5然后確定; 測試:
啟動tomcat ,本人建議從%TOMCAT_HOME%bintomcat5.exe(或者tomcat5.0中的%TOMCAT_HOME%binstartup.bat)啟動,因為你可以看到很多運行在后臺的信息幫助你發(fā)現(xiàn)程序中的bug 。
啟動后在地址欄中輸入http://localhost:8080/ 你將會看到Apache 的默認頁面(貓不像貓,虎不像虎,見圖-5)

圖-5 Tmocat默認首頁
也許你希望通過域名來訪問你的網站而不是通過localhost (看上去很傻),這非常容易,我們可以申請免費的域名空間。http://www.3322.org可以提供免費的域名服務,只要在上面注冊就可以申請你自己的域名了(實際上是它的二級域名),域名訪問有很多優(yōu)點,一是看上去很專業(yè)(我自己感覺?。?,二是域名與IP 綁定,這樣如果你在別處上網訪問只需要敲入你設定好的域名而不需要記住冗余的IP 地址了(我記性很差,到現(xiàn)在電腦IP 都記不住)。
申請好域名后,還需要在Tomat 里進行設置,以便通知它你注冊了該域名。 打開%TOMCAT_HOME%confserver.xml(這個文件很重要)找到Engine name="Catalina" 選項,將defaultHost 設置為你的域名,下面是我的設置:
其次,找到 unpackW ARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> 通過以上設置就可以用域名訪問你的網頁了。 通常情況下你的web 應用程序都是放到%TOMCA T_HOME%webapps中的,不過我們可以通過設置虛擬目錄來改變web 應用的目錄。 例如,我的web 應用程序根目錄是XinhuaBook ,存放在E:tomcat 5.5下面,那么我該如何設置虛擬目錄呢? 很簡單,打開server.xml 文件,找到Host 選項,設置appBase 屬性值為你的根目錄文件夾名,例如 unpackW ARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> 然后在Host 中添加屬性值 ?????? “path ”是地址欄中顯示的路徑名,圖簡單我設為了空,“docBase ”指明了你的web 應用程序所在的物理路徑。通過以上設置應該就可以訪問你的虛擬目錄了。 對了,server.xml 里的connector 選項可以設置端口,如果你的Tomcat 啟動后控制臺提示某某端口被占用了,你就得修改這個值了。 ⒊Eclipse Usage Eclipse 的配置比較簡單,我這里說的可能不是很多。 其實Eclipse 真的是很強大的IDE 了,與Jbuilder ,NetBeans 相比,最大的優(yōu)勢就是opensource and Free 。所有的插件和Jar 包都可以從網上獲得。其次,界面友好,操作靈活,不像Jbuilder ,啟動時跟個老牛似的,而且它的最大問題是光標經常錯誤定位,偶以前用過J9,那叫一個郁悶??!光標不聽鼠標的指揮,產生錯位現(xiàn)象,打那以后我就對Jbuilder 一點好感都沒有了。 有人會問了,如果我想開發(fā)GUI 程序,Eclipse 能行么?Eclipse 告訴你他是Omni (萬能的,無所不知的)的,它通過插件(Plug -In )來實現(xiàn)所有附加功能。舉個簡單例子,比如你想在Eclipse 中對xml 進行編輯,首先你要下載xml 編輯器的開發(fā)包,目前最好的是Xmlbuddy 。然后在eclipse 目錄下(就是eclipse.exe 所在目錄)建立一個名字為links 的文件夾,在該文件夾下創(chuàng)建xmlbuddy .link 文件,接著打開它,寫入如下語句path=E:/eclipseplugins/xmlbuddy,這也就告訴我們必 須在E 盤下建個文件了,名字是eclipseplugins ,其次將先前下載的xmlbuddy 包解壓到該文件夾中,一切便大功告成了。啟動eclipse ,你便可以看到xml 編輯器了(見圖-6)。 圖-6 插件的使用 Eclipse 還有很多優(yōu)秀的功能,比如Junit (單元測試工具)是軟件開發(fā)中必不可少的debug 工具以及CVS 版本控制器(見圖-6)。 ㈡ MVC 的建設 MVC 是什么? 基于Web 的MVC framework在J2EE 的世界內已是空前繁榮。TTS 網站上幾乎每隔一兩個星期就會有新的MVC 框架發(fā)布。目前比較好的MVC, 老牌的有Struts 、Webwork 。新興的MVC 框架有Spring MVC、T apestry 、JSF 等。這些大多是著名團隊的作品,另外還有一些邊緣團隊的作品,也相當出色,如Dinamica 、VRaptor 等。這些框架都提供了較好的層次分隔能力。在實現(xiàn)良好的MVC 分隔的基礎上,通過提供一些現(xiàn)成的輔助類庫,同時也促進了生產效率的提高。 不管出現(xiàn)什么樣的MVC 實現(xiàn)方案,我們必須理解什么是MVC 。 MVC (Modle-View-Controller, 模型-視圖-控制器)模式是Xerox PARC在20世紀80年代為編程語言Smalltalk-80所設計的一種軟件設計模式,至今已被廣泛 使用,并被推薦為Sun 公司J2EE 平臺的設計模式,其為開發(fā)交互式應用系統(tǒng)提供了一個優(yōu)秀的設計模式,受到越來越多開發(fā)者的歡迎。 MVC 模式主要由3個部分組成:模型、視圖和控制器,其結構如圖-7所示。 圖-7 MVC結構 模型表示業(yè)務邏輯和業(yè)務規(guī)則等,在MVC 的三個部件中擁有最多的處理任務。它可以用JavaBean 和EJB 等組件技術來處理數(shù)據(jù)庫的訪問。模型能為多個視圖提供數(shù)據(jù)。由于應用于模型的代碼只需寫一次就可以被多個視圖重用,所以減少了代碼的重復性。 視圖是屏幕上的顯示。模型進行操作之后,其結果就是通過視圖來顯示的。在視圖中其實沒有真正的處理發(fā)生,只是作為一種輸出數(shù)據(jù)并允許用戶操作的方式。 控制器用于管理用戶與視圖發(fā)生的交互。一旦用戶想對模型進行處理時,它不能直接去執(zhí)行模型,而是通過控制器來間接地實現(xiàn)??刂破髂軓囊晥D中取值,然后將相應的值傳給模型進行處理??刂破鹘邮苡脩舻妮斎氩⒄{用模型和視圖去完成用戶的需求。 由上述可知,MVC 模式的處理過程是:首先由控制器接收用戶的請求,并決定應該調用哪個模型來進行處理,然后模型用業(yè)務邏輯來處理用戶的請求并返回數(shù)據(jù),最后控制器用相應的視圖返回數(shù)據(jù),并通過表達層呈現(xiàn)給用戶。 Struts 框架 Struts 是Apache 組織的一個開放源碼項目。Struts 是一個比較好的MVC 框架,提供了對開發(fā)MVC 系統(tǒng)的底層支持,它采用的主要技術是Servlet ,JSP 和Custom tag library。其基本構成如圖-8所示。 圖-8 Struts處理模型 由圖-8可以看出,在Struts 框架中Controller 功能由ActionServlet 和ActionMapping 對象構成,核心是一個Servlet 類型的對象ActionServlet ,它用來接受客戶端的請求。ActionServlet 包括一組基于配置的ActionMapping 對象,每個ActionMapping 對象實現(xiàn)了一個請求到一個具體的Model 部分中Action 處理器對象之間的映射。 Model 部分由Action 和ActionForm 對象構成。所有的Action 處理器對象都是開發(fā)者從Struts 的Action 類派生的子類。Action 處理器對象封裝了具體的處理邏輯,調用業(yè)務邏輯模塊,并且把響應提交到合適的View 組件以產生響應。Struts 提供的ActionForm 組件對象可以通過定義屬性描述客戶端表單數(shù)據(jù)。開發(fā)者可以從它派生子類對象,利用它和Struts 提供的自定義標記庫結合可以實現(xiàn)對客戶端的表單數(shù)據(jù)的良好封裝和支持,Action 處理器對象可以直接對它進行讀寫,而不再需要和request 、response 對象進行數(shù)據(jù)交互。通過ActionForm 組件對象實現(xiàn)了對View 和Model 之間交互的支持。 View 部分是通過JSP 技術實現(xiàn)的。Struts 提供了自定義的標記庫,通過這些自定義標記可以非常好地和系統(tǒng)的Model 部分交互,通過使用這些自定義標記創(chuàng)建的JSP 表單,可以實現(xiàn)和Model 部分中的ActionForm 的映射,完成對用戶數(shù)據(jù)的封裝。 使用struts 之前必須獲得該框架所需JAR 包文件和標簽庫描述文件TLD 。訪問http://jakarta.apache.org,可以下載最新的Struts 軟件包,把struts 壓縮文件解壓后,在其lib 子目錄下提供了struts 框架所必須的JAR 文件。在struts 軟件包的lib 子目錄下還提供了所有的struts 標簽庫描述TLD 文件: 圖-9 Tld描述文件 了解了struts 的基本結構之后,下面我簡要談談一些配置某些重要文件時應該注意的問題。 ⒈構建視圖 視圖部分主要包括包括Jsp 文件以及自定義標簽文件。 按照我的理解,struts 處理的核心就是表單,所有MVC 的處理都是圍繞著表單的request 和response 來進行的。 Struts 的jsp 文件中可以包括標準的html 元素,也可以加入struts 自帶的標簽,比如struts,struts 下面是一個運用了struts 標簽的jsp 文件: 圖-10 應用struts 標簽的jsp 文件 最近網絡上掀起了Ajax (注:有的學者把它翻譯成阿賈克斯,荷蘭一個很牛的足球俱樂部)風暴,它集成了Xml 和javascript 的優(yōu)點,使得網頁的顯示更加動態(tài),Gmail ,google earth 都應用了該技術。目前有一些文章論述在struts 中應用Ajax ,我看了,而且也實驗過。In my opinion,沒感覺有什么特別的優(yōu)點,也許我孤陋寡聞了,不過仍希望你在實踐了struts 后有機會嘗試Ajax 的魔力,至少 我知道IBM CRL面試時是要問你會不會Ajax 。 每個網站都有它的結構,基本上由視圖、配置文件、類庫和源程序構成。Struts 網站的一個典型結構如下圖所示: 圖-11 web結構圖 Css目錄主要存放樣式表說明文件。 head可以作為應用的子目錄來存儲jsp 或html 文件,以便網站結構更清晰。 img 存儲圖像文件 scripts存儲javascript 等腳本說明文件 WEB-INF 存儲配置文件、類庫和源程序 某些html 或者jsp 頁面也可以放在根目錄下。 我們再來看看WEB-INF的內容: 圖-12 WEB-INF的內容 classes 用于存放源程序 lib 用于存放源程序所要調用的庫文件 shareStruts 存放struts-config.xml 的配置文件





