• 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. }  


  • 相关阅读:
    几种常见SQL分页方式效率比较(转)
    jquery mobile开发笔记之Ajax提交数据(转)
    php 更新array键值
    PHP使用UTF8编码读取ACCESS的乱码问题解决方案(转)
    PropertyGrid控件动态生成属性及下拉菜单 (转)
    山穷水尽出高手,九死一生见功夫
    将MYSQL的GBK数据库转成_UTF-8数据库的简便方法
    CRM销售管理功能
    基于.net开发chrome核心浏览器【一】(转)
    1.Two Sum
  • 原文地址:https://www.cnblogs.com/duyinqiang/p/5696337.html
Copyright © 2020-2023  润新知