在使用框架之前我们的程序中遇到异常,都是使用try{…}catch{…}手动捕获解决,或者使用throws Exception将异常抛给别人去解决。在struts2框架中,异常的解决方法,更方便了,只要在struts.xml配置文件中声明一下就可以了。今天我们就来学习一下struts2的声明式异常处理。
Struts2的异常处理,靠的是ExceptionMappingInterceptor异常拦截器。这个异常处理的拦截器是我们struts.xml配置文件中继承过的struts-default包中的一个默认拦截器,所以不用我们做额外的拦截器配置。
下面就用一个实例来感性的了解一下,声明式异常处理的使用:
一、新建一个web project项目
二、导入jar包,Build Path添加到项目中
局部异常处理
三、web.xml中配置文件
四、新建一个action类,名称为:HelloWorldAction
五、新建三个页面
1、新建一个index.jsp页面,作为项目启动默认加载的页面
2、新建一个helloWorld.jsp页面,作为成功跳转的页面
3、新建一个struts.xml配置文件
六、导出war包
现在点击项目右键 ---> export ---> war file ---> 点击Browser选择war包导出路径 ---> finish
七、将导出的war包放到tomcat服务器的webapps文件夹下面
Ctrl+R打开运行框,输入cmd,回车打开dos窗口,
八、启动tomcat
使用dos命令,进入tomcat的bin文件夹下,执行startup.bat命令,启动服务器
Tomcat会启动一个新的dos窗口,打印启动日志,看到下面的信息即表示tomcat启动成功。
此时war包已经自动解压
九、打开浏览器输入访问网址:http://localhost:8080/Struts2_exception01/
输入名字,点击提交按钮,网页直接报错了
十、struts.xml中配置异常处理
修改struts.xml的配置文件,增加红框框中的两个配置
使用和上面同样的方法导出war包,放到tomcat的webapps文件夹下(放之前先将上次放入的同名的那个war包和解压后的文件夹删除),重新启动tomcat,
通过浏览器访问项目url:http://localhost:8080/Struts2_exception01/ ,点击提交按钮,后页面跳转到了错误页面error.jsp,
全局异常处理
刚刚这个是我们针对某个action的特定异常做了处理,接下来,我们配置一个能捕获所有的action中的NullPointerExcetion异常的处理,标签是:<global-exception-mappings>,如图:
重新导出war包,替换tomcat中webapps中的war包,重新启动tomcat,重新访问项目url,点击提交,页面如下,
(补充:我在error.jsp页面中,新加了“捕获所有action异常页面”几个字)