在struts2中提供了一些常用的拦截器,其中就包括对异常处理的拦截器,我们直接声明使用即可,下面来看个例子。
struts.xml
- <!DOCTYPE struts PUBLIC
- "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
- "http://struts.apache.org/dtds/struts-2.0.dtd">
- <struts>
- <!-- 对默认拦截器的引入 -->
- <include file="struts-default.xml" />
- <package name="eticket" extends="struts-default">
- <!-- 全局异常映射 -->
- <global-exception-mappings>
- <exception-mapping result="error" exception="java.lang.Exception">
- </exception-mapping>
- </global-exception-mappings>
- <action name="airTicketAction" class="AirTicketAction">
- <result>airticket/airticket.jsp</result>
- <result name="detail">airticket/airticketdetail.jsp</result>
- <result name="order">airticket/airticketorder.jsp</result>
- <result name="error">error.jsp</result>
- <!-- 局部异常映射 -->
- <exception-mapping result="nullPoint" exception="java.lang.NullPointerException"></exception-mapping>
- <result name="nullPoint">error.jsp</result>
- </action>
- </package>
- </struts>
下面是一个action,产生一个异常,用于测试
AirTicketAction.java
- import com.opensymphony.xwork2.ActionSupport;
- @SuppressWarnings("serial")
- public class AirTicketAction extends ActionSupport {
- @Override
- public String execute() throws Exception {
- // TODO 自动生成方法存根
- //产生一个除数为0的异常
- int i = 1/0;
- return SUCCESS;
- }
- }
用于显示的jsp页面
error.jsp
- <%@ page language="java" contentType="text/html; charset=UTF-8"
- pageEncoding="UTF-8"%>
- <%@ taglib prefix="s" uri="/struts-tags"%>
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <title><s:text name="login.title"></s:text></title>
- </head>
- <body>
- <h1>出错了!</h1>
- <s:property value="exception.message" />
- <s:property value="exceptionStack" />
- </body>
- </html>
很简单,配置完成可以使用了。