springboot默认跳转/error页面变更

简介: springboot默认跳转/error页面变更

宁鸣而死,不默而生。——胡适

宁鸣而死,不默而生。——胡适

在开发中我们经常看到这样一个页面

意思是告诉你,没有映射到/error对应的视图

这个是从哪里出现的呢?

我们找到org.springframework.boot.autoconfigure.web.servlet.error包下面

这里我们看到ErrorMvcAutoConfiguration,因为springboot自动装配就是这些xxxAutoConfiguration去完成的

打开一看,发现:诶?!这里有这样一段代码

这段代码告诉我们,如果在没注入ErrorViewResolver并且注入了DispatcherServlet这个bean的情况下,则注入一个叫DefaultErrorViewResolverbean

如果你现在就想知道怎么修改默认的/error路径映射?

那可以直接注入一个ErrorViewResolver

在你的任意一个配置类中,我建议是放到Mvc配置类中

/**
 * web配置类
 *
 * @author <achao1441470436@gmail.com>
 * @since 2021/5/18 0018 14:52
 */
@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
    /**
     * 不要默认跳转error页面配置
     *
     * @return org.springframework.boot.autoconfigure.web.servlet.error.ErrorViewResolver
     * @author <achao1441470436@gmail.com>
     * @since 2021/5/22 0022 21:59
     */
    @Bean
    public ErrorViewResolver errorViewResolver() throws IOException {
        return (request, status, model) -> {
            // 进行你的配置,如我这里是抛出异常然后统一处理,根据实际业务需求去做
            // throw new MybatisPlusException("无法解析视图");
        };
    }
}

那我们接着来探讨,为什么默认会跳转到/error页面呢?

因为我们如果没注入ErrorViewResolver的话,ErrorMvcAutoConfiguration

里注入了DefaultErrorViewResolver

而里面对于ErrorViewResolver接口的实现是

@Override
public ModelAndView resolveErrorView(HttpServletRequest request, HttpStatus status, Map<String, Object> model) {
       // 找到对应状态码的 error/xxx 页面,例如找到 error/404 
  ModelAndView modelAndView = resolve(String.valueOf(status.value()), model);
  if (modelAndView == null && SERIES_VIEWS.containsKey(status.series())) {
           // 如果没找到上面的页面,并且status.series等于4或者5的时候,则找4xx或者5xx视图
    modelAndView = resolve(SERIES_VIEWS.get(status.series()), model);
  }
       // 然后返回
  return modelAndView;
}

找不到这些页面的话

自然而然就会返回默认的org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration.StaticView

而里面的实现

正好是我们一开始看到的错误页面啦~

所以再说一遍,配置如下即可

/**
 * web配置类
 *
 * @author <achao1441470436@gmail.com>
 * @since 2021/5/18 0018 14:52
 */
@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
    /**
     * 不要默认跳转error页面配置
     *
     * @return org.springframework.boot.autoconfigure.web.servlet.error.ErrorViewResolver
     * @author <achao1441470436@gmail.com>
     * @since 2021/5/22 0022 21:59
     */
    @Bean
    public ErrorViewResolver errorViewResolver() throws IOException {
        return (request, status, model) -> {
            // 进行你的配置,如我这里是抛出异常然后统一处理,根据实际业务需求去做
            // throw new MybatisPlusException("无法解析视图");
        };
    }
}
相关文章
|
5月前
|
JavaScript 前端开发 Java
springboot从控制器请求至页面时js失效的解决方法
springboot从控制器请求至页面时js失效的解决方法
springboot从控制器请求至页面时js失效的解决方法
|
5月前
|
Java 数据库连接 mybatis
springboot访问jsp页面变成直接下载?
springboot访问jsp页面变成直接下载?
|
5月前
|
JavaScript 前端开发
springboot+layui从控制器请求至页面时js失效的解决方法
springboot+layui从控制器请求至页面时js失效的解决方法
|
9天前
|
Java Spring
springboot静态资源目录访问,及自定义静态资源路径,index页面的访问
本文介绍了Spring Boot中静态资源的访问位置、如何进行静态资源访问测试、自定义静态资源路径和静态资源请求映射,以及如何处理自定义静态资源映射对index页面访问的影响。提供了两种解决方案:取消自定义静态资源映射或编写Controller来截获index.html的请求并重定向。
springboot静态资源目录访问,及自定义静态资源路径,index页面的访问
|
7天前
|
JavaScript 前端开发 Java
SpringBoot项目的html页面使用axios进行get post请求
SpringBoot项目的html页面使用axios进行get post请求
23 6
|
9天前
|
Java 网络架构
springboot配合thymeleaf,调用接口不跳转页面只显示文本
springboot配合thymeleaf,调用接口不跳转页面只显示文本
38 0
|
2月前
|
XML SQL JavaScript
在vue页面引入echarts,图表的数据来自数据库 springboot+mybatis+vue+elementui+echarts实现图表的制作
这篇文章介绍了如何在Vue页面中结合SpringBoot、MyBatis、ElementUI和ECharts,实现从数据库获取数据并展示为图表的过程,包括前端和后端的代码实现以及遇到的问题和解决方法。
在vue页面引入echarts,图表的数据来自数据库 springboot+mybatis+vue+elementui+echarts实现图表的制作
|
2月前
|
前端开发 Java Spring
springboot+thymeleaf+bootstrap 超级无敌简洁的页面展示 商城管理页面
这篇文章展示了一个使用Spring Boot、Thymeleaf和Bootstrap框架开发的简洁、响应式的商城管理页面,包括美食介绍、产品详情、购物车等功能,适合初学者学习和使用。
springboot+thymeleaf+bootstrap 超级无敌简洁的页面展示 商城管理页面
|
2月前
|
Java 数据库 Spring
springboot+thymeleaf中前台页面展示中、将不同的数字替换成不同的字符串。使用条件运算符
这篇文章介绍了如何在Spring Boot和Thymeleaf框架中使用条件运算符来根据数字字段的值动态替换显示不同的字符串,例如将订单状态的数字0和1替换为"未付款"和"已付款"等。
springboot+thymeleaf中前台页面展示中、将不同的数字替换成不同的字符串。使用条件运算符
|
2月前
|
前端开发 JavaScript Java
解决springboot+vue+mybatis中,将后台数据分页显示在前台,并且根据页码自动跳转对应页码信息
该博客文章讲述了如何在Spring Boot + Vue + MyBatis的项目中实现后台数据的分页查询,并在前端进行显示和页码跳转,包括后端的分页查询实现、前端与后端的交互以及使用Element UI进行分页展示的方法。
下一篇
无影云桌面