spring boot下 500 404 错误页面处理的方法

作者:ProjectArchitect 时间:2021-09-03 07:12:36 

spring boot 作为微服务的便捷框架,在错误页面处理上也有一些新的处理,不同于之前的spring mvc 500的页面处理是比较简单的,用java config或者xml的形式,定义如下的bean即可


<bean
class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
 <props>
 <prop key="org.apache.shiro.authz.UnauthenticatedException">pages/403</prop>
 <prop key="org.apache.shiro.authz.UnauthorizedException">pages/403</prop>
 <prop key="org.apache.shiro.authc.LockedAccountException">pages/locked</prop>
 <prop key="java.lang.Throwable">pages/500</prop>
 </props>
</property>
</bean>

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

1. 先设置dispatcherServlet


@Bean
public ServletRegistrationBean dispatcherRegistration(DispatcherServlet dispatcherServlet) {
 ServletRegistrationBean registration = new ServletRegistrationBean(
     dispatcherServlet);
 dispatcherServlet.setThrowExceptionIfNoHandlerFound(true);
 return registration;
}

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


@ControllerAdvice
public class GlobalControllerExceptionHandler {
public static final String DEFAULT_ERROR_VIEW = "pages/404";

@ExceptionHandler(value = NoHandlerFoundException.class)
 public ModelAndView defaultErrorHandler(HttpServletRequest req, Exception e) throws Exception {
   ModelAndView mav = new ModelAndView();
   mav.addObject("exception", e);
   mav.addObject("url", req.getRequestURL());
   mav.setViewName(DEFAULT_ERROR_VIEW);
   return mav;
 }
}

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

2. 集成ErrorController


@Controller
public class MainsiteErrorController implements ErrorController {

private static final String ERROR_PATH = "/error";

@RequestMapping(value=ERROR_PATH)
 public String handleError(){
   return "pages/404";
 }

@Override
public String getErrorPath() {
// TODO Auto-generated method stub
return ERROR_PATH;
}

}

来源:http://blog.csdn.net/projectarchitect/article/details/42463471

标签:spring,boot,500,404
0
投稿

猜你喜欢

  • 深入分析Java内存区域的使用详解

    2023-09-25 23:21:29
  • C# Cache缓存读取的设置方法

    2022-11-18 05:33:53
  • springboot 自定义异常并捕获异常返给前端的实现代码

    2022-07-23 03:09:52
  • Java并发编程学习之Unsafe类与LockSupport类源码详析

    2022-10-21 19:07:01
  • SpringBoot+Vue项目新手快速入门指南

    2023-05-20 04:56:07
  • 深入理解MyBatis中的一级缓存与二级缓存

    2022-05-25 09:41:34
  • c# Linq distinct不会调用Equals方法详解

    2021-09-03 09:53:13
  • springBoot加入thymeleaf模板的方式

    2023-11-25 14:31:23
  • 通过图例了解PowerDesigner使用方法

    2021-06-05 23:16:24
  • Mybatis实现插入数据后返回主键过程解析

    2022-07-14 18:43:15
  • 如何创建SpringBoot项目

    2022-03-26 16:06:37
  • 分享WCF聊天程序--WCFChat实现代码

    2023-01-19 17:04:59
  • SpringBoot统一响应格式及统一异常处理

    2022-08-30 08:03:08
  • Java实现求二叉树的深度和宽度

    2022-01-11 18:38:41
  • 浅谈java中String的两种赋值方式的区别

    2021-09-21 23:59:36
  • Java 实现并发的几种方式小结

    2022-10-23 02:54:46
  • 详细分析JAVA8新特性 Base64

    2022-07-09 15:41:21
  • 基于javaWeb 项目SSM配置要点及可能遇到的问题和解决方法

    2023-10-27 21:45:16
  • 浅谈Spring与SpringMVC父子容器的关系与初始化

    2023-02-08 12:09:05
  • Spring Boot如何整合FreeMarker模板引擎

    2022-09-06 15:49:32
  • asp之家 软件编程 m.aspxhome.com