Struts2之配置文件详解

2018-08-11 17:05:01 绣花针 阅读数 1376更多
分类专栏: Struts2
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/mmake1994/article/details/81587334
一、常用配置
<!--struts-contants.xml-->
<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="base-package" extends="struts-default">
    </package> -->
</struts>
<struts>
 
    <!-- include节点是struts2中组件化的方式 可以将每个功能模块独立到一个xml配置文件中 然后用include节点引用 -->
    <include file="struts-contants.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
     -->
    <package name="com.mark.struts2" extends="struts-default" namespace="/test">
        <interceptors>
            <!-- 定义拦截器
                name:拦截器名称
                class:拦截器类路径
             -->
            <interceptor name="timer" class="com.mark.timer"></interceptor>
            <interceptor name="logger" class="com.mark.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中的方法名{1} name="hello_*"中的*
        -->
        <action name="hello_*" class="com.kay.struts2.Action.LoginAction" method="{1}">
            <!-- 引用拦截器
                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.mark.com</param>
        </action>
    </package>
</struts>
二、配置文件加载顺序
按照下图中的顺序依次加载,后加载文件中常量的值会将先加载的配置文件中常量的值给覆盖

 

三、常量配置(default.properties)
Struts2的常量大多在默认配置文件中已经配置好,位于/struts2-core-2.3.24.jar/org.apache.struts2/default.properties文件中,但根据用户需求的不同,开发要求不用,可以根据需要修改这些常量值

    <!-- 请求参数的编码方式 -->
    <constant name="struts.i18n.encoding" value="utf-8" />
四、包配置
package标签
package用来定义包配置,每个包是多action、多个拦截器、多个拦截器引用的集合

<package  name="hello"  namespace="/hello"  extends="struts-default"  abstract="true">
(1)name            :指定包名,标识作用,不可以与其他包名重复(必填属性)

(2)namespace  :指定action访问路径一个命名空间(可选属性)

(3)extends        :继承一个指定包,通常设置继承struts-default,将继承里面的拦截器(可选属性)

(4)abstract        :标识作用,指定该包是否为一个抽象包(可选属性);指定为true,别人可以继承,否则不能继承

五、全局结果配置(对同一包下所有Action有效)
    <global-results>
        <result name="success">/hello.jsp</result>
    </global-results>
六、Action配置
1.action标签
action映射就是框架中的基本工作单元,action映射就是将一个请求的URL映射到一个Action类,当一个请求匹配某个action名称时,框架就使用这个映射来确定如何处理请求

     <!--普通方式-->
    <action name="HelloAction"  class="com.mark.test.HelloAction"  method="hello">
    
    <!--通配符方式 {1}表示name="hello_*"中的*-->
    <action name="HelloAction_*"  class="com.mark.test.HelloAction"  method="{1}">
 
    <!--通配符方式更加抽象写法 {1}表示name="*_*"中的第一个*,{2}表示第二个-->
    <action name="*_*"  class="com.mark.{1}"  method="{2}">
 
    <!--动态方法访问方式-->
    <!--需要在常量配置中先开启动态方法访问-->
    <constant name="struts.enable.DynamicMethodInvocation" value="true" />
    <action name="HelloAction"  class="com.mark.test.HelloAction">
    <!--访问路径! hello/HelloAction!add.action-->
(1)name       :标识action,指定了Action所处理请求的URL(必填属性)

(2)class        :指定action对应的Action类,需要写Action类的全包名(可选属性)

(3)method    :指定请求Action类时,调用的方法(可选属性);默认为execute

        通过通配符*方式附加到action的name属性名称后,那么获取的一个*的值为{1},同样也可以获取第二个

        _*_*,第一个值为{1},第二个值为{2},其中的_并不是必须的,可以自己定义或省略

    http://localhost:8080/Struts2Test/hello/HelloAction_add
(4)converter :指定类型转换器的类(可选属性)

2.result标签(局部结果,只对这个Action有效)
指定action请求调用的页面

    <result name="success">/hello.jsp</result>
(1)name       :标识结果处理的名称,与action方法的返回值对应

(2)type         :指定调用哪一个result类处理结果,默认使用转发dispatcher;常用type还有redirect(页面重定向,跳转到jsp页面,丢失传递的信息)、redirect-action(action重定向,跳转到action,丢失传递的信息)、chain(将请求转发到一个action,被跳转的Action中仍能获取上个页面的值)

(3)标签体     :指定跳转页面的相对路径

七、分模块开发配置文件整合
在实际开发中,通常很多人都需要修改同一个配置文件struts.xml,一旦这个文件改错了一点,那么会导致整个项目都出现问题,所以我们可以在开发中,每个人建立自己struts-name.xml,然后通过include标签,将所有子配置加入到核心配置文件struts.xml中

    <!-- include节点是struts2中组件化的方式 可以将每个功能模块独立到一个xml配置文件中 然后用include节点引用 -->
    <include file="mark-struts.xml"></include>
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值