struts2配置文件

一、常用配置

<!--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>

相关文章

显卡天梯图2024最新版,显卡是电脑进行图形处理的重要设备,...
初始化电脑时出现问题怎么办,可以使用win系统的安装介质,连...
todesk远程开机怎么设置,两台电脑要在同一局域网内,然后需...
油猴谷歌插件怎么安装,可以通过谷歌应用商店进行安装,需要...
虚拟内存这个名词想必很多人都听说过,我们在使用电脑的时候...