Struts2配置詳解!

jopen 11年前發布 | 55K 次閱讀 Struts2 Web框架

Struts2框架按照以下搜索順序加載Struts2常量:

1.struts-default.xml---該文件保存在struts2-core-2.x.x.jar文件中

2.struts-pluugin.xml---在struts2一些插件jar包里,比如struts2-xxx-plugin-2.3.x.x.jar

3.struts.xml---Web應用默認的Struts2配置文件

4.struts.properties---Web應用默認的Struts2配置文件

5.web.xml--Web應用的配置文件

如果多個文件中配置同一個常量,則后者覆蓋前者,常量的配置為兩個屬性,常量name和常量value

一、常量配置

Struts2中配置常量通常都是在struts.xml中配置,因為方便管理還有統一,當然也可以在struts.properties文件來配置,專門用作于struts2的常量配置文件,還有一種是在web.xml里配置

1.struts.xml-----通常推薦配置在這里

</tr> </tbody> </table> </div>

<struts>

</tr> </tbody> </table> </div>

    <constant name="struts.i18n.encoding" value="UTF-8"/>

</tr> </tbody> </table> </div>

    ......

</tr> </tbody> </table> </div> </div> </div> </div>

2.struts.properties--<K-V>形式,K-name V-value

</struts>

</tr> </tbody> </table> </div>

### 設置Web應用的字符編碼 

</tr> </tbody> </table> </div> </div> </div> </div>

3.web.xml-----未試驗過

struts.i18n.encoding=UTF-8

</tr> </tbody> </table> </div>

<filter>

</tr> </tbody> </table> </div>

     <!-- 定義核心Filter的名字和實現類 -->

</tr> </tbody> </table> </div>

    <filter-name>struts2</filter-name>

</tr> </tbody> </table> </div>

    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>

</tr> </tbody> </table> </div>

     

</tr> </tbody> </table> </div>

    <init-param>

</tr> </tbody> </table> </div>

        <param-name>struts.i18n.encoding</param-name>

</tr> </tbody> </table> </div>

        <param-value>UTF-8</param-value>

</tr> </tbody> </table> </div>

    </init-param>

</tr> </tbody> </table> </div> </div> </div> </div>

二、常量詳解

  </filter>

</tr> </tbody> </table> </div>

<struts

</tr> </tbody> </table> </div>

    <!-- 指定Web應用的默認編碼集,相當于調用HttpServletRequest的setCharacterEncoding方法 --> 

</tr> </tbody> </table> </div>

    <constant name="struts.i18n.encoding" value="UTF-8" /> 

</tr> </tbody> </table> </div>

   

</tr> </tbody> </table> </div>

    <!-- 

</tr> </tbody> </table> </div>

        該屬性指定需要Struts 2處理的請求后綴,該屬性的默認值是action,即所有匹配*.action的請求都由Struts2處理。 

</tr> </tbody> </table> </div>

        如果用戶需要指定多個請求后綴,則多個后綴之間以英文逗號(,)隔開。 

</tr> </tbody> </table> </div>

    --> 

</tr> </tbody> </table> </div>

    <constant name="struts.action.extension" value="do" /> 

</tr> </tbody> </table> </div>

   

</tr> </tbody> </table> </div>

    <!-- 設置瀏覽器是否緩存靜態內容,默認值為true(生產環境下使用),開發階段最好關閉 --> 

</tr> </tbody> </table> </div>

    <constant name="struts.serve.static.browserCache" value="false" /> 

</tr> </tbody> </table> </div>

   

</tr> </tbody> </table> </div>

    <!-- 當struts的配置文件修改后,系統是否自動重新加載該文件,默認值為false(生產環境下使用),開發階段最好打開 --> 

</tr> </tbody> </table> </div>

    <constant name="struts.configuration.xml.reload" value="true" /> 

</tr> </tbody> </table> </div>

   

</tr> </tbody> </table> </div>

    <!-- 開發模式下使用,這樣可以打印出更詳細的錯誤信息 --> 

</tr> </tbody> </table> </div>

    <constant name="struts.devMode" value="true" /> 

</tr> </tbody> </table> </div>

   

</tr> </tbody> </table> </div>

    <!-- 默認的視圖主題 --> 

</tr> </tbody> </table> </div>

    <constant name="struts.ui.theme" value="simple" /> 

</tr> </tbody> </table> </div>

   

</tr> </tbody> </table> </div>

    <!-- spring 托管 --> 

</tr> </tbody> </table> </div>

    <constant name="struts.objectFactory" value="spring" /> 

</tr> </tbody> </table> </div>

   

</tr> </tbody> </table> </div>

    <!-- 

</tr> </tbody> </table> </div>

        指定加載struts2配置文件管理器,默認為org.apache.struts2.config.DefaultConfiguration 

</tr> </tbody> </table> </div>

        開發者可以自定義配置文件管理器,該類要實現Configuration接口,可以自動加載struts2配置文件。 

</tr> </tbody> </table> </div>

    --> 

</tr> </tbody> </table> </div>

    <constant name="struts.configuration" 

</tr> </tbody> </table> </div>

        value="org.apache.struts2.config.DefaultConfiguration" /> 

</tr> </tbody> </table> </div>

   

</tr> </tbody> </table> </div>

    <!-- 設置默認的locale和字符編碼 --> 

</tr> </tbody> </table> </div>

    <constant name="struts.locale" value="zh_CN" /> 

</tr> </tbody> </table> </div>

    <constant name="struts.i18n.encoding" value="GBK" /> 

</tr> </tbody> </table> </div>

   

</tr> </tbody> </table> </div>

    <!-- 指定Struts的工廠類 --> 

</tr> </tbody> </table> </div>

    <constant name="struts.objectFactory" value="spring"></constant

</tr> </tbody> </table> </div>

   

</tr> </tbody> </table> </div>

    <!-- 

</tr> </tbody> </table> </div>

        指定spring框架的裝配模式,裝配方式有: name, type, auto, and constructor (name 

</tr> </tbody> </table> </div>

        是默認裝配模式) 

</tr> </tbody> </table> </div>

    --> 

</tr> </tbody> </table> </div>

    <constant name="struts.objectFactory.spring.autoWire" value="name" /> 

</tr> </tbody> </table> </div>

   

</tr> </tbody> </table> </div>

    <!-- 該屬性指定整合spring時,是否對bean進行緩存,值為true or false,默認為true --> 

</tr> </tbody> </table> </div>

    <cosntant name="struts.objectFactory.spring.useClassCache" /> 

</tr> </tbody> </table> </div>

   

</tr> </tbody> </table> </div>

    <!-- 指定類型檢查,包含tiger和notiger --> 

</tr> </tbody> </table> </div>

    <cosntant name="struts.objectTypeDeterminer" value="tiger" /> 

</tr> </tbody> </table> </div>

   

</tr> </tbody> </table> </div>

    <!-- 該屬性指定處理 MIME-type multipart/form-data,文件上傳 --> 

</tr> </tbody> </table> </div>

    <constant name="struts.multipart.parser" value="cos" /> 

</tr> </tbody> </table> </div>

    <constant name="struts.multipart.parser" value="pell" /> 

</tr> </tbody> </table> </div>

    <constant name="struts.multipart.parser" value="jakarta" /> 

</tr> </tbody> </table> </div>

   

</tr> </tbody> </table> </div>

    <!-- 指定上傳文件時的臨時目錄,默認使用 javax.servlet.context.tempdir --> 

</tr> </tbody> </table> </div>

    <constant name="struts.multipart.saveDir" value="/tmpuploadfiles" /> 

</tr> </tbody> </table> </div>

   

</tr> </tbody> </table> </div>

    <!-- 該屬性指定Struts 2文件上傳中整個請求內容允許的最大字節數 --> 

</tr> </tbody> </table> </div>

    <constant name="struts.multipart.maxSize" value="2097152" /> 

</tr> </tbody> </table> </div>

   

</tr> </tbody> </table> </div>

    <!-- 

</tr> </tbody> </table> </div>

        該屬性指定Struts2應用加載用戶自定義的屬性文件,該自定義屬性文件指定的屬性不會覆蓋 

</tr> </tbody> </table> </div>

        struts.properties文件中指定的屬性。如果需要加載多個自定義屬性文件,多個自定義屬性文 

</tr> </tbody> </table> </div>

        件的文件名以英文逗號(,)隔開。(也就是說不要改寫struts.properties!) 

</tr> </tbody> </table> </div>

    --> 

</tr> </tbody> </table> </div>

    <constant name="struts.custom.properties" 

</tr> </tbody> </table> </div>

        value="application,org/apache/struts2/extension/custom" /> 

</tr> </tbody> </table> </div>

   

</tr> </tbody> </table> </div>

    <!--

</tr> </tbody> </table> </div>

        指定請求url與action映射器,默認為org.apache.struts2.dispatcher.mapper.DefaultActionMapper

</tr> </tbody> </table> </div>

    --> 

</tr> </tbody> </table> </div>

    <constant name="struts.mapper.class" 

</tr> </tbody> </table> </div>

        value="org.apache.struts2.dispatcher.mapper.DefaultActionMapper" /> 

</tr> </tbody> </table> </div>

   

</tr> </tbody> </table> </div>

    <!-- 指定action的后綴,默認為action --> 

</tr> </tbody> </table> </div>

    <constant name="struts.action.extension" value="do" /> 

</tr> </tbody> </table> </div>

   

</tr> </tbody> </table> </div>

    <!-- 被 FilterDispatcher使用指定瀏覽器是否緩存靜態內容,測試階段設置為false,發布階段設置為true. --> 

</tr> </tbody> </table> </div>

    <constant name="struts.serve.static.browserCache" value="true" /> 

</tr> </tbody> </table> </div>

   

</tr> </tbody> </table> </div>

    <!-- 設置是否支持動態方法調用,true為支持,false不支持. --> 

</tr> </tbody> </table> </div>

    <constant name="struts.enable.DynamicMethodInvocation" value="true" /> 

</tr> </tbody> </table> </div>

   

</tr> </tbody> </table> </div>

    <!-- 設置是否可以在action中使用斜線,默認為false不可以,想使用需設置為true. --> 

</tr> </tbody> </table> </div>

    <constant name="struts.enable.SlashesInActionNames" value="true" /> 

</tr> </tbody> </table> </div>

   

</tr> </tbody> </table> </div>

    <!-- 是否允許使用表達式語法,默認為true. --> 

</tr> </tbody> </table> </div>

    <constant name="struts.tag.altSyntax" value="true" /> 

</tr> </tbody> </table> </div>

   

</tr> </tbody> </table> </div>

    <!-- 設置當struts.xml文件改動時,是否重新加載 --> 

</tr> </tbody> </table> </div>

    <cosntant name="struts.configuration.xml.reload" value="true" /> 

</tr> </tbody> </table> </div>

   

</tr> </tbody> </table> </div>

    <!-- 設置struts是否為開發模式,默認為false,測試階段一般設為true. --> 

</tr> </tbody> </table> </div>

    <cosntant name="struts.devMode" value="true" /> 

</tr> </tbody> </table> </div>

   

</tr> </tbody> </table> </div>

    <!-- 設置是否每次請求,都重新加載資源文件,默認值為false. --> 

</tr> </tbody> </table> </div>

    <cosntant name="struts.i18n.reload" value="false" /> 

</tr> </tbody> </table> </div>

   

</tr> </tbody> </table> </div>

    <!-- 標準的UI主題,默認的UI主題為xhtml,可以為simple,xhtml或ajax --> 

</tr> </tbody> </table> </div>

    <cosntant name="struts.ui.theme" value="xhtml" /> 

</tr> </tbody> </table> </div>

   

</tr> </tbody> </table> </div>

    <!-- 模板目錄 --> 

</tr> </tbody> </table> </div>

    <cosntant name="struts.ui.templateDir" value="template" /> 

</tr> </tbody> </table> </div>

   

</tr> </tbody> </table> </div>

    <!-- 設置模板類型. 可以為 ftl, vm, or jsp --> 

</tr> </tbody> </table> </div>

    <cosntant name="struts.ui.templateSuffix" value="ftl" /> 

</tr> </tbody> </table> </div>

   

</tr> </tbody> </table> </div>

    <!-- 定位velocity.properties 文件. 默認velocity.properties --> 

</tr> </tbody> </table> </div>

    <cosntant name="struts.velocity.configfile" value="velocity.properties" /> 

</tr> </tbody> </table> </div>

   

</tr> </tbody> </table> </div>

    <!-- 設置velocity的context. --> 

</tr> </tbody> </table> </div>

    <cosntant name="struts.velocity.contexts" value="...." /> 

</tr> </tbody> </table> </div>

   

</tr> </tbody> </table> </div>

    <!-- 定位toolbox --> 

</tr> </tbody> </table> </div>

    <cosntant name="struts.velocity.toolboxlocation" value="...." /> 

</tr> </tbody> </table> </div>

   

</tr> </tbody> </table> </div>

    <!-- 指定web應用的端口 --> 

</tr> </tbody> </table> </div>

    <cosntant name="struts.url.http.port" value="80" /> 

</tr> </tbody> </table> </div>

   

</tr> </tbody> </table> </div>

    <!-- 指定加密端口 --> 

</tr> </tbody> </table> </div>

    <cosntant name="struts.url.https.port" value="443" /> 

</tr> </tbody> </table> </div>

   

</tr> </tbody> </table> </div>

    <!-- 設置生成url時,是否包含參數.值可以為: none,get or all --> 

</tr> </tbody> </table> </div>

    <cosntant name="struts.url.includeParams" value="get" /> 

</tr> </tbody> </table> </div>

   

</tr> </tbody> </table> </div>

    <!-- 設置要加載的國際化資源文件,以逗號分隔. --> 

</tr> </tbody> </table> </div>

    <cosntant name="struts.custom.i18n.resources" value="application" /> 

</tr> </tbody> </table> </div>

   

</tr> </tbody> </table> </div>

    <!-- 

</tr> </tbody> </table> </div>

        對于一些web應用服務器不能處理HttpServletRequest.getParameterMap(), 像 

</tr> </tbody> </table> </div>

        WebLogic,Orion, and OC4J等,須設置成true,默認為false. 

</tr> </tbody> </table> </div>

    --> 

</tr> </tbody> </table> </div>

    <cosntant name="struts.dispatcher.parametersWorkaround" value="false" /> 

</tr> </tbody> </table> </div>

   

</tr> </tbody> </table> </div>

    <!-- 指定freemarker管理器 --> 

</tr> </tbody> </table> </div>

    <cosntant name="struts.freemarker.manager.classname" 

</tr> </tbody> </table> </div>

        value="org.apache.struts2.views.freemarker.FreemarkerManager" /> 

</tr> </tbody> </table> </div>

   

</tr> </tbody> </table> </div>

    <!-- 設置是否對freemarker的模板設置緩存,效果相當于把template拷貝到 WEB_APP/templates. --> 

</tr> </tbody> </table> </div>

    <cosntant name="struts.freemarker.templatesCache" value="false" /> 

</tr> </tbody> </table> </div>

   

</tr> </tbody> </table> </div>

    <!-- 通常不需要修改此屬性. --> 

</tr> </tbody> </table> </div>

    <cosntant name="struts.freemarker.wrapper.altMap" value="true" /> 

</tr> </tbody> </table> </div>

   

</tr> </tbody> </table> </div>

    <!-- 指定xslt result是否使用樣式表緩存.開發階段設為true,發布階段設為false. --> 

</tr> </tbody> </table> </div>

    <cosntant name="struts.xslt.nocache" value="false" /> 

</tr> </tbody> </table> </div>

   

</tr> </tbody> </table> </div>

    <!-- 設置struts自動加載的文件列表. --> 

</tr> </tbody> </table> </div>

    <cosntant name="struts.configuration.files" 

</tr> </tbody> </table> </div>

        value="struts-default.xml,struts-plugin.xml,struts.xml" /> 

</tr> </tbody> </table> </div>

   

</tr> </tbody> </table> </div>

    <!-- 設定是否一直在最后一個slash之前的任何位置選定namespace. --> 

</tr> </tbody> </table> </div>

    <cosntant name="struts.mapper.alwaysSelectFullNamespace" 

</tr> </tbody> </table> </div>

        value="false" /> 

</tr> </tbody> </table> </div> </div> </div> </div>

三、strust2配置詳解

1.包配置:

</struts>

</tr> </tbody> </table> </div>

<?xml version="1.0" encoding="UTF-8" ?>

</tr> </tbody> </table> </div>

<!DOCTYPE struts PUBLIC

</tr> </tbody> </table> </div>

    "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"

</tr> </tbody> </table> </div>

    "http://struts.apache.org/dtds/struts-2.1.dtd">

</tr> </tbody> </table> </div>

     

</tr> </tbody> </table> </div>

<struts>

</tr> </tbody> </table> </div>

    <!-- 常量配置,用到constant標簽 -->

</tr> </tbody> </table> </div>

    <constant name="struts.i18n.encoding"  value="UTF-8"/>

</tr> </tbody> </table> </div>

     

</tr> </tbody> </table> </div>

    <!-- 包配置:一般都要繼承struts-default,因為該包有默認的攔截器等東西 -->

</tr> </tbody> </table> </div>

    <!--namespace:命名空間,考慮到可能出現相同的action,如果有命名空間就可以解決  -->

</tr> </tbody> </table> </div>

    <package name="default" namespace="/user" extends="struts-default">

</tr> </tbody> </table> </div>

     

</tr> </tbody> </table> </div>

        <!-- 定義一個action -->

</tr> </tbody> </table> </div>

        <action name="login" class="cn.itcast.Action.LoginAction" method="execute">

</tr> </tbody> </table> </div>

         

</tr> </tbody> </table> </div>

            <!--  返回一個String常量,轉發至對應的JSP頁面-->

</tr> </tbody> </table> </div>

            <result name="success">/welcome.jsp</result>

</tr> </tbody> </table> </div>

            <result name="login">/login.jsp</result>

</tr> </tbody> </table> </div>

        </action>

</tr> </tbody> </table> </div>

    </package>

</tr> </tbody> </table> </div>

 

</tr> </tbody> </table> </div> </div> </div> </div>

常量配置:用到 constant 標簽 ,name 和 value 兩屬性

命名空間: namespace=”/user”,http://localhost:8080/user/login.action 查找條件是優先到指定命名空間尋找對應的action,如果找到就用不再繼續找,如果找不到,則到默認的命名空間找,否則報錯

包含配置:<include>:如果應用規模逐漸增大,系統中的action也越來越多,導致struts.xml配置越來越臃腫,這時就可以考慮拆分struts.xml文件。

</struts>

</tr> </tbody> </table> </div>

<?xml version="1.0" encoding="UTF-8" ?>

</tr> </tbody> </table> </div>

<!DOCTYPE struts PUBLIC

</tr> </tbody> </table> </div>

    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

</tr> </tbody> </table> </div>

    "http://struts.apache.org/dtds/struts-2.0.dtd">

</tr> </tbody> </table> </div>

<struts>

</tr> </tbody> </table> </div>

    <include file="test1.xml"/>

</tr> </tbody> </table> </div>

    <include file="test2.xml"/>

</tr> </tbody> </table> </div>

    <include file="test3.xml"/>

</tr> </tbody> </table> </div> </div> </div> </div>

攔截器:可以在Action執行前或執行后啟動,類似于過濾器,主要用到了AOP編程思想

</struts>

</tr> </tbody> </table> </div>

<struts>

</tr> </tbody> </table> </div>

    <!-- 常量配置,用到constant標簽 -->

</tr> </tbody> </table> </div>

    <constant name="struts.i18n.encoding"  value="UTF-8"/>

</tr> </tbody> </table> </div>

    <!-- 包配置:一般都要繼承struts-default,因為該包有默認的攔截器等東西 -->

</tr> </tbody> </table> </div>

    <!--namespace:命名空間,考慮到可能出現相同的action,如果有命名空間就可以解決  -->

</tr> </tbody> </table> </div>

    <package name="default" namespace="/user" extends="struts-default">

</tr> </tbody> </table> </div>

         

</tr> </tbody> </table> </div>

        <interceptors>

</tr> </tbody> </table> </div>

         

</tr> </tbody> </table> </div>

            <!--定義兩個攔截器,權限檢查和日志記錄攔截器-->

</tr> </tbody> </table> </div>

            <interceptor name="authority" class="cn.java.AuthorityInterceptor"/>

</tr> </tbody> </table> </div>

            <interceptor name="log" class="cn.java.LogInterceptor"/>

</tr> </tbody> </table> </div>

             

</tr> </tbody> </table> </div>

            <!--定義一個攔截器棧,里面包含權限檢查和日志記錄攔截器-->

</tr> </tbody> </table> </div>

            <interceptor-stack name="">

</tr> </tbody> </table> </div>

                <interceptor-ref name="authority"></interceptor-ref>

</tr> </tbody> </table> </div>

                <interceptor-ref name="log"></interceptor-ref>

</tr> </tbody> </table> </div>

            </interceptor-stack>

</tr> </tbody> </table> </div>

        </interceptors>

</tr> </tbody> </table> </div>

         

</tr> </tbody> </table> </div>

        <!-- 定義一個action -->

</tr> </tbody> </table> </div>

        <action name="login" class="cn.java.Action.LoginAction" method="execute">

</tr> </tbody> </table> </div>

         

</tr> </tbody> </table> </div>

            <!--  返回一個String常量,轉發至對應的JSP頁面-->

</tr> </tbody> </table> </div>

            <result name="success">/welcome.jsp</result>

</tr> </tbody> </table> </div>

            <result name="login">/login.jsp</result>

</tr> </tbody> </table> </div>

             

</tr> </tbody> </table> </div>

            <!-- 在Action中使用攔截器或攔截器棧方式都是一樣的 -->

</tr> </tbody> </table> </div>

            <interceptor-ref name="log"/>

</tr> </tbody> </table> </div>

        </action>

</tr> </tbody> </table> </div> </struts>

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!
    </package>
  • sesese色