Spring MVC处理异常方式有以下三种:
1.使用Spring MVC提供的简单异常处理器SimpleMappingExceptionResolver
2.实现HandlerExceptionResolver
3.使用@ExceptionHandler注解实现异常处理
方法一:使用Spring MVC提供的简单异常处理器SimpleMappingExceptionResolver
<!--方法一: 全局异常配置 start --> <bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <property name="exceptionMappings"> <props> <prop key="java.lang.Exception">error</prop> <!-- 对应异常发生时要跳转的页面 --> <prop key="java.lang.Throwable">error</prop> <prop key="java.lang.RuntimeException">error</prop> <prop key="java.lang.NullPointerException">error</prop><!-- 当发生空指针异常时跳转到此页面 --> </props> </property> </bean> <!-- 全局异常配置 end -->
注意:异常页面获取异常对象的名称默认是exception,也可以自己指定别名。
指定异常的别名叫 "ex",这样jsp页面就可以通过${ex}来获取异常信息。
<property name="exceptionAttribute" value="ex"></property>
JSP页面如下:
<h2> 页面出错误了! 如果指定异常别名:${ex} <br/> 如果不知道异常别名:.${exception } <br /> </h2>
Controller类中有异常代码:
@Controller @RequestMapping("/demo") public class ExceptionController { @RequestMapping("/ex.action") public String login(ModelMap model) { System.out.println("---方法1---"); String s = null; s.length(); return "success"; } }
通过地址:http://localhost:8008/spring_exception/demo/ex.action 访问后,得到如下结果
方法二:实现HandlerExceptionResolver接口
1)自定义MyExceptionHandler 实现 HandlerExceptionResolver接口
MyExceptionHandler.java如下
public class MyExceptionHandler implements HandlerExceptionResolver { public ModelAndView resolveException(HttpServletRequest req, HttpServletResponse resp, Object handler, Exception ex) { Map<String, Object> model = new HashMap<String, Object>(); model.put("ex", ex); // jsp页面通过${ex}来获取 return new ModelAndView("error", model); } }
在applicationContext.xml中进行配置
<bean id="myExceptionHandler" class="com.lydia.web.MyExceptionHandler" />
通过以上操作也可以设置。
方法三:使用@ExceptionHandler注解实现异常处理
编写一个BaseController类,定义如下:
public class BaseController { @ExceptionHandler public String execute(HttpServletRequest request, Exception ex) { request.setAttribute("ex", ex); return "error"; } }
然后其他的Controller继承BaseController类即可。
@Controller @RequestMapping("/demo") public class ExceptionController3 extends BaseController { @RequestMapping("/ex3.action") public String login(ModelMap model){ System.out.println("---方法3---"); try { String s = "123"; s.length(); s.charAt(5); } catch (Exception e) { e.printStackTrace(); // throw new MyException(e.getMessage()+"catch异常"); model.put("msg", e.getMessage()+"---++++"); model.addAttribute("message", e.getMessage()+"+++++++"); return "error"; } return "success"; } }
注意:上面的代码中自定义了一个异常类MyException,并使用try..catch..来处理异常。
使用ModelMap的addAttibute()或者put方法向错误页面传值。
相关推荐
目录结构 四、配置一个错误的方法 package edu.xiao;...import edu.xiao.exception.SystemExc;...import org.springframework.stereotype.Controller;...import org.springframework.web.bind.annotation....
【SpringMVC——demo】 SpringMVC是Spring框架的一个核心模块,主要用于构建Web应用程序。它是一种基于模型-视图-控制器(MVC)设计模式的轻量级Java Web开发框架,能够有效地分离业务逻辑和展示逻辑,使得代码更加...
在实际项目中,还会涉及到更多高级特性,如拦截器、异常处理、视图解析等,这些都是SpringMVC注解方式的延伸应用。在"AnnotationTest"文件中,可能包含了实践这些概念的示例代码,进一步加深了对SpringMVC注解方式的...
在深入学习SpringMVC的过程中,你还将了解到拦截器(Interceptor)、异常处理、数据绑定、国际化、验证、文件上传下载等高级特性。这些知识点有助于你构建功能丰富、性能优良的Web应用。随着经验的积累,你可以结合...
8. **异常处理** 可以通过@ControllerAdvice和@ExceptionHandler全局处理异常,提高代码的可维护性。 9. **RESTful风格** SpringMVC支持创建RESTful API,通过HTTP动词(GET、POST、PUT、DELETE)和URI资源定位来...
在本教程中,我们将深入探讨如何将Spring框架...你可以根据实际需求调整配置,例如添加拦截器、过滤器、自定义异常处理等,以满足更复杂的业务场景。此外,还可以考虑使用Spring Boot来进一步简化配置,提升开发效率。
SSM框架,即Spring、SpringMVC和...这个"SpringMVC精品资源-- SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)"压缩包可能包含了从基础概念到实战示例的全面教程,对于学习和提升SSM框架的整合应用大有裨益。
3. `afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)`: 视图渲染后,无论是否出现异常都会调用,用于清理资源或执行其他收尾操作。 配置拦截器在Spring...
6. **异常处理**: SpringMVC提供了一种优雅的方式来处理应用中的异常。通过`@ExceptionHandler`注解,可以在控制器中定义特定异常的处理方法。此外,全局异常处理器(`@ControllerAdvice`)可以捕获所有控制器的...
在学习SpringMVC时,你可能会接触到如控制器注解、视图解析、模型数据绑定、异常处理、拦截器使用、RESTful设计原则等多个知识点。通过阅读提供的"SpringMVC学习资料",你可以深入理解这些概念,逐步掌握SpringMVC的...
SpringMVC提供了全局异常处理机制,通过@ControllerAdvice和@ExceptionHandler注解,可以集中处理所有控制器中的异常。 7. **数据绑定与验证** SpringMVC支持模型对象的数据绑定和验证,例如,使用@...
- **异常处理**:合理处理可能出现的各种异常情况,增强应用的健壮性。 - **性能优化**:对SQL语句进行优化,减少不必要的网络传输,提高应用响应速度。 通过SSM框架的整合,不仅可以提升开发效率,还能更好地满足...
深入学习SpringMVC,你还将接触到拦截器、模型数据绑定、视图重定向、异常处理、表单验证、RESTful API设计等概念。理解这些核心概念和组件将有助于你构建更复杂、更健壮的Web应用。通过实践这个"SpringMVC起步 ——...
在异常处理方面,3.1版本提供了全局异常处理器(`@ExceptionHandler`注解),允许在单个类中定义所有异常的处理逻辑,提高了代码的可维护性。 在性能优化上,SpringMVC 3.1支持异步处理,通过`@Async`注解,开发者...
6. **异常处理**:学习如何在SpringMVC中定义全局和局部的异常处理器。 7. **RESTful Web服务**:介绍如何利用SpringMVC创建符合REST原则的API。 最后,《跟我学spring3(8-13).pdf》可能涵盖了更高级的主题,如...
此外,你还需要确保正确处理异常,提供友好的错误提示。 总的来说,通过注解SpringMVC和ExportExcel工具类,我们可以轻松地实现在网页上导出Excel和Word文档的功能。这个过程涉及到SpringMVC的请求处理、响应设置,...
SSM框架,即Spring、SpringMVC和MyBatis的集成,是Java开发Web应用时常用的三大组件。本文将深入探讨如何详细搭建一个基于...在实际开发中,还需要考虑异常处理、日志记录、安全性等多方面因素,以构建健壮的应用系统。
2.秒杀业务的核心:库存的处理 3.针对库存业务分析:事务(1>.减内存 2>.记录购买明细) 4.记录秒杀成功信息 (1)购买成功的对象 (2)成功的时间/有效期 (3)付款/发货信息 二、异常情况分析 减库存没有...
6. **异常处理**:SpringMVC提供了一种优雅的异常处理方式,允许我们在全局或特定Controller级别定义异常处理器。这有助于统一错误页面展示,提高用户体验。 7. **上传下载支持**:SpringMVC内置了处理文件上传和...
3. **编写配置文件**:`applicationContext.xml`通常用于配置服务层(如DAO、Service),而`SpringMVC-servlet.xml`则用于配置Spring MVC的相关组件,如视图解析器、处理器映射器、异常处理器等。 4. **创建处理器...