43、基于 springboot 自动配置的 spring mvc 错误处理,就是演示项目报错后,跳转到自定义的错误页面

这篇具有很好参考价值的文章主要介绍了43、基于 springboot 自动配置的 spring mvc 错误处理,就是演示项目报错后,跳转到自定义的错误页面。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Spring MVC 的错误处理:基于 SpringBoot 自动配置之后的 Spring MVC 错误处理。

就是访问方法时出错,然后弄个自定义的错误页面进行显示。

★ 两种错误处理方式

  • 方式一: 基于Spring Boot自动配置的错误处理方式,只要通过属性文件即可配置错误处理行为。
    提供自定义的错误页面即可。

  • 方式二: 使用@ResponseStatus、@ExceptionHandler、@ControllerAdvice等基于AOP的异常处理机制,
    这是直接基于Spring MVC异常处理机制进行错误处理。

方式一:

下面介绍的都是方式一:
基于Spring Boot自动配置的错误处理方式,只要通过属性文件即可配置错误处理行为。提供自定义的错误页面即可。

★ 错误处理的自动配置

默认提供了一个/error映射来处理所有的错误,并将它注册为Servlet容器的全局错误页面。

 - 对于程序客户端(比如Http Client或RESTful客户端),
   它会生成一个具有错误详情,HTTP状态和异常信息的JSON响应。

 - 对于普通浏览器,它会生成一个White Label(白标)页面,该页面以HTML格式显示同样的错误信息。 

 这就是为何,前面看到程序一旦出错,总可以在浏览器中看到一个白标错误页面。

 这是Spring Boot默认、自动提供的错误呈现。

★ 配置错误对象要包含的属性。

 Spring Boot使用ErrorProperties类来读取错误处理有关的配置信息。

 public class ErrorProperties {

@Value("${error.path:/error}")
private String path = "/error";

    // 指定错误对象是否包含exception" attribute.
private boolean includeException;

    // 指定错误对象是否包含trace属性.
private IncludeAttribute includeStacktrace = IncludeAttribute.NEVER;

    // 指定错误对象是否包含"message属性.
private IncludeAttribute includeMessage = IncludeAttribute.NEVER;

    // 指定错误对象是否包含errors属性.
private IncludeAttribute includeBindingErrors = IncludeAttribute.NEVER;

private final Whitelabel whitelabel = new Whitelabel();

错误对象会直接传给上面程序客户端(JSON响应)或浏览器的白标页面。

【换而言之】,你能在程序客户端中看到的JSON响应数据,以及在浏览器的白标页面中能看到错误信息,

 其实都是可以配置的,该配置就是由此处的ErrorProperties 负责设置的。

 因此可进行如下配置:

 # 指定包含异常类
 server.error.include-exception=true
 # 指定一直包含BindingErrors
 server.error.include-binding-errors=always
 # 指定启用白标页面(这是默认值)
 server.error.whitelabel.enabled=true

★ 自定义错误页面

 ▲ 都要放在/error目录下。

 - 静态错误页面, 静态资源目录下的/error子目录中。
                  static/error或者public/error目录中。

 - 动态错误页面,应该放在templates/error目录中。

 ▲ 错误页面的命名

  错误代码.html(静态)或 错误代码.<页面模板的扩展名>——此处的扩展名取决于你用什么样的页面模板技术。

  Spring Boot的错误页面不仅可支持精确匹配,比如404.ext或404.html将作为404错误的错误页面。

  还可支持模糊匹配,比如定义文件名为“4xx.<ext>或4xx.html”的页面,它将可作为所有4xx错误码的错误页面。

  错误对象默认支持的属性,可通过DefaultErrorAttributes来查看。

★ 【归纳一下】

 Spring Boot自动配置的错误处理,可以说非常简单。

 (1) 在application.properties文件中配置错误对象要包含哪些属性。

 (2) 在静态资源路径中的error子目录中定义静态错误页面,或在templates目录的error子目录中定义动态错误页面模板。

  这样Spring Boot即可呈现自定义出错误处理页面。

代码演示:

1、演示项目报错后,跳转到自定义的错误页面

首先写个方法,在访问失败后,跳转到的默认的错误页面是这个样子的。
但是页面对普通人不友好,所以需要优化。
43、基于 springboot 自动配置的 spring mvc 错误处理,就是演示项目报错后,跳转到自定义的错误页面,springboot,spring boot

自定义错误页面,需要如下操作:

在配置类中,指定返回的错误对象要包含哪些属性

43、基于 springboot 自动配置的 spring mvc 错误处理,就是演示项目报错后,跳转到自定义的错误页面,springboot,spring boot

接下来自定义错误的页面:
错误的页面分为静态页面和动态页面。
静态页面:写死的页面,不需要获取什么值。
动态页面:可以获取到一些错误消息,就是动态页面。

重点:自定义的错误页面都需要放在 error 文件夹中。

  • 静态错误页面, 静态资源目录下的 /error 子目录中。
    static /error 或者 public / error 目录中。

  • 动态错误页面,应该放在 templates / error 目录中。

动态错误页面

现在创建一个动态错误页面:
在 templates / error 目录中创建一个动态的错误页面,页面里面的一些属性值,来自DefaultErrorAttributes类,是这个DefaultErrorAttributes错误对象默认支持的属性,可以获取到错误的一些信息
43、基于 springboot 自动配置的 spring mvc 错误处理,就是演示项目报错后,跳转到自定义的错误页面,springboot,spring boot

错误对象默认支持的属性,可通过 DefaultErrorAttributes 类 来查看。
43、基于 springboot 自动配置的 spring mvc 错误处理,就是演示项目报错后,跳转到自定义的错误页面,springboot,spring boot

测试:
因为springboot默认的错误跳转的映射路径是 /error ,所以出现错误时,就会默认去找 /error 文件夹。

从这个ErrorProperties类看出现错误后默认的映射路径
43、基于 springboot 自动配置的 spring mvc 错误处理,就是演示项目报错后,跳转到自定义的错误页面,springboot,spring boot
知识点:
Spring Boot的错误页面不仅可支持精确匹配,比如404.ext或404.html将作为404错误的错误页面。
还可支持模糊匹配,比如定义文件名为“4xx.或4xx.html”的页面,它将可作为所有4xx错误码的错误页面。

可以看出访问方法出现500错误时,就会自动跳转到 5xx 开头的页面。

43、基于 springboot 自动配置的 spring mvc 错误处理,就是演示项目报错后,跳转到自定义的错误页面,springboot,spring boot

静态错误页面

我们随便访问,如果没有该方法,那么就会出现这个页面,这时候我们可以弄个静态错误页面来显示。
43、基于 springboot 自动配置的 spring mvc 错误处理,就是演示项目报错后,跳转到自定义的错误页面,springboot,spring boot

注意点:

  • 静态错误页面, 静态资源目录下的 /error 子目录中。
    static /error 或者 public / error 目录中。

43、基于 springboot 自动配置的 spring mvc 错误处理,就是演示项目报错后,跳转到自定义的错误页面,springboot,spring boot

效果:
43、基于 springboot 自动配置的 spring mvc 错误处理,就是演示项目报错后,跳转到自定义的错误页面,springboot,spring boot文章来源地址https://www.toymoban.com/news/detail-687932.html

添加thymeleaf需要的jar包

        <!--  添加 thymeleaf 依赖 ,整合 thymeleaf 的 starter  -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <!-- jquery 的 web jar 包 -->
        <dependency>
            <groupId>org.webjars</groupId>
            <artifactId>jquery</artifactId>
            <version>3.6.0</version>
        </dependency>
        <!-- bootstrap 的 web jar 包 -->
        <dependency>
            <groupId>org.webjars</groupId>
            <artifactId>bootstrap</artifactId>
            <version>4.6.0</version>
        </dependency>
        <!--支持版本无关的 Web Jar ,前端引入 Web Jar 相关的 jquery、bootstrap 依赖可以不用写版本号-->
        <dependency>
            <groupId>org.webjars</groupId>
            <artifactId>webjars-locator-core</artifactId>
            <version>0.47</version>
        </dependency>

前端页面需要引入的一些js样式

    <!--  引入css样式,用 link 元素  ,  stylesheet 样式单 , .gz表示是打包的,但是springboot会自动解包 -->
    <!--  引入 Bootstrap 的 Web Jar 中的 CSS 样式  -->
    <link rel="stylesheet" th:href="@{'/webjars/bootstrap/css/bootstrap.min.css'}">
    <!--  jquery 放在 bootstrap 前面,因为 bootstrap 需要依赖到 jquery  -->
    <!--  引入 jQuery 的 Web Jar 中的 js 脚本  -->
    <script type="text/javascript" th:src="@{'/webjars/jquery/jquery.min.js'}"></script>
    <!--  引入 Bootstrap 的 Web Jar 中的 js 脚本  -->
    <script type="text/javascript" th:src="@{'/webjars/bootstrap/js/bootstrap.bundle.min.js'}"></script>
    <!--  引入 popper 的 Web Jar 中的 Js 脚本  -->
    <script type="text/javascript" th:src="@{'/webjars/popper.js/umd/popper.min.js'}"></script>

到了这里,关于43、基于 springboot 自动配置的 spring mvc 错误处理,就是演示项目报错后,跳转到自定义的错误页面的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring MVC 二 :基于xml配置

    创建一个基于xml配置的Spring MVC项目。 Idea创建新项目,pom文件引入依赖: 在项目的webapp/WEB-INF目录下创建web.xml文件,配置DispatcherServlet: 注意其中定义了contextConfigLocation:上下文配置文件位置,配置为:classpath:springmvc.xml,指定Spring MVC启动过程中会到指定位置读取该配置文件

    2024年02月11日
    浏览(29)
  • 1.7 基于XML配置方式使用Spring MVC

    1、创建Maven项目 Maven项目 - SpringMvcDemo01 单击【Finish】按钮 2、添加相关依赖 在pom.xml文件里添加支持Spring MVC的相关依赖 3、给项目添加Web功能 打开项目结构窗口,在列表里选择【Modules】 单击【+】按钮,添加Web功能 单击【Create Artifact】按钮,将名称改为“SpringMvcDemo01” 单击

    2024年02月08日
    浏览(40)
  • springBoot 配置文件 spring.mvc.throw-exception-if-no-handler-found 参数的作用

    在Spring Boot应用中,可以通过配置文件来控制当找不到请求处理器(handler)时是否抛出异常。具体的配置参数是 spring.mvc.throw-exception-if-no-handler-found 。 默认情况下,该参数的值为 false ,即当找不到请求处理器时,Spring MVC会返回404 Not Found响应。如果将该参数设置为 true ,则当

    2024年02月12日
    浏览(29)
  • Spring(8) Springboot自动配置原理

    Springboot 的自动配置原理,是Springboot中最高频的一道面试题,也是Springboot框架最核心的思想。 首先我们看一张我总结的自动配置原理概览图: 下面,我们就根据这张图详细描述一下具体过程: 首先,我们来看一段代码: 上面就是一段普通的 Springboot 引导类代码,这里有一

    2024年02月12日
    浏览(29)
  • SpringBoot相比于Spring的优点(自动配置和依赖管理)

    我们先看一下我们Spring整合Druid的过程,以及我们使用SpringBoot整合Druid的过程我们就知道我们SpringBoot的好处了。 Spring方式 Spring方式分为两种,第一种就是我们使用xml进行整合,第二种就是使用我们注解进行简化 xml方式 (1)导入坐标  (2)书写jdbc.properties文件和  applicati

    2024年02月08日
    浏览(31)
  • Spring MVC 异常处理

    统一处理某一类异常,能够减少代码的重复度和复杂度,有利于代码的维护。 Spring 统一异常处理有 4 种方式,分别为: 使用 @ ExceptionHandler 注解 实现 HandlerExceptionResolver 接口 使用 @controlleradvice 注解 使用 @Restcontrolleradvice注解 使用@ExceptionHandler注解作用在 方法 上面,参数是

    2024年02月13日
    浏览(20)
  • Spring MVC 异常处理器

    如果不加以异常处理,错误信息肯定会抛在浏览器页面上,这样很不友好,所以必须进行异常处理。 系统的dao、service、controller出现都通过throws Exception向上抛出,最后由springmvc前端控制器交由异常处理器进行异常处理,如下图: 编写controller 在index.jsp里面定义超链接

    2024年01月22日
    浏览(38)
  • Spring,SpringBoot,Spring MVC的区别是什么

    我们通常所说的 Spring 指的是 Spring Framework(Spring 框架),它是⼀个开源框架,有着活跃⽽庞⼤的社区,这就是它之所以能⻓久不衰的原因。Spring ⽀持⼴泛的应⽤场景,它可以让 Java 企业级的应⽤程序开发起来更简单。 ⽤⼀句话概括 Spring: Spring 是包含了众多⼯具⽅法的 I

    2024年02月15日
    浏览(33)
  • Spring MVC处理响应附案例详解

    目录 一、配置视图解析器 二、控制器方法的返回值 2.1 返回值为void 2.1.1 控制器方法 2.1.2 jsp页面 2.1.3 测试结果 2.2 返回值为String 2.2.1 控制器方法 2.2.2 测试结果 2.3 返回值为ModelAndView 2.3.1 控制器方法 2.3.2 JSP页面 2.3.3 测试结果  三、某些会话对象设置数据 3.1 request域设置数据

    2024年02月11日
    浏览(36)
  • Spring Mvc请求处理过程分析 --- 参数解析

    调试示例基于注解@RequestBody,请求的入参是json格式的请求,本文主要分析spring解析请求参数的过程。 InvocableHandlerMethod的getMethodArgumentValues方法,会解析请求参数。 在上面的代码中:args[i] = this.resolvers.resolveArgument(parameter, mavContainer, request, this.dataBinderFactory);完成对参数的解析

    2024年02月02日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包