Struts2 异常处理
struts2 本身已经包含一个Exception拦截器,“exception”拦截器是作为默认栈的一部分,无需做其他任何的配置,当在一个struct配置为调试模式时,当其在运行中抛出异常时,会自动重定向到一个包含异常详细信息的页面,这个过程无需任何额外配置;
手动配置异常拦截器
除了struts2本身提供的默认拦截器,也可以手动配置专门的exception拦截器,如下示例配置一个捕获 TestAction 中抛出的 NullPoniterException 的 exception 拦截器:
在 Action 类代码:
packgae demo;
public class TestAction{
public String execute() throws Exception{
.....
return "succcess";
}
}
在 struts.xml 中的配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.devMode" value="true" />
<package name="default" extends="struts-default">
<action name="test" class="demo.TestAction" method="execute">
<!--手动配置NullPointException拦截器-->
<exception-mapping exception="java.lang.NullPointerException" result="NullPointError" />
<result name="success">/Hello.jsp</result>
<result name="NullPointError">/error.jsp</result>
</action>
</package>
</struts>
以上示例中,当 TestAction 执行过程中抛出 NullPointerException 时,会被配置的拦截器拦截,并重定向到 error.jsp 页面;
配置全局异常拦截器
以上手动配置的时针对某一个Action抛出异常的拦截器,也可以配置一个全局异常拦截器,用于拦截所有Action中抛出的某一类Exception;
struts.xml 示例配置如下,配置一个拦截全局 NullPointerException 的拦截器;
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.devMode" value="true" />
<package name="default" extends="struts-default">
<!--配置全局NullPointerException异常拦截器-->
<global-exception-mapping>
<exception-mapping exception="java.lang.NullPointerException" result="NullPointError" />
</global-exception-mapping>
<action name="test" class="demo.TestAction" method="execute">
<result name="success">/Hello.jsp</result>
<result name="NullPointError">/error.jsp</result>
</action>
</package>
</struts>