Struts2之全局异常和局部异常的配置

我们在很多网站中都有看到,如果我们访问不到一些资源页面的时候,网站会帮我们导航到友好的404错误页面,因此我们在开发后台的时候肯定要对一些不知的异常进行处理,对于异常,我们肯定是不会抛给用户看的,所以我们很常用的就是配置一个全局的异常处理页面来处理网站的异常结果,下面贴出在struts2中对全局异常和局部异常的配置:

小提醒:在sturts2的struts-default,xml操作就配置了ExceptionMappingInterceptor异常拦截器,所以只要我们使用的是默认拦截器,就会作用于每个Action,struts-default,xml默认拦截器中异常拦截器排在最前面是因为在进入到sturts2的Action之前或者之后,可能都会出现各种各样的而异常,方便进行异常处理:

<span style="font-size:14px;"><span style="font-size:14px;">   <interceptor-stack name="defaultStack">
                <interceptor-ref name="exception"/>
                <interceptor-ref name="alias"/>
                <interceptor-ref name="servletConfig"/>
                <interceptor-ref name="i18n"/>
                <interceptor-ref name="prepare"/>
                <interceptor-ref name="chain"/>
                <interceptor-ref name="scopedModelDriven"/>
                <interceptor-ref name="modelDriven"/>
                <interceptor-ref name="fileUpload"/>
                <interceptor-ref name="checkbox"/>
                <interceptor-ref name="multiselect"/>
                <interceptor-ref name="staticParams"/>
                <interceptor-ref name="actionMappingParams"/>
                <interceptor-ref name="params">
                  <param name="excludeParams">dojo\..*,^struts\..*</param>
                </interceptor-ref>
                <interceptor-ref name="conversionError"/>
                <interceptor-ref name="validation">
                    <param name="excludeMethods">input,back,cancel,browse</param>
                </interceptor-ref>
                <interceptor-ref name="workflow">
                    <param name="excludeMethods">input,back,cancel,browse</param>
                </interceptor-ref>
                <interceptor-ref name="debugging"/>
            </interceptor-stack></span></span>

下面来个全局异常和局部异常的demo:

1、首先来个Action:

<span style="font-size:14px;"><span style="font-size:14px;">package example.exceptionHandlerDemo;

import com.opensymphony.xwork2.ActionSupport;

/**
 * struts2中的异常处理机制
 * @author Administrator
 *
 */
public class ExceptionHandlerDemoAction extends ActionSupport{

	public String execute(){
		System.out.println("开始执行execute()方法");
		System.out.println("异常语句开始");
		int x=1/0;//异常语句
		return "index";
	}
}
</span></span>

接着在struts.xml中的配置:

<span style="font-size:14px;"><constant name="struts.devMode" value="true"></constant>
	<package name="Hello" extends="struts-default" namespace="/">
		<!-- 定义全局的result结果 -->
		<global-results>
			<result name="exceptionRsult1" type="redirect">/exception1.jsp</result>
			<result name="exceptionRsult2" type="redirect">/exception2.jsp</result>
		</global-results>
		<!-- 定义全局异常映射处理 -->
		<global-exception-mappings>
			<exception-mapping result="exceptionRsult1" exception="java.lang.Exception"></exception-mapping>
		</global-exception-mappings>
<action name="exceptionDemo" class="example.exceptionHandlerDemo.ExceptionHandlerDemoAction" method="execute">
			<!-- 局部异常配置-->
			 <exception-mapping result="exceptionRsult2" exception="java.lang.Exception"></exception-mapping>
		</action>
	</package></span>

最后是jsp页面:

exception1.jsp:

<span style="font-size:14px;"><%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@taglib uri="/struts-tags"  prefix="s"%>
<html>
  <head>
    <title>计算器</title>
  </head>
  <body>
  	 <h1>全局异常处理页面</h1>
  	  <s:property value="exception.message"/><!-- 从值栈中获取 -->
  </body>
</html></span>

exception2.jsp:

<span style="font-size:14px;"><%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@taglib uri="/struts-tags"  prefix="s"%>
<html>
  <head>
    <title>计算器</title>
  </head>
  <body>
  	 <h1>局部异常处理页面</h1>
  	  <s:property value="exception.message"/><!-- 从值栈中获取 -->
  </body>
</html></span>

结果显示页面:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值