概述
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>
最后
以上就是飞快云朵为你收集整理的Struts2之配置文件详解的全部内容,希望文章能够帮你解决Struts2之配置文件详解所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复