SpringMVC异常处理
来源:互联网 发布:php在线运行测试 编辑:程序博客网 时间:2024/05/16 18:21
常用的SringMVC异常处理主要有三种:
1.使用系统定义好的异常处理器SimpleMappingExceptionResolver
2.使用自定义异常处理器
3.使用异常处理注解
1.1 SimpleMappingExceptionResolver
该方式只需要SpringMVC配置文件中注册该异常处理器Bean即可。该Bean比较特殊,没有id属性,无需显式调用或被注入给其它<bean/>,当异常发生时会自动执行该类。
1)自定义异常
public class NameException extends StudentException { public NameException() { } public NameException(String message) { super(message); }}2)配置xml
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <property name="exceptionMappings"> <props> <prop key="com.mh.springmvc.exception.NameException">/errors/error1.jsp</prop> </props> </property> <property name="defaultErrorView" value="/errors/defaulterror.jsp"/> <property name="exceptionAttribute" value="e"/></bean>3)测试
@RequestMapping("/register.do")public ModelAndView simpleException(HttpServletRequest request, HttpServletResponse response) throws NameException { ModelAndView mv = new ModelAndView("/index1.jsp"); String name = request.getParameter("name"); if(!"Lucy".equalsIgnoreCase(name)){ throw new NameException("姓名不正确"); } mv.addObject("message","successfully"); return mv;
2.1 自定义异常处理器HandlerExceptionResolver
使用SpringMVC定义好的SimpleMappingExceptionResolver异常处理器,可以实现发生指定异常后的跳转。但若要实现在捕获到指定异常后,执行一些操作目的,它是完成不了的。此时,就需要自定义异常处理器了。
自定义异常处理器,需要实现HandlerExceptionResolver接口,并且该类需要在SpringMVC配置文件中进行注册。
1)定义异常处理器
当一个类实现了HandlerExceptionResolver接口后,无论发生什么异常后,都会自动执行接口方法resolveException()。
public class MyHandlerExceptionResolver implements HandlerExceptionResolver { @Override public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object o, Exception e) { ModelAndView mv = new ModelAndView(); String contextPath = request.getContextPath(); mv.addObject("e",e); mv.setViewName(contextPath + "/errors/defaulterror.jsp"); if(e instanceof NameException){ mv.setViewName(contextPath + "/errors/error1.jsp"); } return mv; }}2)xml中配置异常处理器
<bean class="com.mh.springmvc.exception.MyHandlerExceptionResolver" />
3)测试
@RequestMapping("/register.do")public ModelAndView simpleException(HttpServletRequest request, HttpServletResponse response) throws NameException { ModelAndView mv = new ModelAndView("/index1.jsp"); String name = request.getParameter("name"); if(!"Lucy".equalsIgnoreCase(name)){ throw new NameException("姓名不正确"); } mv.addObject("message","successfully"); return mv;
使用注解@ExceptonHandler可以将一个方法指定为异常处理方法。该注解只有一个可选属性value,为一个Class<?>数组,用于指定该注解的方法所要处理异常类,即所要匹配的异常。
而被注解的方法,其返回值可以是ModelAndView、String或void,方法名随意,方法参数可以是Exception及其子类对象、HttpServletRequest、HttpServletResponse等。系统会自动为这些方法参数赋值。
@ExceptionHandler(NameException.class)public ModelAndView exceptionHandler(HttpServletRequest request, HttpServletResponse response,Exception e){ ModelAndView mv = new ModelAndView(request.getContextPath()+"/errors/error1.jsp"); mv.addObject("e",e); return mv;}
- Springmvc异常处理【Springmvc】
- springMVC异常处理
- SpringMVC中的异常处理
- springmvc 异常处理
- springMVC 全局异常处理
- springMVC之异常处理
- SpringMVC的异常处理
- SpringMVC异常处理
- springMVC的异常处理
- SpringMvc的异常处理
- springMVC全局异常处理
- springMVC之异常处理
- springMVC之异常处理
- SpringMVC-15 异常处理
- SpringMVC 常见异常处理
- SpringMVC 异常处理
- SpringMVC 异常处理
- SpringMVC 异常处理
- Hololens开发之HoloToolkit+空间感知组件
- 百度地图多个Marker点自适应屏幕
- xutils retry error curr request is null
- flask-快速入门
- 开启MySQL的远程帐号(Host 'XXX' is not allowed to connect to this MySQL server 解决方案)
- SpringMVC异常处理
- java提高篇之理解java的三大特性——多态
- Java sdut acm 2271 Eddy的难题
- 转载:MySQL事务隔离级别详解
- MySql多端口一台主机多个实例
- JavaCC 研究与应用
- TCP差错控制
- Alibaba-Dexposed框架在线热补丁修复的使用
- oracle之 表连接