spring boot 下 500 404 错误页面处理

spring boot 作为微服务的便捷框架,在错误页面处理上也有一些新的处理,不同于之前的spring mvc

500的页面处理是比较简单的,用java config或者xml的形式,定义如下的bean即可

[html] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. <bean  
  2.   class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">  
  3.   <property name="exceptionMappings">  
  4.    <props>  
  5.     <prop key="org.apache.shiro.authz.UnauthenticatedException">pages/403</prop>  
  6.     <prop key="org.apache.shiro.authz.UnauthorizedException">pages/403</prop>  
  7.     <prop key="org.apache.shiro.authc.LockedAccountException">pages/locked</prop>  
  8.     <prop key="java.lang.Throwable">pages/500</prop>  
  9.    </props>  
  10.   </property>  
  11.  </bean>  

404就比较特殊了,有2种方法可以参考:

1. 

先设置dispatcherServlet

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. @Bean  
  2. public ServletRegistrationBean dispatcherRegistration(DispatcherServlet dispatcherServlet) {  
  3.     ServletRegistrationBean registration = new ServletRegistrationBean(  
  4.             dispatcherServlet);  
  5.     dispatcherServlet.setThrowExceptionIfNoHandlerFound(true);  
  6.     return registration;  
  7. }  

再增加处理错误页面的handler,加上@ControllerAdvice 注解

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. @ControllerAdvice  
  2. public class GlobalControllerExceptionHandler {  
  3.  public static final String DEFAULT_ERROR_VIEW = "pages/404";  
  4.   
  5.     @ExceptionHandler(value = NoHandlerFoundException.class)  
  6.     public ModelAndView defaultErrorHandler(HttpServletRequest req, Exception e) throws Exception {  
  7.         ModelAndView mav = new ModelAndView();  
  8.         mav.addObject("exception", e);  
  9.         mav.addObject("url", req.getRequestURL());  
  10.         mav.setViewName(DEFAULT_ERROR_VIEW);  
  11.         return mav;  
  12.     }  
  13. }  

不过上面这种处理方法,会造成对js,css等资源的过滤,最好使用第二种方法


2. 集成ErrorController 

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. @Controller  
  2. public class MainsiteErrorController implements ErrorController {  
  3.   
  4.  private static final String ERROR_PATH = "/error";  
  5.    
  6.  @RequestMapping(value=ERROR_PATH)  
  7.     public String handleError(){  
  8.         return "pages/404";  
  9.     }  
  10.    
  11.  @Override  
  12.  public String getErrorPath() {  
  13.   // TODO Auto-generated method stub  
  14.   return ERROR_PATH;  
  15.  }  
  16.   
  17. }  


posted @ 2016-05-12 18:13  雄狮_杜  阅读(970)  评论(0编辑  收藏  举报