<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 3, 文章 - 152, 評論 - 17, 引用 - 0
    數據加載中……

    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/org/apache/struts/util/package-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/

    三、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 消息資源工廠,糜詮駛薪饈拖⒆試?/TD>
    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 處理多部分請求的類的名稱
    noCache 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技術應用的進一步深化。

    posted on 2005-02-15 11:20 閱讀(163) 評論(0)  編輯  收藏 所屬分類: J2ee

    主站蜘蛛池模板: 黄色三级三级三级免费看| 亚洲午夜一区二区三区| 成人精品综合免费视频| 全部免费a级毛片| 黄色网页免费观看| 亚洲人成电影网站国产精品| 香蕉免费看一区二区三区| 亚洲va无码va在线va天堂| 亚洲一区免费观看| 亚洲导航深夜福利| 啦啦啦高清视频在线观看免费 | 亚洲人成黄网在线观看| 1024免费福利永久观看网站| 亚洲综合中文字幕无线码| 处破痛哭A√18成年片免费| 亚洲av中文无码乱人伦在线观看| 日韩在线免费播放| 一级看片免费视频囗交| 亚洲国产精品无码专区在线观看| 四虎成人精品永久免费AV | 久久久久亚洲AV无码去区首| 免费中文字幕在线观看| 99在线视频免费观看| 中文字幕在线观看亚洲| 成年女人毛片免费观看97| 老司机亚洲精品影院在线观看| 亚洲第一成人影院| 9277手机在线视频观看免费| 亚洲日韩精品国产一区二区三区| 亚洲AV无码成H人在线观看| 亚洲免费人成在线视频观看| 亚洲最大黄色网站| 亚洲Av无码乱码在线播放| 亚洲视频免费在线观看| 亚洲中文字幕无码爆乳| 亚洲人JIZZ日本人| 大学生高清一级毛片免费| 91在线视频免费观看| 亚洲www在线观看| 亚洲人成图片小说网站| 欧美日韩国产免费一区二区三区 |