天天看點

Struts配置檔案詳細講解(轉)(但很詳細)

     Struts應用采用兩個基于XML的配置檔案來配置,分别是web.xml和struts-cofig.xml檔案.web.xml檔案是配置所有 web應用的而struts-config.xml檔案是struts專用的配置檔案,事實上也是可以根據需要給這個配置檔案起其他名稱的.

        Web應用的釋出描述檔案:

        web應用釋出描述檔案可以在應用開着者,釋出者群組裝者之間傳遞配置資訊,Web容器在啟動的時候從該檔案中讀取配置資訊,根據它來裝載和配置web應 用.文檔類型定義DTD對XML文檔的格式做了定義,DTD吧XML文檔劃分為元素,屬性,實體每一種XML文檔都有獨自的DTD檔案.< web-app>元素是web.xml的根元素,其他元素必須嵌入在<web-app>元素之内.要注意的是子元素也是有順序的比如必 須是首先<servlet>,然後<servlet-mapping>最後<taglib>.

        為Struts應用配置Web.xml檔案:

        首先最重要的一步是配置ActionServlet,這個用<servlet>标簽的servlet-name屬性起一個名字叫action,然後用servlet-class屬性指定ActionServlet的類.

        然後用<servlet-mapping>标簽的servlet-name屬性指定action,在用url-pattern指定接收範圍是 *.do的請求.不管應用中包含了多少子應用,都隻需要配置一個ActionServlet,類來出來應用中的不同的功能,其實者就是不必要的,因為 Servlet本身就是多線程的,而且目前Struts隻允許配置一個ActionServlet.聲明ActionServlet的初始化參數: <servlet>的<init-param>子元素用來配置Servlet的初始化參數.param-name設定 config參數名.param-value設定struts-config.xml的路徑參數值.

        配置歡迎使用清單:

        如果客戶通路Web的時候值是通路了WEB應用的根目錄URL.沒有具體的指定檔案,Web會自動調用Web的歡迎檔案.<welcome- file-list>元素來配置的.通過其中的<welcome-file>歡迎頁面</welcome-file>來配 置.

        配置錯誤處理:

        盡管Struts架構功能強大的錯誤處理機制,但是不能保證處理所有的錯誤或者異常.當錯誤發生時,如果架構不能處理這種錯誤,把錯誤抛棄給Web容器, 在預設的情況下web容器會想用戶端傳回錯誤資訊.如果想避免讓客戶看到原始的錯誤資訊,可以在Web應用釋出描述檔案中配置<error- page>元素.通過<error-code>404來定義錯誤的類型.然後通過<location>要處理錯誤的JSP 頁面來對錯誤進行處理.還可以用<exception-type>來設定異常,然後通過<location>來處理異常的JSP 頁面來處理異常.

        配置Struts标簽庫:

        這個就和以前學到的JSP自定義标簽類似,配置元素為<taglib>來配置.<taglib-uri>這個指定标簽庫的 uri,類似起一個名稱.<taglib-location>這個是标簽庫的位置也就是實際所在的路徑.通過這樣的方法引入一個标簽庫,然後 在前台JSP頁面就可以通過自己定義的URI來調用标簽.

        Struts配置檔案:

        struts-config.xml檔案.

        首先研讨一下org.apache.struts.config包,在struts應用啟動的時候會把Struts配置檔案資訊讀取到記憶體中,并把它們存放在config包中相關的JavaBean 類的執行個體中.包中的每一個類都和struts配置檔案中特定的配置元素對應,ModuleConfig在Struts架構中扮演了十分重要的角色,它是整 個config包的核心,在Struts運作時來存放整個應用的配置資訊.如果有多個子應用都會有一個ModuleConfig對象,它和Struts文 件根元素的<struts-config>對應.根元素中包含<form-bean><action>< forward>等元素.

        <struts-config>元素:時Struts配置檔案的根元素,和它對應 的配置類ModuleConfig類,<struts-config>元素有8個子元素.他們的DTD定義是data-sources? form-bean? global-exception?global-forwards?action-mapping?controller?message-resources? plug-in*在Struts配置檔案中,必須按照DTD指定的先手順序來配置<struts-config>元素的各個子元素,如果颠倒 了這些子元素的順序,會産生錯誤.

        <data-sources>元素:用來配置應用所需要的資料源,資料源負責建立和特定的資料庫的連接配接.許多資料源采用連接配接池的機制實作.以便提高資料庫通路的性能.JAVA語言提供了javax.sql.DataSource接口,所有的資料源都必須實作這個接口.許多應用伺服器和Web伺服器都 提供了資料源元件.很多資料庫廠商也提供了資料源的實作.<data-sources>元素包含多個<data-source> 子元素永遠配置特定的資料源.他們可以包含多個<set-property>子元素用于設定資料源的各種屬性.配置了資料源以後,就可以在 Action類中通路資料源,在Action中定義了getDataSource(HttpRequest)方法,用于擷取資料源對象的引用.然後可以利 用DataSource對象調用getConnection擷取一個連接配接對象對資料庫進行操作.在配置檔案中聲明多個資料源的時候需要為每一個資料源配置設定 唯一的Key值,通過這個來表示特定的資料源.擷取特定的資料源的時候可以用dataSource = getDataSource(reqeust,”A”);

        <form-beans>元素:用來配置多個ActionForm,包含一個或者 N個<form-bean>子元素.每個<form-bean>元素都包含多個屬性.className指定和<form -bean>比對的類.name指定該ActionForm的唯一辨別符,這個屬性是必須的以後作為引用使用.type指定ActionForm類 的完整類名,這個屬性也是必須的.注意包名也要加上.<form-property>是指定動态的Form的元素,以後會深入了解.

        <global-exception>元素:用于配置異常處理,元素可以包含一個 或者多個<exception>元素,用來設定JAVA異常和異常處理類ExceptionHandler之間的映射.className指 定和元素對應的配置類,預設的不用動.handler指定異常處理類預設是ExceptionHandler.key指定在本地資源檔案中異常的消息 Key,path指定目前異常發生的時候轉發的路徑.scope指定ActionMessages執行個體存放的範圍.type指定需要處理異常類的名字,必 須的.bundle指定Resource Bundle.

        <global-forwards>元素:用來聲明全局轉發,元素可以有一個或者 N個<forward>元素組成,用于把一個邏輯名映射到特定的URL,通過這種方法Action類或者JSP頁面無需指定URL,隻要指定 邏輯名稱就可以實作請求轉發或者重定向.這樣可以減少控制元件和視圖的聚合.易于維護.className對應的配置類.contextRelative 如果為true表示當path屬性以/開頭的時候,給出的是對應的上下文URL預設是false.name轉發路徑的邏輯名,必須寫.path轉發或者重 定向的URL,必須寫必須是以/開頭.redirect設定為true的時候表示執行重定向操作,此項為false的時候,表示執行請求轉發操作.重定向 與請求轉發的差別以後就是重定向是把請求生成應答給用戶端然後在重新發送給定向的URL,浏覽器位址欄會有顯示.而轉發就是直接把請求轉發給本應用的另一 個檔案,不生成應答是以用戶端IE沒顯示.

        <action-mapping>元素:包含一個或者N個< action>元素,描述了從特定的請求路徑到響應的Action的映射.在<action>元素中可以包含多個< exception>和<forward>子元素,他們分别配置局部異常處理和局部轉發.attribute設定Action關聯的 ActionForm在request或者session範圍内的key.就是在request或者session共享内的名稱.className對應 配置元素的類.預設的是ActionMapping.forward指定轉發URL路徑include指定包含URL路徑.input指定包含表單的 URL,當表單驗證失敗的時候發送的URL.name,指定和該Action關聯的Form名字.該名字必須是在form-bean中定義過的,可寫可不 寫.path必須/開頭的方位Action的路徑.parameter指定Action配置參數.在Action的execute()方法中可以調用 ActionMapping的getParameter()方法來讀取比對的參數.roles指定允許調用該Action的安全角 色,多個角色之間逗号格開.scope指定Form的存在範圍.預設是session.tyep指定Action的完整類名.unknown如果是 true表示可以處理使用者發出的所有的無效的ActionURL預設是false.validate指定是否調用ActionForm的validate 方法.

        <controller>元素:用于配置 ActionServlet.buffreSize指定上載檔案的輸入緩沖大小.該屬性為可選預設4096.className指定元素對應的配置類, ControllerConfig.然後是contentType指定響應結果内容類型和字元編碼,該屬性為可選,預設是text/html如果在 Action或者JSP網頁也設定了類型内容,會覆寫這個.locale指定是否把Locale對象儲存到目前使用者的session中預設 false.tempDir指定處理檔案上載的臨時工作目錄.nochache如果是true在響應結果中加入特定的頭參數.

        <message-resources>元素:用來配置Resource Bundle.用于存放本地文本消息檔案.className元素對應的配置類.MessageResourcesConfig.factory指定消息 的工廠類.key指定檔案存放的Servlet對象中采用的屬性Key.null指定如何處理未知消息.parameter指定消息的檔案名.

        <plug-in>元素:用于配置Struts插件.

        配置多應用子產品:所有的子應用都可以共享同一個ActionServlet執行個體,但是每個子應用都有單獨的配置檔案.把應用劃分為多個子應用子產品.首先為 每個應用建立單獨的Struts配置檔案,在web.xml的ActionServlet配置代碼中添加幾個子應用資訊.采用< forward>元素來實作應用之間的切換.

        Digester元件:是一個Apache的另一個開源代碼項目.當Struts被初始化的時候,首先會讀取并解析配置檔案,架構采用Digester元件來且西配置檔案.然後建立config包中的對象.者對象用于存放配置資訊.

        其實配置檔案不難,隻要都理其中的原理就OK了.真正實際的項目開發中,采用的工具例如Eclipse系列,提供了相應的插件,在建立一個Struts工程的時候配置檔案的标簽都是自動生成的,而我們隻需要往裡面填寫屬性就OK了.

轉載于:https://www.cnblogs.com/gmh/archive/2008/02/20/1075273.html