Struts2内置拦截器"exception"可以处理action中抛出的异常,并将用户重定向到专门的错误页面。
由于此拦截器是默认堆栈拦截器的其中一个,因此不需要专门为action添加此拦截器。
1.在action中抛出一个NullPointer异常:
public class HelloWorldAction extends ActionSupport {
private String name;
@Override
public String execute() throws Exception {
String x = null;
x = x.substring(0);
return "success";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
2.在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>
<package name="helloworld" extends="struts-default">
<action name="hello"
class="HelloWorldAction">
<exception-mapping exception="java.lang.NullPointerException" result="error" />
<result name="success">
/HelloWorld.jsp
</result>
<result name="error">
/error.jsp
</result>
</action>
</package>
</struts>
注意:在<action>中进行异常映射,让其重定向到error.jsp界面。
这样,当action执行后,会将用户重定向到error.jsp页面。
3.全局异常映射:
可以在<package>标签中进行配置,应用于所有action。
<?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>
<package name="helloworld" extends="struts-default">
<global-exception-mappings>
<exception-mapping exception="java.lang.NullPointerException"
result="error" />
</global-exception-mappings>
<action name="hello"
class="HelloWorldAction"
method="execute">
<result name="success">/HelloWorld.jsp</result>
<result name="error">/Error.jsp</result>
</action>
</package>
</struts>