Struts應用采用兩個基於XML的配置文件來配置分別是webxml和strutscofigxml文件webxml文件是配置所有web應用的而strutsconfigxml文件是struts專用的配置文件事實上也是可以根據需要給這個配置文件起其他名稱的
Web應用的發布描述文件:
web應用發布描述文件可以在應用開著者發布者和組裝者之間傳遞配置信息Web容器在啟動的時候從該文件中讀取配置信息根據它來裝載和配置web應用文檔類型定義DTD對XML文檔的格式做了定義DTD吧XML文檔劃分為元素屬性實體每一種XML文檔都有獨自的DTD文件可以從網上下載<webapp>元素是webxml的根元素其他元素必須嵌入在<webapp>元素之內要注意的是子元素也是有順序的比如必須是首先<servlet>然後<servletmapping>最後<taglib>
為Struts應用配置Webxml文件:
首先最重要的一步是配置ActionServlet這個用<servlet>標簽的servletname屬性起一個名字叫action然後用servletclass屬性指定ActionServlet的類
然後用<servletmapping>標簽的servletname屬性指定action在用urlpattern指定接收范圍是*do的請求不管應用中包含了多少子應用都只需要配置一個ActionServlet類來出來應用中的不同的功能其實者就是不必要的因為Servlet本身就是多線程的而且目前Struts只允許配置一個ActionServlet聲明ActionServlet的初始化參數:<servlet>的<initparam>子元素用來配置Servlet的初始化參數paramname設置config參數名paramvalue設置strutsconfigxml的路徑參數值
配置歡迎使用清單:
如果客戶訪問Web的時候值是訪問了WEB應用的根目錄URL沒有具體的指定文件Web會自動調用Web的歡迎文件<welcomefilelist>元素來配置的通過其中的<welcomefile>歡迎頁面</welcomefile>來配置
配置錯誤處理:
盡管Struts框架功能強大的錯誤處理機制但是不能保證處理所有的錯誤或者異常當錯誤發生時如果框架不能處理這種錯誤把錯誤拋棄給Web容器在默認的情況下web容器會想客戶端返回錯誤信息如果想避免讓客戶看到原始的錯誤信息可以在Web應用發布描述文件中配置<errorpage>元素通過<errorcode>來定義錯誤的類型然後通過<location>要處理錯誤的JSP頁面來對錯誤進行處理還可以用<exceptiontype>來設置異常然後通過<location>來處理異常的JSP頁面來處理異常
配置Struts標簽庫:
這個就和以前學到的JSP自定義標簽類似配置元素為<taglib>來配置<tagliburi>這個指定標簽庫的uri類似起一個名稱<tagliblocation>這個是標簽庫的位置也就是實際所在的路徑通過這樣的方法引入一個標簽庫然後在前台JSP頁面就可以通過自己定義的URI來調用標簽
Struts配置文件:
strutsconfigxml文件
首先研討一下onfig包在struts應用啟動的時候會把Struts配置文件信息讀取到內存中並把它們存放在config包中相關的JavaBean類的實例中包中的每一個類都和struts配置文件中特定的配置元素對應ModuleConfig在Struts框架中扮演了十分重要的角色它是整個config包的核心在Struts運行時來存放整個應用的配置信息如果有多個子應用都會有一個ModuleConfig對象它和Struts文件根元素的<strutsconfig>對應根元素中包含<formbean><action><forward>等元素
<strutsconfig>元素:時Struts配置文件的根元素和它對應的配置類ModuleConfig類<strutsconfig>元素有個子元素他們的DTD定義是datasources?formbean? globalexception?globalforwards?actionmapping?controller?messageresources?plugin*在Struts配置文件中必須按照DTD指定的先手順序來配置<strutsconfig>元素的各個子元素如果顛倒了這些子元素的順序會產生錯誤
<datasources>元素:用來配置應用所需要的數據源數據源負責創建和特定的數據庫的連接許多數據源采用連接池的機制實現以便提高數據庫訪問的性能JAVA語言提供了javaxsqlDataSource接口所有的數據源都必須實現這個接口許多應用服務器和Web服務器都提供了數據源組件很多數據庫廠商也提供了數據源的實現<datasources>元素包含多個<datasource>子元素永遠配置特定的數據源他們可以包含多個<setproperty>子元素用於設置數據源的各種屬性配置了數據源以後就可以在Action類中訪問數據源在Action中定義了getDataSource(HttpRequest)方法用於獲取數據源對象的引用然後可以利用DataSource對象調用getConnection獲取一個連接對象對數據庫進行操作在配置文件中聲明多個數據源的時候需要為每一個數據源分配唯一的Key值通過這個來表示特定的數據源獲取特定的數據源的時候可以用dataSource = getDataSource(reqeustA);
<formbeans>元素:用來配置多個ActionForm包含一個或者N個<formbean>子元素每個<formbean>元素都包含多個屬性className指定和<formbean>匹配的類name指定該ActionForm的唯一標識符這個屬性是必須的以後作為引用使用type指定ActionForm類的完整類名這個屬性也是必須的注意包名也要加上<formproperty>是指定動態的Form的元素以後會深入了解
<globalexception>元素:用於配置異常處理元素可以包含一個或者多個<exception>元素用來設置JAVA異常和異常處理類ExceptionHandler之間的映射className指定和元素對應的配置類默認的不用動handler指定異常處理類默認是ExceptionHandlerkey指定在本地資源文件中異常的消息Keypath指定當前異常發生的時候轉發的路徑scope指定ActionMessages實例存放的范圍type指定需要處理異常類的名字必須的bundle指定Resource Bundle
<globalforwards>元素:用來聲明全局轉發元素可以有一個或者N個<forward>元素組成用於把一個邏輯名映射到特定的URL通過這種方法Action類或者JSP頁面無需指定URL只要指定邏輯名稱就可以實現請求轉發或者重定向這樣可以減少控制組件和視圖的聚合易於維護className對應的配置ntextRelative如果為true表示當path屬性以/開頭的時候給出的是對應的上下文URL默認是falsename轉發路徑的邏輯名必須寫path轉發或者重定向的URL必須寫必須是以/開頭redirect設置為true的時候表示執行重定向操作此項為false的時候表示執行請求轉發操作重定向與請求轉發的區別以後就是重定向是把請求生成應答給客戶端然後在重新發送給定向的URL浏覽器地址欄會有顯示而轉發就是直接把請求轉發給本應用的另一個文件不生成應答所以客戶端IE沒顯示
<actionmapping>元素:包含一個或者N個<action>元素描述了從特定的請求路徑到響應的Action的映射在<action>元素中可以包含多個<exception>和<forward>子元素他們分別配置局部異常處理和局部轉發attribute設置Action關聯的ActionForm在request或者session范圍內的key就是在request或者session共享內的名稱className對應配置元素的類默認的是ActionMappingforward指定轉發URL路徑include指定包含URL路徑input指定包含表單的URL當表單驗證失敗的時候發送的URLname指定和該Action關聯的Form名字該名字必須是在formbean中定義過的可寫可不寫path必須/開頭的方位Action的路徑parameter指定Action配置參數在Action的execute()方法中可以調用ActionMapping的getParameter()方法來讀取匹配的參數roles指定允許調用該Action的安全角色多個角色之間逗號格開scope指定Form的存在范圍默認是sessiontyep指定Action的完整類名unknown如果是true表示可以處理用戶發出的所有的無效的ActionURL默認是falsevalidate指定是否調用ActionForm的validate方法
<controller>元素:用於配置ActionServletbuffreSize指定上載文件的輸入緩沖大小該屬性為可選默認className指定元素對應的配置類ControllerConfig然後是contentType指定響應結果內容類型和字符編碼該屬性為可選默認是text/html如果在Action或者JSP網頁也設置了類型內容會覆蓋這個locale指定是否把Locale對象保存到當前用戶的session中默認falsetempDir指定處理文件上載的臨時工作目錄nochache如果是true在響應結果中加入特定的頭參數
<messageresources>元素:用來配置Resource Bundle用於存放本地文本消息文件className元素對應的配置類MessageResourcesConfigfactory指定消息的工廠類key指定文件存放的Servlet對象中采用的屬性Keynull指定如何處理未知消息parameter指定消息的文件名
<plugin>元素:用於配置Struts插件
配置多應用模塊:所有的子應用都可以共享同一個ActionServlet實例但是每個子應用都有單獨的配置文件把應用劃分為多個子應用模塊首先為每個應用創建單獨的Struts配置文件在webxml的ActionServlet配置代碼中添加幾個子應用信息采用元素來實現應用之間的切換
Digester組件:是一個Apache的另一個開源代碼項目當Struts被初始化的時候首先會讀取並解析配置文件框架采用Digester組件來且西配置文件然後創建config包中的對象者對象用於存放配置信息
其實配置文件不難只要都理其中的原理就OK了真正實際的項目開發中采用的工具例如Eclipse系列提供了相應的插件在創建一個Struts工程的時候配置文件的標簽都是自動生成的而我們只需要往裡面填寫屬性就OK了
From:http://tw.wingwit.com/Article/program/Java/ky/201311/27936.html