springMVC3学习(八)--全局的异常处理

本文介绍Spring MVC中如何使用SimpleMappingExceptionResolver进行异常处理,包括不同异常映射到不同视图的方法,以及如何设置默认异常提示页面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在springMVC的配置文件中:

[html] view plain copy
在CODE上查看代码片 派生到我的代码片
  1. <beanid="exceptionResolver"class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
  2. <propertyname="defaultErrorView">
  3. <value>/error</value><!--表示当抛出异常但没有在exceptionMappings里面找到对应的异常时返回名叫error的视图-->
  4. </property>
  5. <propertyname="defaultStatusCode"value="404"/><!--表示在发生异常时默认的HttpServletResponse的返回码,默认是404-->
  6. <propertyname="statusCodes"><!--定义在发生异常时视图跟返回码的对应关系-->
  7. <props>
  8. <!--表示在发生NumberFormatException时返回视图number,然后这里定义发生异常时视图number对应的HttpServletResponse的返回码是500-->
  9. <propkey="number">500</prop>
  10. <propkey="null">503</prop>
  11. </props>
  12. </property>
  13. <propertyname="exceptionMappings">
  14. <props>
  15. <propkey="NumberFormatException">number</prop><!--表示当抛出NumberFormatException的时候就返回名叫number的视图-->
  16. <propkey="NullPointerException">null</prop>
  17. </props>
  18. </property>
  19. </bean>

这里主要的类是SimpleMappingExceptionResolver类,和他的父类AbstractHandlerExceptionResolver类。

你也可以实现HandlerExceptionResolver接口,写一个自己的异常处理程序.

通过SimpleMappingExceptionResolver我们可以将不同的异常映射到不同的jsp页面(通过exceptionMappings属性的配置)。

同时我们也可以为所有的异常指定一个默认的异常提示页面(通过defaultErrorView属性的配置),

如果所抛出的异常在exceptionMappings中没有对应的映射,则spring将用此默认配置显示异常信息。


Login.Java测试类

[java] view plain copy
在CODE上查看代码片 派生到我的代码片
  1. importjava.io.File;
  2. importorg.springframework.stereotype.Controller;
  3. importorg.springframework.web.bind.annotation.RequestMapping;
  4. @Controller
  5. publicclassLogin{
  6. @RequestMapping("/null")
  7. publicvoidtestNullPointerException(){
  8. Filefile=null;
  9. //空指针异常,返回定义在SpringMVC配置文件中的null视图
  10. System.out.println(file.getName());
  11. }
  12. @RequestMapping("/number")
  13. publicvoidtestNumberFormatException(){
  14. //NumberFormatException,返回定义在SpringMVC配置文件中的number视图
  15. Integer.parseInt("abc");
  16. }
  17. @RequestMapping("/default")
  18. publicvoidtestDefaultException(){
  19. if(1==1)
  20. //由于该异常类型在SpringMVC的配置文件中没有指定,所以就会返回默认的exception视图
  21. thrownewRuntimeException("Error!");
  22. }
  23. }

显示错误的jsp页面(已error.jsp为例)

[html] view plain copy
在CODE上查看代码片 派生到我的代码片
  1. <body>
  2. <%
  3. Exceptione=(Exception)request.getAttribute("exception");
  4. out.print(e.getMessage());
  5. %>
  6. </body>

测试URL: http://localhost:8080/spring_exception/null

http://localhost:8080/spring_exception/number

http://localhost:8080/spring_exception/default

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值