史萊姆論壇

返回   史萊姆論壇 > 教學文件資料庫 > 程式 & 網頁設計技術文件
忘記密碼?
論壇說明 標記討論區已讀

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』

Google 提供的廣告


 
 
主題工具 顯示模式
舊 2004-05-12, 06:53 PM   #1 (permalink)
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設 Struts 的安裝、配置與執行

  一、Struts的起源

  Struts最早是作為Apache Jakarta項目的組成部分,項目的創立者希望通過對該項目的研究,改進和提高JavaServer Pages 、Servlet、標籤庫以及面向對象的技術水準。Struts這個名字來源於在建築和舊式飛機中使用的支持金屬架。這個框架之所以叫"Struts",是為了提醒我們記住那些支撐我們房屋,建築,橋樑,甚至我們踩高蹺時候的基礎支撐。這也是一個解釋Struts在開發Web應用程式中所扮演的角色的精彩描述。當建立一個物理建築時,建築工程師使用支柱為建築的每一層提供支持。同樣,軟體工程師使用Struts為業務套用的每一層提供支持。它的目的是為了說明 我們減少在運用MVC設計模型來開發Web套用的時間。我們仍然需要學習和套用該架構,不過它將可以完成其中一些繁重的工作。如果想混合使用Servlets和JSP的優點來建立可擴展的套用,Struts是一個不錯的選項。

  早期Smalltalk 程序語言便採用了MVC(Model-View -Controller) 模式( Patterns ) 以增加程序程式碼彈性,MVC模式將程序程式碼整理切割為三部份,Model 部分是業務與套用領域( Business domain) 相關邏輯、管理狀態之對象,Controller 部分接收來自View 所輸入的資料並與Model 部分互動,是業務流程控制( Flow Control) 之處,View 部分則負責展現資料、接收使用者輸入資料。在Java 套用中,JFC/Swing、AWT、JSP 皆是可用作View 之技術規格,而JavaBean 與Enterprise JavaBean 規格則可用於Model 程序程式碼,一旦應用程式以MVC 模式加以適當之分割,Model 部分程序程式碼可在不同使用者接頭外觀之應用程式中重複使用。

  隨著JSP 與Servlet 技術大量套用於以Web 為基礎之應用程式,Java 開發人員群體認為應以較佳之模式以提升Web 應用程式之可維護性與重複使用性。早期JSP 規格書中曾列舉兩種可行之JSP 套用架構,分別為Model1 與Model 2。

  在Model 1 架構中,JSP 直接處理Web 瀏覽器送來之請求( Request ),並輔以JavaBean 處理套用相關邏輯。Model 1 架構單純編寫比較容易,但在Model 1 中JSP 可能同時肩負View 與Controller 角色,兩類程序程式碼有可能混雜而不易維護。而Model 2 中將Servlet 納入架構中扮演前端Controller 角色,將Web 瀏覽器送出之請求集中送至Servlet ,Servlet 可集中管理使用者登入、權限控制、多國語言轉換等前置處理,再視需求轉向給對應之JSP 處理。Model 2 中採用了較佳之MVC 模式,但增加了編寫複雜度。

  Struts是Apache軟體基金下Jakarta項目的一部分。除Struts之外,還有其他成功的開源產品,包括Tomcat, Ant 和Velocity。2000 年Craig R. McClanahan 先生貢獻了他編寫的JSP Model 2 架構之Application Framework 原始程序程式碼給Apache 基金會,成為Apache Jakarta 計劃Struts Framework 前身。

  開始的程式碼基礎從2000年5月開始開發,直到2001年6月,1.0版本發佈。有30 多個開發者參與進來,並有數千人參與到討論組中。Struts 程式碼基礎由一個志願的Commnitter團隊來管理。到2002年,Struts 小組共有9個志願Commnitter。

  Struts框架的主要架構設計和開發者是Craig R.McClanahan。Craig 也是Tomcat 4的主要架構師,以及Java Web Services Developer Pack的主要架構師和實現者。他現在是Sun的JavaServer Faces (JSR-127) 以及J2EE平台的Web層架構的規範領導。Craig R. McClanahan 先生是JCP ExpertGroup 成員之一,曾參與JSP 規格制定與Tomcat 4 之編寫,因此Struts Framework 廣受Java 開發人員群體所重視。Borland 自2002 年底開始於開發工具JBuilder 中支持Struts Framework。

二、Struts安裝

  1、安裝Struts需要的軟體

  Java Development Kit-- 我們需要download和install 1.2(或之後)版本的JDK。

   下載位址:

   http://java.sun.com/j2se

  Servlet Container -- 通常的選項是下載Tomcat(至少是3.1版,推薦使用4.0以上的版本)。

   下載位址:

   http://jakarta.apache.org/tomcat

  Ant Build System -- 如果我們通過Struts源碼發佈包安裝,我們必須下載1.1或之後版本的ant build system。在我們通過Struts來開發我們自己的Web應用程式是,推薦使用ant來build我們的套用。

   下載位址:

   http://jakarta.apache.org/ant

  Servlet API Classes -- 為了編譯Structs自己,或應用程式使用Struts,我們需要一個包含Servlet和JSP API對象的servlet.jar包。大多數Servlet container(例如Tomcat)已經自帶了這個文件。否則,我們必需下載:http://jakarta.apache.org/builds/jakarta-servletapi

  XML Parser -- Structs需要一個與Java API for XML Parsing(JAXP)規格相容的XML處理器,我們可以使用Xerces。

   下載位址:

   http://xml.apache.org/xerces-j

  Xalan XSLT Processor -- 如果我們通過Structs源碼發佈版來構造我們的Structs系統,我們必須下載和安裝1_2_D01或之後版本的Xalan XSLT處理器(Xerces中已自帶Xalan)。這個處理器用於將關於XML的Structs我的文件轉換為Html我的文件。

  2、通過源碼構造Structs

  1)下載Structs的源碼發佈包。

  2)設定ANT_HOME環境變數,指向我們的Ant目錄。

  3)設定JAVA_HOME環境變數,指向我們的JDK目錄。

  4)設定SERVLETAPI_HOME環境變數,指向我們的Servlet API目錄(如果我們的CLASSPATH已經包含了servlet.jar,就不需要指定該目錄)

  5)將Structs的源碼發佈包進行解包。

  6)進入Structs目錄,執行以下指令:

  ./build.sh dist

  該指令將新增Struts的二進制發佈包,目錄在../dist/structs(相對於我們的編譯目錄)。

  3、通過Struts的二進制發佈包安裝Structs

  1)下載Struts的二進制發佈版。

  2)將Struts的二進制發佈版進行解包。(如果我們是通過Struts源碼構造Struts,build的結果就已經是已解包的Struts)。解包後的Struts包含以下內容:

  lib/struts.jar -- 這個文件包含了Struts的所有Java對象。我們需要把它拷貝到我們的Web套用的WEB-INF/lib目錄。

  lib/structs.tld --這是一個"tag library descriptor"文件,它描述了Struts庫的自由tag。需要將它拷貝到我們的Web套用的WEB-INF目錄。

  webapps/struts-documentation.war -- 這是一個"web application archive"文件,包含了所有的Struts我的文件。我們可以將它安裝到支持Servlet API 2.2或之後版本的servlet container(推薦使用tomcat)中。

  webapps/struts-example.war -- 這是一個web套用實例,它廣泛地演示了Struts的許多功能。我們可以將它安裝到相容Servlet2.2或之後版本以及JSP1.1或之後版本規範的servlet容器中(推薦使用tomcat)。
webapps/struts-test.war -- 這個web套用包含了Struts支持的許多tag的測試網頁,可以作為使用Struts tag的例子。

  4、Struts的基本元件包

  安裝好的struts大約有15包,近200個類所組成,而且數量還在不斷的擴展。在此我們不能一一介紹,只能列舉幾個主要的簡要的介紹一下。下表說明了目前struts api中基本的幾個元件包,包括
action,actions,config,util,taglib,validator。如下表1所顯示:

org.apache.struts.action
 基本上,控制整個struts framework的執行的核心類、元件都在這個包中,比如我們上面提到的控制器ActionServlet。已經Action,ActionForm,ActionMapping等等。struts1.1比1.0多了 DynaActionForm 類。增加了動態擴展產生FormBean功能
org.apache.struts.actions
 這個包是主要作用是提供客戶的http請求和業務邏輯處理之間的特定橋接器轉換功能,而1.0版本中的部分動態增刪FromBean的類,也在struts1.1中被Action包的DynaActionForm元件所取代
org.apache.struts.config
 提供對配置文件struts-config.xml元素的映射。這也是sturts1.1中新增的功能
org.apache.struts.util
 Strtuts為了更好支持web application的套用,體統了一個些常用服務的支持,比如Connection Pool和Message Source。詳細資料請參考http://jakarta.apache.org/struts/api...e-summary.html
org.apache.struts.taglib
 這不是一個包,而是是一個客戶標籤類的集合。下面包括Bean Tags,HTML Tags,Logic Tags,Nested Tags,Template Tags這幾個用於構建用戶界面的標籤類。
org.apache.struts.validator
 Struts1.1 framework中增加了validator framework,用於動態的配置from表單的驗證。詳細資料請參閱 http://home.earthlink.net/~dwinterfeldt/

  下面的則顯現了這幾個元件包之間的關係。其中action是整個struts 架構的核心。
三、Struts 配置與元件介紹

  有關struts元件配置struts-config.xml文件說明在前面的文章中已經介紹過,這裡就不再說了,下面主要介紹框架中元件與配置。

  下表列出了Struts的核心類,即對應的傳統的MVC元件職責。

  表格2 核心Struts 類和MVC 的對應

類 描述
ActionForward 用戶指向或者視圖選項
ActionForm 狀態改變的資料
ActionMapping 狀態改變事件
ActionServlet 控制器,接受用戶請求和狀態改變,以及發出視圖選項
Action 控制器的一部分,於模型交互,執行狀態改變或狀態查詢,以及告訴ActionServlet 下一個選項的視圖

  除了這些核心類, Struts 使用一些配置文件和視圖助手(view helpers)來溝通控制器和模型。下表列出了Struts 配置文件和描述了他們在架構中的角色。

  表格3 Strtuts 配置文件

文件 目的
ApplicationResources.properties 存儲本機化資訊和標籤,以使套用可以國際化
struts-config.xml 存儲控制器對象的預設配置,包括模型支持的用戶指向,狀態改變,狀態查詢

  為將Struts配置資料暴露給視圖,框架以JSP標籤的形式提供了大量的助手類,如表4 Strtus 視圖助手。


標記庫描述符 目的
struts-html.tld 擴展HTML Form的JSP標記
struts-bean.tld 擴展處理JavaBean的JSP標記
struts-logic.tld 擴展測試內容值的JSP標記

  控制器元件的配置

  框架中的控制器元件是有org.apache.struts.action.ActionServlet類實現的,這個類是javax.servlet.http.HttpServlet類的擴展。

  ActionServlet配置:

  我們需要在web.xml中聲明ActionServlet,並且將它配置成啟動時進行載入。以下為可以配置的啟始化參數:

參數 預設值 描述
application Null 應用程式的資源集合的類
bufferSize 4096 文件上傳的緩衝區大小
config /WEB-INF/struts-config.xml 配置文件的位置和名稱
content Text/html 預設的內容類型
debug 0 程序偵錯的級別
detail 0 程序偵錯細節的級別
factory Null 消息資源工廠,用於國際化中解釋消息資源
formBean org.apache.struts.action.ActionFormBean 封裝ActionForm bean資訊的類的名稱
forward Org.apache.struts.action.ActionForward 封裝ActionForward對像資訊的類的名稱
locale True 為true,將在用戶會話中存儲一個本機對像
mapping Org.apache.struts.action.ActionForward 封裝ActionMapping資訊的類的名稱
maxFileSize 250M 上傳文件的最大尺寸
multipartClass Org.apache.struts.action.ActionForward 處理多部分請求的類的名稱
no快取 False HTTP標頭是否要設定為禁止緩寸
Null True 設定為true,對於無效的資訊關鍵字將返回null
tempDir 作為一個servlet參數提供給程序的工作目錄 處理下載文件是使用的臨時工作目錄
validate True 是否使用新格式的配置文件
vallidating True 是否對配置文件進行有效性分析

  大多數情況下,標準的servlet就能夠滿足用戶需要。

  第一次收到特定請求的URI時,ActionServlet將適當的Action類進行實例化,然後ActionServlet在Action類實例中以servlet為變數名存儲一個引用。當被實例化後,Action類會被暫存以備再用。

  錯誤處理

  struts提供了兩個類來處理錯誤:ActionErrors和ActionError,它們都擴展org.apache.struts.action。ActionErrors儲存著ActionError對象的集合,其中每一個代表了獨立的錯誤資訊。每個ActionError都包含了關鍵字,能夠映射到資源文件中存儲的錯誤資訊,而這個資源文件是在ActionServlet啟始化參數中指定的。

 四、Struts的執行

  可通過以下的步驟在我們自己的應用程式中使用Struts:

  1、將Struts目錄的lib/struts.jar拷貝到web套用的WEB-INF/lib目錄。

  2、將Struts目錄的lib/struts*.tld拷貝到web套用的WEB-INF目錄。

  3、修改Web套用目錄的WEB-INF/web.xml文件,增加一個<servlet>元素來定義controller servlet,增加一個<servlet-mapping>元素來建立URI請求與servlet的對應關係。可以參照Struts例子中的WEB-INF/web.xml文件來瞭解詳細的語法要求。

  4、修改Web套用目錄的WEB-INF/web.xml文件,使之包含以下的tag庫定義:

<taglib>
<taglib-uri>/WEB-INF/struts.tld</taglib-uri>
<taglib-location>/WEB-INF/struts.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
</taglib>

  5、新增一個WEB-INF/action.xml文件來定義我們的web套用的action映射關係。可以參照Struts例子中的action.xml文件來瞭解詳細的語法要求。

  6、在使用Struts tag庫的JSP網頁中加入以下tag庫定義:

<@ taglib uri="/WEB-INF/struts.tld" prefix="struts" %>
<@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>

  7、最後,在編譯我們的web套用的java程序時,不要忘了在CLASSPATH中包含struts.jar文件。

  五、Struts優缺點

  優點:

  Struts跟Tomcat、Turbine等諸多Apache項目一樣,是開源軟體,這是它的一大優點。使開發者能更深入的瞭解其內部實現機制。除此之外,Struts的優點主要集中體現在兩個方面:Taglib和頁面導航。Taglib是Struts的標記庫,靈活動用,能大大提高開發效率。另外,就目前國內的JSP開發者而言,除了使用JSP自帶的常用標記外,很少開發自己的標記,或許Struts是一個很好的起點。

  關於頁面導航,我們認為那將是今後的一個發展方向,事實上,這樣做,使系統的脈絡更加清晰。通過一個配置文件,即可把握整個系統各部分之間的聯繫,這對於後期的維護有著莫大的好處。尤其是當另一批開發者接手這個項目時,這種優勢體現得更加明顯。

  缺點:

  Taglib是Struts的一大優勢,但對於初學者而言,卻需要一個持續學習的程序,甚至還會打亂我們網頁編寫的習慣,但是,當我們習慣了它時,我們會覺得它真的很棒。Struts將MVC的Controller一分為三,在獲得結構更加清晰的同時,也增加了系統的複雜度。毫無疑問,要理解 Struts 必須接受一定的培訓。隨著變化的不斷加入,這有時會令人很沮喪。

  Struts從產生到現在還不過3-4年時間,就已逐步越來越多運用於商業軟體。雖然它現在還有不少缺點,但它是一種非常優秀的J2EE MVC實現方式,如果我們的系統準備採用J2EE MVC架構,那麼,不妨考慮一下Struts。

  Struts 是一種關於 Web 的 MVC 解決方案,所以必須用 HTML、JSP 文件和 servlet 來實現它,Struts 需要支持 JSP 1.1 和 Servlet 2.2 規範的 servlet 容器。學習、理解和掌握Struts是我們每個關於J2EE軟體開發人員一門必修的課程,也是我們對企業J2EE技術套用的進一步深化。
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次
 


主題工具
顯示模式

發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用


所有時間均為台北時間。現在的時間是 06:25 PM


Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2024, Jelsoft Enterprises Ltd.


SEO by vBSEO 3.6.1