当用户访问网页的时候,不能让用户看的你的错误信息,我们一般就会将这些可能发生的异常提前添加好解决的方案,以免用户有不好的体验感
第一种:Web.xml中设置异常相应页面
这种情况当发生异常的404或者500类型的异常就会跳转到事先准备好的页面
<error-page> <error-code>404</error-code> <!-- (里面写你的页面所存放的路径)--> <location>/jsp/404.jsp</location> </error-page> <error-page> <error-code>404</error-code> <!-- (里面写你的页面所存放的路径)--> <location>/jsp/500.jsp</location> </error-page>
第二种:设置默认异常处理器
<!-- 默认异常处理器--> <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <property name="defaultErrorView" value="500"/> <!--默认跳转的视图--> <property name="exceptionAttribute" value="exx"/> <!--将异常信息放入作用域中--> <property name="exceptionMappings"> <props> <prop key="自定义的异常类">需要跳转的页面</prop> <!--异常类需要继承Execption重写两个构造方法--> </props> </property> </bean>
第三种:使用@ExceptionHandler进行处理异常
在一个Controller控制器中定义此方法,一旦此控制器中的其他方法出现异常,就会执行这个方法
@ExceptionHandler public ModelAndView ExceptionController(Exception ex){ ModelAndView modelAndView=new ModelAndView("500"); //保存异常信息到试图当中 modelAndView.addObject("ex",ex); return modelAndView; }
@ExceptionHandler方法其实也可以处理其他控制器的异常
就是把上面的方法放到一个类中,在类的上面使用@ControllerAdvice注解来声明这个类是一个异常处理类
package com.yjc.controller; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.servlet.ModelAndView; @ControllerAdvice public class ThrowsControllerAdvice { @ExceptionHandler public ModelAndView ExceptionController(Exception ex){ ModelAndView modelAndView=new ModelAndView("500"); //保存异常信息到试图当中 modelAndView.addObject("ex",ex); return modelAndView; } }