struts2的配置(2)

Result配置
Action里提供了五个默认的返回值:
String SUCCESS = "success";
String NONE = "none";
String ERROR = "error";
String INPUT = "input";
String LOGIN = "login";

默认的一些配置
在package下有如下配置
<result-types>
<result-type name="dispatcher" class="org.apache.struts2.dispatcher.ServletDispatcherResult" default="true" />
</result-types>
*如果一个Result的type没有设定的话,默认为dispthcher。dispatcher的意思是转向一个JSP的资源(存储转发)。
*另外如果Result的name没有设定的话,默认为SUCCESS。
一个完整的Result的声明如下:
<result name="success" type="dispatcher">
<param name="location">/ThankYou.jsp</param>
</result>
考虑到默认值可以写成:
<result>
<param name="location">/ThankYou.jsp</param>
</result>
另外也可以简写为:
<result>/ThankYou.jsp</result>
另外为了方便,可以在package中设置一些全局的result,例如:
<global-results>
<result name="error">/Error.jsp</result>
<result name="invalid.token">/Error.jsp</result>
<result name="login" type="redirect-action">Logon_input</result>
</global-results>

返回值类型
1,redirect-action 类型是重定向(不是转发)到一个Action上,那么要为 <result .../> 指定两个参数actionName和namespace。简写为
<result name="success" type="rediect-action">/demo0/welcome.jsp</result>
这种类型相当于在Struts1中的
<forward name="..." redirect="true">/anotherAction.do</forward>
写法。
2,<result .../> 的dispatcher和redirect类型的区别就是一个是转发(带请求参数、属性、址址栏不变)和重定向(丢失请求参数、属性、重新产生请求,所以地址栏会变)。

动态结果
有些时候,在Action执行完毕之后才知道Result的指向,可以使用如下的方法:
Action:
private String nextAction;
public String getNextAction() {
return nextAction;
}
public String execute() throws Exception {
return "next";
}
struts.xml:
<action name="fragment" class="FragmentAction">
<result name="next" type="redirect-action">${nextAction}</result>
</action>
动态结果资源有两种,根据 <action .../> 的 name 属性的模式匹配后的参数和请求参数决定结果。
① <action name="crud_*" class="com.unmi.CrudAction" method="{1}">
<result>/{1}.jsp</result>
</action>
URL 为 crud_delete.action 处理成功后会转到 delete.jsp
URL 为 crud_update.action 处理成功后会转到 update.jsp
② <action name="..." class="com.unmi.ShowAction">
<result>/show${user.type}.jsp</result>
</action>
要在ShowAction的设置了属性${user.type}。例如${user.type}设置为"admin",就会转到 showadmin.jsp页。


ActionSupport的配置
Action类不一定非要实现Action接口或者集成ActionSupport类,也就是说Action可以是一个POJO对象,只不过提供一个返回String的方法。如果Action类不实现Action接口,也不从ActionSupport集成,则Struts2框架通过Java的反射机制(Reflection)来调用Action类中的处理方法。
Action类的处理方法需要满足以下要求:
1、public
2、返回String,框架根据返回值决定迁移的目的
3、(可选)抛出Exception,让Struts2框架统一处理异常

Struts2可以以声明的方式处理Action类抛出的异常。以声明的方式处理是指:所有的Action类的处理方法抛出的Exception会被框架统一处理,之后定向到预先定义的Result。处理这些异常的Action,Result等可以动态的配置。
要使用Struts2声明式异常处理,只需要将异常映射到result就可以了,可以用两种方法配置,一种方法是全局配置,针对所有的Action有效,另一种是针对具体的Action做配置,只针对具体的Action有效。
参看如下struts.xml 配置文件片段:
<package name="default">
...
<global-results>
<result name="login" type="redirect">/Login.action</result>
<result name="Exception">/Exception.jsp</result>
</global-results>

<global-exception-mappings>
<exception-mapping exception="java.sql.SQLException"
result="SQLException" />
<exception-mapping exception="java.lang.Exception"
result="Exception" />
</global-exception-mappings>
...
<action name="DataAccess" class="com.company.DataAccess">
<exception-mapping exception="com.company.SecurityException"
result="login" />
<result name="SQLException" type="chain">SQLExceptionAction
</result>
<result>/DataAccess.jsp</result>
</action>
...
</package>
上述配置有如下结果
1 一个java.sql.SQLException异常将链接到SQLExceptionAction
2 一个com.company.SecurityException将重新定位到login.action
3 其他从java.lang.Exception继承而来的Exception将会被定为到/Exception.jsp页面

常量配置
在struts.xml文件中配置常量是一种指定Struts2属性的方式。这种配置方式与在struts.properties文件中配置Struts2属性的作用基本相似。
*通常推荐struts.xml文件中定义Struts2属性。
在struts.xml文件中通过constant元素来配置常量,配置常量需要指定两个必填的属性:
name:指定了常量的名字
value:指定了常量的值
例如:
<struts>
<constant name="struts.devMode" value="true" />
</struts>
对于struts.properties文件而言,该文件的内容就是系列的key-value对。
例如:
struts.devMode=true
上面的配置片段配置了名为struts.devMode的Struts2常量,该常量值为true。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值