Struts2框架中struts.xml文件的package标签的命名空间属性、默认action配置、result配置、Struts异常处理
2017-03-01 16:47
555 查看
一.命名空间:namespace
为了解决同一package中的不同action不能出现相同name属性值的问题,即不同package的namespace属性值不同时,就可以实现当前package中action的name属性值与其他package中的action的name属性值相同的情况。例如:
JSP代码:
<a href=”users/addMethod.action?name=zhangsanAdd”>添加</a> <a href=”users/showMethod.action?name=lisiShow”>展示</a>struts.xml配置:
<package name="default" namespace="/users" extends="struts-default"> <action name="addMethod" class="com.study.test.MethodAction" method="add"> <result name="add">add.jsp</result> </action> <action name="showMethod" class="com. study.test.MethodAction" method="show"> <result name="show">show.jsp</result> </action> </package>MethodAction类如下:
public class MethodAction extends ActionSupport{ private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public String add(){ //其他逻辑代码 return "add"; } public String show(){ return "show"; } }
注:如果处理某个action请求的方法返回值为SUCCESS,那么可以再配置文件的result中省略那么属性,如下:
<result>show.jsp</result><!-- 表示的就是返回值为SUCCESS时进行的操作 -->
二.配置默认action:为了提高用户对访问出错时的体验度,如:404错误
action配置代码如下:一般写在package中的最上方位置:<default-action-ref name="defaultAction" /> <action name="defaultAction"> <result>error.jsp</result> </action>
三.配置result:根据在struts.xml文件中的不同位置分为全局result和局部result
1.局部result:定义在action中,如下:<action name="showMethod" class="com.study.test.MethodAction" method="show"> <result name="show">show.jsp</result> </action>
2.全局result:定义在<global-results>中,<global-results>在package中与action同级,对所有的action都起作用。
代码如下:
<global-results> <result> syserror.jsp</result> </global-results>上面result的name属性值默认为SUCCESS,所以只会处理返回值为SUCCESS的请求。
(1)发起action请求后,需要在struts.xml中查找result时先查找局部result,如果没有查找到,就再去查找全局result,最后没查找到就好报错了。
<result name="" type=""></result>
(2)name属性:表示返回的逻辑视图名,默认为SUCCESS。
(3)type属性:表示结果处理的方式,默认为dispatcher(请求跳转)
常用属性值:
type="redirect":
表示重定向处理,一般到JSP页面,但是也可以到另一个Action。
type="redirectAction":
表示重定向到另一个Action,使用该类型时,需要指定参数param(actionName,namespace)。如下:
<action name="addMethod" class="com.study.test.MethodAction"> <result name="add" type="redirectAction"> <param name="actionName">showMethod</param> <param name="namespace">/</param> </result> </action>type="chain":表示将请求下发,下面的代码能够将参数值从addMethod这个action传到showMethod这个action,在showMethod这个action中使用参数后,最终将参数传到delMethod这个action:
<action name="addMethod"class="com.study.test.MethodAction"method="add"> <result name="add" type="redirectAction"> <param name="actionName">showMethod</param> <param name="namespace">/</param> <!—使用<param name="参数名">参数值</param>可以将值传递给下一个action,一般建议这样使用,不建议使用<param name="参数名">action名称?参数=值 </param>的方式--> <param name="name">zhangsan</param> </result> </action> <action name="showMethod"class="com.study.test.MethodActio"method="show"> <!— 使用chain可以在当前请求处理完后将请求下发,参数也将传递过去--> <result name="show" type="chain" >delMethod</result> </action>(4)配置动态result:*代表一个或者多个任意字符串
<action name="*Method"class="com.study.test.MethodActio"method="{1}"> <result name="show">{1}.jsp</result> </action>
四.Struts异常处理:在action配置(struts.xml)中可以捕获在action处理方法中throw抛出的异常。
MethodAction类中show方法可以如下抛出异常:public String show(){ if(name.length() >= 6){ return "showr 4000 s"; }else{ throw new RuntimeException("用户名不能少于6位"); } }
1.全局异常处理:作用于当前package的全部action
在struts.xml中的package中的<global-exception-mappings>中配置全局异常处理:
<global-exception-mappings> <exception-mapping result="error"exception="java.lang.Exception"/> </global-exception-mappings>在struts.xml中的package中的<global-results>中配置全局result:
<global-results> <result name="error">error.jsp</result> </global-results>注意:上面result的那么熟悉值与exception-mapping 的result属性值对应。
2.局部异常处理:只作用于当前action
在struts.xml中的package中的action中配置局部异常处理并且配置局部result:
<action name="showMethod" class="com.study.test.MethodAction" method="show"> <result name="showrs">show.jsp</result> <result name="error">error.jsp</result> <exception-mapping result="error" exception="java.lang.Exception"/> </action>
相关文章推荐
- Struts 命名空间 默认action配置 Result 配置 异常处理
- (上节)Spring+JDBC+Struts;实现图片上传;配置的属性默认dbc用单例模式,action一定要scope=“prototype”
- Struts2.0 xml文件的配置(package,namespace,action)
- Struts04---命名空间的查询顺序以及默认执行的Action
- 【转】Struts2.0 xml文件的配置(package,namespace,action) 留着用
- struts2 result类型为redirectAction时,跳转转到另一个包空间里的一个action的指定处理方法的xml配置
- [Struts2]配置之Result/include多配置struts.xml文件/Action
- struts2 默认命名空间 login 出错,换个action名字就可以,不知道为什么
- 笔记01 登录、常用配置参数、Action访问Servlet API 和设置Action中对象的值、命名空间和乱码处理、Action中包含多个方法如何调用
- struts2的配置之could not find action or result 问题的解决方法(struts.xml文件路径)
- 关于<action><result><package>的name和namespace属性同名时struts2的处理
- struts.xml 配置package标签里面的属性
- struts.xml 配置package标签里面的属性
- struts2——(3)(①struts配置文件struts.xml三个元素package,action,result详解)
- Struts2-2.了解struts.xml>package>action>result的name属性
- struts2中struts.xml中的action标签的method属性配置为"{1}"的时候是什么意味
- struts2_day01_07_struts2配置(package标签)_08_struts2配置(action标签)_09_struts2配置(result标签)
- struts.xml文件中 result标签的 type 属性为redirectAction时URL参数与值的获得
- Struts2.0 xml文件的配置(package,namespace,action)
- struts2 笔记01 登录、常用配置参数、Action访问Servlet API 和设置Action中对象的值、命名空间和乱码处理、Action中包含多个方法如何调用