美文网首页
struts2中struts.xml配置文件详解

struts2中struts.xml配置文件详解

作者: 奔跑的图腾 | 来源:发表于2018-07-14 11:54 被阅读0次

    struts基本配置

    <?xml version="1.0" encoding="UTF-8"?>
    
    <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "[http://struts.apache.org/dtds/struts-2.3.dtd](http://struts.apache.org/dtds/struts-2.3.dtd)">
    
    <struts>
    
        <!-- **所有匹配*.action的请求都由struts2处理** -->
    
        <constant name="struts.action.extension" value="action" />
    
        <!-- **是否启用开发模式** -->
    
        <constant name="struts.devMode" value="true" />
    
        <!-- **struts配置文件改动后,是否重新加载** -->
    
        <constant name="struts.configuration.xml.reload" value="true" />
    
        <!-- **设置浏览器是否缓存静态内容** -->
    
        <constant name="struts.serve.static.browserCache" value="false" />
    
        <!-- **请求参数的编码方式** -->
    
        <constant name="struts.i18n.encoding" value="utf-8" />
    
        <!-- **每次HTTP请求系统都重新加载资源文件,有助于开发** -->
    
        <constant name="struts.i18n.reload" value="true" />
    
        <!-- **文件上传最大值** -->
    
        <constant name="struts.multipart.maxSize" value="104857600" />
    
        <!-- **让struts2支持动态方法调用** -->
    
        <constant name="struts.enable.DynamicMethodInvocation" value="true" />
    
        <!-- **Action名称中是否还是用斜线** -->
    
        <constant name="struts.enable.SlashesInActionNames" value="false" />
    
        <!-- **允许标签中使用表达式语法** -->
    
        <constant name="struts.tag.altSyntax" value="true" />
    
        <!-- **对于WebLogic,Orion,OC4J此属性应该设置成true** -->
    
        <constant name="struts.dispatcher.parametersWorkaround" value="false" />
    
        <package name="basePackage" extends="struts-default">
    
        </package>
    
    </struts>
    
    <?xml version="1.0" encoding="UTF-8"?>
    
    <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "[http://struts.apache.org/dtds/struts-2.0.dtd](http://struts.apache.org/dtds/struts-2.0.dtd)" >
    
    <struts>
    
        <!-- **include节点是struts2中组件化的方式 可以将每个功能模块独立到一个xml配置文件中 然后用include节点引用** -->
    
        <include file="struts-default.xml"></include>
    
        <!-- **package提供了将多个Action组织为一个模块的方式**
    
            package的名字必须是唯一的 package可以扩展 当一个package扩展自
    
            另一个package时该package会在本身配置的基础上加入扩展的package
    
            的配置 父package必须在子package前配置
    
            name:package名称
    
            extends:继承的父package名称
    
            abstract:设置package的属性为抽象的 抽象的package不能定义action 值true:false
    
            namespace:定义package命名空间 该命名空间影响到url的地址,例如此命名空间为/test那么访问是的地址为[http://localhost:8080/struts2/test/XX.action](http://localhost:8080/struts2/test/XX.action)
    
         -->
    
        <**package** name="com.kay.struts2" extends="struts-default" namespace="/test">
    
            <interceptors>
    
                <!**-- 定义拦截器**
    
                    name:拦截器名称
    
                    class:拦截器类路径
    
                 -->
    
                <**interceptor** name="timer" class="com.kay.timer"></interceptor>
    
                <interceptor name="logger" class="com.kay.logger"></interceptor>
    
                <!-- **定义拦截器栈** -->
    
                <**interceptor-stack** name="mystack">
    
                    <interceptor-ref name="timer"></interceptor-ref>
    
                    <interceptor-ref name="logger"></interceptor-ref>
    
                </interceptor-stack>
    
            </interceptors>
    
            <!-- **定义默认的拦截器 每个Action都会自动引用**
    
             如果Action中引用了其它的拦截器 默认的拦截器将无效 -->
    
            **<default-interceptor-ref name="mystack"></default-interceptor-ref>**
    
            <!-- **全局results配置** -->
    
            <**global-results**>
    
                <result name="input">/error.jsp</result>
    
            </global-results>
    
            <!-- Action配置 一个Action可以被多次映射(只要action配置中的name不同)
    
                 name:action名称
    
                 class: 对应的类的路径
    
                 method: 调用Action中的方法名
    
            -->
    
            <**action** name="hello" class="com.kay.struts2.Action.LoginAction">
    
                <!-- **引用拦截器**
    
                    name:拦截器名称或拦截器栈名称
    
                 -->
    
                <**interceptor-ref** name="timer"></interceptor-ref>
    
                <!-- **节点配置**
    
                    name : result名称 和Action中返回的值相同
    
                    type : result类型 不写则选用superpackage的type struts-default.xml中的默认为dispatcher
    
                 -->
    
             <**result** name="success" type="dispatcher">/talk.jsp</result>
    
             <!-- **参数设置**
    
                 name:对应Action中的get/set方法
    
             -->
    
             <**param** name="url">[http://www.sina.com](http://www.sina.com/)</param>
    
            </action>
    
        </package>
    
    </struts>
    

    实例
    struts.xml配置

    <?xml version="1.0" encoding="UTF-8" ?>
    
    <!DOCTYPE struts PUBLIC
    
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    
        "[http://struts.apache.org/dtds/struts-2.0.dtd](http://struts.apache.org/dtds/struts-2.0.dtd)">
    
    <struts>
    
       <!-- 该属性指定视图标签默认的视图主题,该属性的默认值是xhtml,将值设置为simple,即不使用UI模板。这将不会生成额外的html标签 -->
    
         <constant name="struts.ui.theme" value="simple" />
    
         <!--该**属性指定视图主题所需要模板文件的位置,该属性的默认值是template,即默认加载template路径下的模板文件**  -->
    
         <constant name="struts.ui.templateDir" value="template" />
    
        <!-- **该属性指定模板文件的后缀,该属性的默认属性值是ftl。该属性还允许使用ftl、vm或jsp,分别对应FreeMarker、Velocity和JSP模板**-->
    
         <constant name="struts.ui.templateSuffix" value="ftl" />
    
         <!-- 设置用户自定义的资源文件路径列表(用,隔开) -->
    
         <constant name="struts.custom.i18n.resources" value="messageResource_zh_CN" />
    
         <!-- 设置用户自定义的资源文件路径列表(用,隔开) -->
    
         <constant name="struts.custom.i18n.resources" value="struts_format"/>
    
         <!-- 主要用于设置请求编码(默认值(UTF-8)) ,Head和Include标签的解析编码。资源和配置文件的解析编码 -->
    
         <constant name="struts.i18n.encoding" value="gbk" />
    
         <!-- 设置struts2的对象工厂,默认(struts),类名 -->
    
         <constant name="struts.objectFactory" value="spring" />
    
                <!-- struts配置文件改动后,是否重新加载 -->
    
         <constant name="struts.configuration-struts-config.xml.reload" value="false" />
    
             <!-- struts是否支持动态方法调用 -->
    
         <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    
         <!-- 在开发模式下,struts2的动态重新加载配置和资源文件的功能会默认生效。同时开发模式下也会提供更完善的日志支持 -->
    
         <!-- <constant name="struts.devMode" value="falue" /> -->
    
              <!-- 文件上传最大值 -->
    
         <constant name="struts.multipart.maxSize" value="120000000"/>
    
                **<!--** **(默认false)设置是否总是以自动装配策略创建对象 -->**
    
         <constant name="struts.objectFactory.spring.autoWire.alwaysRespect" value="true" />
    
         <!-- 指定配置文件 -->
    
         <include file="struts/interceptor.xml" />
    
         <include file="struts/interceptor-struts-config.xml" />
    
         <include file="struts/admin-struts-config.xml" />
    
    </struts>
    

    admin-struts-config.xml

    <?xml version="1.0" encoding="UTF-8" ?>
    
    <!DOCTYPE struts PUBLIC
    
            "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    
            "[http://struts.apache.org/dtds/struts-2.3.dtd](http://struts.apache.org/dtds/struts-2.3.dtd)">
    
    <struts>
    
                    <!-- package提供了将多个Action组织为一个模块的方式
    
                            package的名字必须是唯一的 package可以扩展 当一个package扩展自
    
                            另一个package时该package会在本身配置的基础上加入扩展的package
    
                            的配置 父package必须在子package前配置
    
                            name:package名称
    
                            extends:继承的父package名称
    
                            abstract:设置package的属性为抽象的 抽象的package不能定义action 值true:false
    
                            namespace:定义package命名空间 该命名空间影响到url的地址,例如此命名空间为/test那么访问是的地址为                            [http://localhost:8080/struts2/test/XX.action](http://localhost:8080/struts2/test/XX.action)
    
                         -->
    
        <package name="redjason_manager_admin" extends="web_action_default" namespace="/admin">
    
                             <!-- 定义默认的拦截器 每个Action都会自动引用,如果Action中引用了其它的拦截器 默认的拦截器将无效 -->
    
           <default-interceptor-ref name="webDefaultStack"></default-interceptor-ref>
    
            <!-- 图表改为全局定义 -->
    
                <!-- 全局results配置 -->
    
            <global-results>
    
                <!-- 以下为图表配置 -->
    
                <result name="one-line-chart">/admin/commCharts/commLineCharts.jsp</result>
    
                <result name="more-line-chart">/admin/commCharts/commMSLineCharts.jsp</result>
    
                <result name="more-bar-chart">/admin/commCharts/commColumn3D.jsp</result>
    
                <result name="more-bar-2dChart">/admin/commCharts/commColumn2D.jsp</result>
    
                <result name="more-bar-chart2">/admin/commCharts/commStacked3dCharts.jsp</result>
    
                <result name="bar-chart">/admin/commCharts/commBarCharts.jsp</result>
    
                <result name="excel" type="stream">  
    
                    <param name="contentType">application/vnd.ms-excel</param>  
    
                    <param name="contentDisposition">attachment;filename="${downloadFileName}"</param>  
    
                    <param name="bufferSize">1024</param>
    
                    <param name="inputName">excelFile</param>
    
                   </result>  
    
            </global-results>
    
                    <!-- Action配置 一个Action可以被多次映射(只要action配置中的name不同)
    
                        name属性可支持通配符,然后可以在class、method属性中使用表达式。通配符用星号 * 表示
    
                             name:action名称
    
                             class: 对应的类的路径
    
                             method: 调用Action中的方法名
    
                        -->
    
            <!--  用户管理 -->
    
            <action name="admin_*" class="com.jason.manager.admin.action.AdminAction" method="{1}">
    
                    <!-- result 节点配置
    
                        name : result名称 和Action中返回的值相同
    
                        type : result类型 不写则选用superpackage的type struts-default.xml中的默认为dispatcher 
    
                     -->
    
                <result name="user-list">/admin/z-user/user-list.jsp</result>
    
                <result name="update-view">/admin/z-user/update-user.jsp</result>
    
                <result name="update-passwd">/admin/z-user/update-pwd.jsp</result>
    
                <result name="success">/admin/z-user/success.jsp</result>
    
                <result name="fail">/admin/z-user/fail.jsp</result>
    
                <result name="addPage">/admin/z-user/add-user.jsp</result>
    
            </action>
    
            <action name="gameVersionApkUpload_*" class="com.jason.manager.action.game.GameVersionApkUploadAction" method="{1}"> 
    
                <!-- 引用拦截器   name:拦截器名称或拦截器栈名称-->           
    
                <interceptor-ref name="fileUpload">
    
                    <!-- 文件过滤 -->
    
                        <!-- 参数设置 name:对应Action中的get/set方法 -->
    
                    <param name="allowedTypes">application/x-zip-compressed,application/octet-stream</param>
    
                    <!-- 文件大小, 以字节为单位 -->
    
                    <param name="maximumSize">120000000</param>
    
                </interceptor-ref>
    
                <!-- 默认拦截器必须放在fileUpload之后,否则无效 -->
    
                <interceptor-ref name="defaultStack" />
    
            </action>
    
        </package>
    
    </struts> 
    

    struts2配置文件中的method={1}详解

    <action name="admin_*" class="com.jason.manager.admin.action.AdminAction" method="{1}">
    
                <result name="user-list">/admin/z-user/user-list.jsp</result>
    
                <result name="update-view">/admin/z-user/update-user.jsp</result>
    
                <result name="update-passwd">/admin/z-user/update-pwd.jsp</result>
    
                <result name="success">/admin/z-user/success.jsp</result>
    
                <result name="fail">/admin/z-user/fail.jsp</result>
    
                <result name="addPage">/admin/z-user/add-user.jsp</result>
    
     </action>
    
        此时method={1}中的{1}代表admin_*中的*,即假如访问路径是/admin_addUserView.action,则此刻访问的是该Action中的addUserView方法。*同理,如果通配符* == delete,则就访问的是delete方法。
    
    当name中含有多个通配符的时候,method={2} ,就代表第二个通配符,同理以此类推。
    
    这种方式更灵活的简化了struts.xml的配置文件。
    
    function addUser(){
                  window.location.href="<%=request.getContextPath()%>/admin/z-user/admin_addUserView.action";
    
             }
    
      admin_addUserView.action对应 name="admin_*",通配符*就是addUserView,method="{1}"里面的{1}就是代表addUserView()方法,
    这个addUserView()方法存在于com.jason.manager.admin.action.AdminAction中
    

    相关文章

      网友评论

          本文标题:struts2中struts.xml配置文件详解

          本文链接:https://www.haomeiwen.com/subject/uczepftx.html