struts2--全局结果集和异常处理配置

来源:互联网 发布:星际皆知你爱我网盘 编辑:程序博客网 时间:2024/06/10 14:26

1、新建一个web工程,添加struts支持

2、在src下新建一个包com.etc.action,在包下新建一个类ResultAction:

package com.etc.action;import java.io.IOException;import javax.servlet.http.HttpServletResponse;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;public class ResultAction extends ActionSupport{private static final long serialVersionUID = 6936429395630165916L;public String show(){return "success";}public String create(){return "success";}}

3、配置struts.xml
<action name="show" class="com.etc.action.ResultAction" method="show"><result name="success">/success.jsp</result></action><action name="create" class="com.etc.action.ResultAction" method="create"><result name="success">/success.jsp</result></action>
4、在WebRoot下新建两个页面success.jsp和error.jsp如下:

  <body>访问成功  </body>
  <body>访问出错  </body>
5、页面运行:http://localhost:8080/struts-result2/show.action,跳转到success.jsp页面

http://localhost:8080/struts-result2/create.action,跳转到success.jsp页面



发现:show.action和create.action最终返回的都是同一个页面,success.jsp,在struts.xml中配置两次,显得很麻烦,所以我们可以将struts.xml中的代码更改为:

<!-- 全局结果集 --><global-results><result name="success">/success.jsp</result><result name="error">/error.jsp</result></global-results>

<action name="show" class="com.etc.action.ResultAction" method="show"></action><action name="create" class="com.etc.action.ResultAction" method="create"></action>
这样,只需要配置一个全局结果集,其余都是返回到success.jsp页面的结果集中不需要再进行配置

如果将ResultAction中的show()方法更改如下:
public String show(){int i = 0;int j = 3/i;System.out.println("j="+j);return "success";}
运行:http://localhost:8080/struts-result2/show.action,结果如下:

显然,这样直接将错误暴露在页面上,显得很不好看,那么我们可以在struts.xml中配置 异常处理 代码如下:

<global-exception-mappings><exception-mapping result="error" exception="java.lang.Exception"></exception-mapping></global-exception-mappings>
这样,java.lang.Exception将会捕捉到ResultAction类中的异常,然后转向error结果集,从而转向error.jsp页面,如下:



这样,整个页面变得好看许多。


结论:

全局结果集的配置:是为了返回到同一个页面时,可以简写代码,在一个地方配置即可,无需配置多次。

异常处理的配置:是为了让页面友好化,不直接将错误代码返回到页面,而是提示相应的错误信息。