转自:https://wenku.baidu.com/view/84fa86ae360cba1aa911da02.html
步骤一、建立struts2exception项目下,在该项目下建立登录页面login.jsp。主要代码如下:
<form action="<%=request.getContextPath()
%>/login.action">
username:<input type="username" name="username"><br>
<input type="submit" value="login">
</form>
步骤二、建立LoginAction,代码如下:
package com.asm;
public class LoginAction extends ActionSupport {
private String username;
public String execute() throws Exception {
if (username.equals("exception")) {
throw new ClassNotFoundException("类未被找到");
} else if (username.equals("global")) {
throw new Exception("全局异常");
} else {
return SUCCESS;
}
}
...省力get/set方法
}
步骤三、struts.xml配置文件如下:
<struts>
<package name="ex" extends="def">
<action name="login" class="com.asm.LoginAction">
<exception-mapping result="myException"
exception="java.lang.ClassNotFoundException">
</exception-mapping>
<result name="myException">/exception.jsp</result>
<result name="success">/main.jsp</result>
</action>
</package>
<package name="def" extends="struts-default" abstract="true">
<global-results>
<result name="myGlobal">/globalException.jsp</result>
</global-results>
<global-exception-mappings>
<exception-mapping result="myGlobal"
exception="java.lang.Exception">
</exception-mapping>
</global-exception-mappings>
</package>
</struts>
分析:异常处理机制较为简单,所以在此只略作说明。当登录时输入“exception”时,在LoginAction中会抛出会一个ClassNotFoundException异常,此异常我们采取的局部异常处理的方式,如果登录时输入“globla”,则会抛出Exception异常,此异常我们采取的是全局异常的处理方式,在ex包中我们继承了全局异常所在的包。提示:<exception-mapping>中的result属性的值来源于<result>元素中的name属性的值。从实例可以看出,我们一般把这种全局性的异常放在一个抽象包中供其实包继承。