Struts 2 学习笔记 - 4.配置文件深入(2):action,result,exception

1 Action:在com.opensymphony.xwork2.Action的接口申明中,Action提供execute()方法,子类必须实现execute()方法。

1) 简单的Action配置,如:

<action name="login" class="com.namespace.NameSpaceAction">
	<result name="SUCCESS">/jsp/test1.jsp</result>
</action>

前台发送调用login的请求,监听器调用默认的execute()方法。

2) 一个方法一个Action配置:开发中通常将多个方法写在一个Action中,这样Action便可以采用集中配置的方式。如下面的代码,就是用一个方法配置一个Action:

<action name="delete" class="com.example.CurdAction" method="delete">

3) 通配符方式:如struts中配有如下几个action,ManagerUserAction中有与之对应的方法:

<action name="addUser" class="com.netshuai.action.ManagerUserAction" method="add">
    <result name="success">/addUser.jsp</result>
</action>
<action name="delUser" class="com.netshuai.action.ManagerUserAction" method="del">
    <result name="success">/delUser.jsp</result>
</action>
<action name="updateUser" class="com.netshuai.action.ManagerUserAction" method="update">
    <result name="success">/updateUser.jsp</result>
</action>
如果使用通配符,可以省略写成一个action:

<action name="*User" class="com.netshuai.action.ManagerUserAction" method="{1}">
    <result name="success">/{1}User.jsp</result>
</action>
其中,*为通配符,{1}为*所替换的内容,如用户访问的是addUser.action,则*就被自动替换为add,{1}处也自动使用add替换。
4) 分隔符加上*:分隔符可以是"_","!"等。

<action name="crud_*" class="example.Crud" method="{1}">
调用方式:crud_add.action、crud_delete.action

<action name="crud!*" class="example.Crud" method="{1}">
调用方式:crud!add.action、crud!delete.action

5) URL映射规则:如下面的代码中,"User/add.action"将调用User的add方法

<action name="*/*" method="{2}" class="com.example.{1}Action">
	<result type="redirect">/{1}/view.action</result>
	<result type="view">/{1}/view.jsp</result>
</action>


2.Result:当Action处理完信息后,需要根据Result结果配置,将Action的处理结果对应到相应的结果视图。

1)实例:

<action name="addBook" class="action,AddBook">
	<result>/allBooks.jsp</result>
</action>

2)Result配置分类:

a) <result>定义在<action>中,作用范围是这个Action;

b) <result>定义在<package>的<global-results>元素中,作用范围是整个包,如:

<global-results>
    <result name="exception" type="redirect">/exception.jsp</result>
</global-results>

按名称属性分:
名字 说明
Chain Result 用来处理Action链
Dispatcher Result(默认) 用来转向页面,通常处理JSP
FreeMarker Result 处理FreeMarker模板
HttpHeader Result 用来控制特殊的Http行为
Redirect Result 重定向到一个URL
Redirect Action Result 重定向到一个Action
Stream Result 向浏览器发送InputSream对象,通常用来处理文件下载
Velocity Result 处理Velocity模板
XLS Result 处理XML/XLST模板
PlainText Result 显示原始文件内容,例如文件源代码
S2PLUGINS:Tiles Result 结合Tile使用


3.动态Result:下一个状态依赖于输入元素。

实例:通过EL表达式动态访问Action:

private String nextAction;
public String getNextAction() {
    return nextAction;
}
在strutx.xml配置文件中,我们可以使用${nextAction}来引用到Action中的属性,通过${nextAction}表示的内容来动态的返回结果,例如:
<action name="fragment" class="FragmentAction">
	<result name="next" type="redirect-action">${nextAction}</result>
</action> 
上述Action的execute方法返回next的时候,还需要根据nextAction的属性来判断具体定位到哪个Action。

4.exception:Struts2的异常处理机制。通过在struts.xml文件中配置<exception-mapping>元素完成。

配置<exception-mapping>时需要指定两个属性

a)exception:指定该异常映射所设置的异常类型;

b)result:系统转入Result属性所指向的结果;

异常映射分两类:

a) 局部异常映射:<exception-mapping>作为<action>的子元素;

b) 局部异常映射:<exception-mapping>作为<global-exception-mapping>元素的子元素;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值