您的位置:首页 > 编程语言 > Java开发

Struts2配置文件详解

2017-08-24 16:33 253 查看
常量配置(constant)

常量的名字可以在源码中找,如下



在struts.xml中配置

(1)

<!-- 乱码解决  默认是UTF-8,不同版本可能默认不一样 -->
<constant name="struts.i18n.encoding" value="UTF-8"/>


(2)

<!--自定义扩展名  -->
<constant name="struts.action.extension" value="action,,siggy"/>


(3)

<!--开发者模式,默认false,友好的提示信息,如报错信息很友好,很容易看懂  -->
<constant name="struts.devMode" value="true"/>


(4)

<!--设置配置文件修改后自动加载  推荐在开发中使用,需要先开启开发者模式 ,如果这个属性已经为true,那么只需要开启开发者模式就行了 -->
<constant name=" struts.configuration.xml.reload" value="true"/>


常量配置方式2:

在src下添加struts.properties(#是注释)

#set extension
struts.action.extension=action,,siggy


团队协作配置

在struts.xml通过include添加不同人员的配置文件,struts.xmk中只需要写公共的部分,如常量配置

<include file="cn/sxt/struts/user.xml"></include>


配置文件加载顺序

struts-default.xml→struts-plugin.xml→struts.xml

package配置

<!-- 包的名字自定义,可以配置多个,namespace命名空间,窄化处理extends直接或者间接继承struts-default-->
<package name="default" namespace="/" extends="struts-default">
<action name="login" class="cn.sxt.siggy.LoginAction">
<result name="success">/success.jsp</result>
<result name="failed">/login.jsp</result>
</action>
</package>


注意:extends必须直接或者间接继承struts-default,这个也是第一个加载的配置文件,因为这个配置文件里面包含了设值的过程,不然光凭我们写的这个就是一个普通的class,表单的数据提交后,LoginAction的属性值就不可能自动注入了,而且也包含了转发的过程,根据result name来跳转页面,还有一系列的拦截器,都是struts-default里面的内容。调试(在LoginAction里面输出属性的值)发现,如果把extends去掉就会报错,而且里面的值也不会注入,但是extends写了但是没有任何result,值也会被注入,所以这就是必须继承struts-default的原因和作用

action配置

一个package可以配置多个action

<!-- name是url请求名,不需要加后缀(.action)
class是处理url请求对应的java类,class必须是全限定名
并且该类拥有无参的构造方法
method配置处理请求类的方法,默认是execute,方法要满足公共的,无参,返回值是String,这就造成一个action可以处理多个请求
-->
<action name="login" class="cn.sxt.siggy.LoginAction" method="execute">
<result name="success">/success.jsp</result>
<result name="failed">/login.jsp</result>
</action>


result配置

<!--result是结果集
name:匹配请求处理方法的返回值,默认是success
type:结果处理类型,默认是dispatcher转发
type的类型有很多,包含在struts-default中,下面举几个常见的
chain:值action链,执行actionA后直接执行actionB后执行actionC,后面写的是对应下一个action的值,地址栏显示的是执行的第一个action,用的较少
dispatcher:转发,和servlet一样,如果request里面有数据需要显示到视图中,那么使用dispatcher
redirect:重定向,如果重定向到一个jsp页面,可以直接重定向,但是如果是重定向到另一个action,那要注意是否配置了后缀名,如果要求有后缀名,一定要加上后缀名
redirectAction:重定向到另一个action,不用加后缀名,会将前一个action的后缀名自动加上
stream:以流的形式显示,文件下载
-->
<result name="success" type="dispatcher">/success.jsp</result>
<result name="failed">/login.jsp</result>


全局配置

<!--  配置全局结果集,在package里面,action之前-->
<global-results>
<result name="failed">/login.jsp</result>
</global-results>


默认配置

在action中,如果不去配置class属性,将会由默认的action类来执行,默认的action类是ActionSupport(struts-default.xml中最后),里面有execute方法返回success,也可以自定义,但是注意配置的位置

<default-class-ref class="com.opensymphony.xwork2.ActionSupport" />


其实这么属性配置的位置和顺序都可以在dtd里面查看





默认action配置

<!--配置默认的Action 当所请求的action不存在时,那么执行默认的action-->
<default-class-ref name="default"/>


通配符

<!--使用通配符来配置action,可以减少action的配置-,*表示所有,占位符{1}表示第一个*号表示的内容->
<action name="user*"  class="cn.sxt.LoginAction"  method="{1}">


但是这种情况无论是什么都会与*匹配成功,如果没有对应的方法就会报错,那么默认action配置就没用了,匹配后找不到不会去调用默认的action
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  struts2.0 配置文件