在实际开发中,我们会遇到很多异常,在发生异常的时候Spring Boot默认提供了错误页面展示给用户。看似比较友好,其实页面很丑。...Boot中也非常简单,直接编写对应的错误页面,进行覆盖即可: /** * 自定义错误页面覆盖spring boot中的错误页面 * @author yinjihuan * */ @Controller...时把接口地址写错了,就会得到一个404错误页面,最友好的方式就是返回固定的JSON格式,里面有个code为404。...,然后封装好返回格式,返回给调用方 最后关键的一步是在spring boot的配置文件中加上如下配置: #出现错误时, 直接抛出异常 spring.mvc.throw-exception-if-no-handler-found...} 页面错误和REST错误共存 当我们加好rest接口处理的方式后,访问页面不存在就会返回一段json数据,如果你的项目中既有rest接口,又有页面,这个时候就有冲突了。
当程序出错的时候,比如500错误,当用户输入的url错误时会找不到网页。 在这种情况下如果用默认的错误页面非常不友好。 一般我们都需要定制一些错误的页面。...在普通的web项目中很简单,直接配置web.xml就可以了。...spring boot中如何使用自己的错误页面。...")); } }; } } 定义页面 /** * 自定义错误页面覆盖spring boot中的错误页面 * @author...="height:800px;"> 404, 页面没有找到 您正在寻找的页面不存在或发生其他错误。
当我们的后端应用出现异常时,通常会将异常状况包装之后再返回给调用方或者前端,在实际的项目中,不可能对每一个地方都做好异常处理,再优雅的代码也可能抛出异常,那么在 Spring 项目中,可以怎样优雅的处理这些异常呢...环境搭建 首先得搭建一个 web 应用才有可能继续后续的测试,借助 SpringBoot 搭建一个 web 应用属于比较简单的活; 创建一个 maven 项目,pom 文件如下 ...org.springframework.boot spring-boot-starter-parent...测试说明 实例测试如下,上面我们声明捕获的两种异常被拦截并输出对应的堆栈信息; 但是需要注意 404 和未捕获的 500 异常则显示的 SpringBoot 默认的错误页面; 此外我们捕获返回的 http...@ResponseStatus 上面的 case 中捕获的异常返回的状态码是 200,但是在某些 case 中,可能更希望返回更合适的 http 状态码,此时可以使用ResponseStatus来指定
环境搭建 首先得搭建一个web应用才有可能继续后续的测试,借助SpringBoot搭建一个web应用属于比较简单的活; 创建一个maven项目,pom文件如下 <groupId...异常页面配置 在SpringBoot项目中,本身提供了一个默认的异常处理页面,当我们希望使用自定义的404,500等页面时,可以如何处理呢? 1....默认异常页面配置 在默认的情况下,要配置异常页面非常简单,在资源路径下面,新建 error 目录,在下面添加400.html, 500html页面即可 ?...BasicErrorController 看上面的使用比较简单,自然会有个疑问,这个异常页面是怎么返回的呢? 从项目启动的日志中,注意一下RequestMappingHandlerMapping ?...小结 本篇内容比较简单,归纳为两句话如下 将自定义的异常页面根据http状态码命名,放在/error目录下 在异常状况下,根据返回的http状态码找到对应的异常页面返回 II. 其他 0.
环境搭建 首先得搭建一个web应用才有可能继续后续的测试,借助SpringBoot搭建一个web应用属于比较简单的活; 创建一个maven项目,pom文件如下 <groupId...\n").append(msg).flush();; 如果项目中有自定义的错误页面,可以通过返回ModelAndView来确定最终返回的错误页面 上面一个代码并不会直接生效,需要注册,可以在WebMvcConfigurer...500异常会进入我们的自定义异常处理类, 而404依然走的是默认的错误页面,所以如果我们需要捕获404异常,依然需要在配置文件中添加 # 出现错误时, 直接抛出异常 spring.mvc.throw-exception-if-no-handler-found...下面尽量以通俗易懂的方式说明下这个问题 java web应用,除了返回json类数据之外还可能返回网页,js,css 我们通过 @ResponseBody来表明一个url返回的是json数据(通常情况下是这样的...,不考虑自定义实现) 我们的@Controller中通过@RequestMapping定义的REST服务,返回的是静态资源 那么js,css,图片这些文件呢,在我们的web应用中并不会定义一个REST服务
专车介绍 该趟专车是开往SpringBoot自定义错误页面的专车,在使用应用程序的时候,难免会出现各种各样的异常,比如500、404的异常,针对这种异常,我们需要给用户提供友好的展示界面,比如500我们可以提示用户...此篇就来介绍如何针对异常自定义错误页面。 专车问题 第一个问题:如何针对不同的异常来自定义不同的友好界面?...专车分析 第一步:在父模块下面创建一个名为boot-example-error-page的子模块 第二步:子模块添加依赖 ...专车总结 第一个问题:如何针对不同的异常返回自定义错误页面?...自定义错误页面最主要的是要实现ErrorController,然后从request作用域中获取相应的错误码,针对不同的错误码,返回对应的页面 专车地址 [SpringBoot自定义错误页面](https
: dependencies:即使在子项目中不写该依赖项,那么子项目仍然会从父项目中继承该依赖项(全部继承)。...如果不在子项目中声明依赖,是不会从父项目中继承下来的;只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项,并且version和scope都读取自父pom;另外如果子项目中指定了版本号...如果我们想自己写一个错误页面,那么我们只需在默认的路径下创建一个同名的模板文件即可。...技术实现的, 简单的来说,过滤器就是起到过滤的作用,在web项目开发中帮我们过滤一些指定的 url做一些特殊的处理,他主要的功能如下: 过滤掉一些不需要的东西,例如一些错误的请求。...Spring容器中,同时两个对象都要分别配置一些属性,还是比较麻烦的,在SpringBoot中,依靠自动配置功能,我们可以非常轻松的实现集成FreeMarker,只需要引入一个依赖即可。
对于 Spring Boot 项目来说,启动时间是非常快的,在微服务的架构下,每个服务只关注自己的业务,代码量也非常小,这个启动时间是可以容忍的。...Boot Admin在页面上更加直观地展示这些信息,目前都是 Json 格式的数据,不方便查看。...=false 当我们调用一个不存在的接口时,返回的错误信息就是我们自定义的那种格式: { "status": false, "code": 404, "message": "No handler...在 Spring 中有一种更简单的方式来执行异步操作,只需要一个 @Async 注解即可,代码如下所示。...而在 Spring Boot 构建的 Web 项目中则打破了这一传统部署的方式,它采用更加简单的内置容器方式来部署应用程序,只需要将应用编译打包成一个 jar 包,直接可以通过 java–jar 命令启动应用
当我们从浏览器访问不存在的Spring Boot的RESTful API的时候,往往会返回Spring Boot内置的404错误界面,但是作为前后端分离的应用,相同的API也许会在其他终端访问,比如手机...一、Spring Boot的默认处理方式分析 从浏览器端访问 启动Spring Boot项目,从浏览器访问一个不存在的API,如“/user/hello”,这时候返回来的是一个HTML页面,如下图所示:...访问“/user/hello”返回的结果如下如所示: ? 对比上面的两种访问方式,返回的错误类型是不一样的,浏览器访问返回的是一个HTML页面,而客户端访问返回的是一个JSON数据。...二、自定义服务异常处理 在实际的开发过程中,如果出现404或者500的错误的时候,返回给浏览器是Spring Boot默认的处理界面,这并不友好,我们可以实现自定义页面来给出更好的温馨提示。...404.html和500.html,在访问出现404错误的时候,就会跳转到我们自己定义的HTML中,而不是Spring Boot默认的界面。
如果找到任何一个,它将自动用作应用程序的欢迎页面。、 自定义Favicon Spring Boot favicon.ico在配置的静态内容位置和类路径的根目录(按此顺序)中查找a 。...错误处理 Spring Boot默认提供一个/error映射用来以合适的方式处理所有的错误,并将它注册为servlet容器中全局的 错误页面。...对于浏览器客户端,它会产生一个白色标签样式(whitelabel)的错误视图,该视图将以HTML格式显示同样的数据(可以添加一个解析为'error'的View来自定义它)。...错误页面既可以是静态HTML(比如,任何静态资源文件夹下添加的),也可以是使用模板构建的,文件名必须是明确的状态码或一系列标签。...WebSphere应用服务器的错误处理 当部署到一个servlet容器时,Spring Boot通过它的错误页面过滤器将带有错误状态的请求转发到恰当的错误页面。
所以对Java程序员来说其中不乏说对 Spring Boot 非常熟悉的,然后当问到一些 Spring Boot 核心功能和原理的时候,没人能说得上来,或者说不到点上,可以说一个问题就问趴下了!...文末有彩蛋~ Spring Boot2教程 在Spring Boot项目中,正常来说是不存在XML配置,这是因为Spring Boot不推荐使用 XML ,注意,并非不支持,Spring Boot...SpringMVC 的配置,在SpringMVC 配置的包扫描中也去扫描 @Configuration 注解,进而加载 Spring 容器,还有一种方案可以解决这个问题,就是直接在项目中舍弃 Spring...默认是在 classpath:/static/error/ 路径下定义相关页面: 此时,启动项目,如果项目抛出 500 请求错误,就会自动展示 500.html 这个页面,发生 404 就会展示404...类的errorHtml 方法中,这个方法用来返回异常页面+数据,还有另外一个 error 方法,这个方法用来返回异常数据(如果是 ajax 请求,则该方法会被触发)。
default void addViewControllers(ViewControllerRegistry registry) {} 主要用于实现无业务逻辑跳转,例如主页跳转,简单的请求重定向,错误页跳转等...在SpringBoot项目中,我们可以通过拓展SpringMVC和全面接管Spring MVC这两种方式来定制Spring MVC....:8080/index”3 个 URL 都会返回login,如下所示: 全面接管Spring MVC 这个用法其实用得非常少,大家了解一下就好了。...后,Spring Boot 对 Spring MVC 的默认配置都会失效,此时再访问静态资源文件夹中的静态资源就会报 404 错误。)...”3 个 URL 都会返回500或404。
对于 Spring Boot 项目来说,启动时间是非常快的,在微服务的架构下,每个服务只关注自己的业务,代码量也非常小,这个启动时间是可以容忍的。 对于那些臃肿的单体老项目,启动时间简直是浪费生命。...后面我们会介绍如何使用 Spring Boot Admin 在页面上更加直观地展示这些信息,目前都是 Json 格式的数据,不方便查看。...=false 然后当我们调用一个不存在的接口时,返回的错误信息就是我们自定义的那种格式了: { "status": false, "code": 404, "message": "No...在 Spring 中有一种更简单的方式来执行异步操作,只需要一个 @Async 注解即可,代码如下所示。...而在 Spring Boot 构建的 Web 项目中则打破了这一传统部署的方式,它采用更加简单的内置容器方式来部署应用程序,只需要将应用编译打包成一个 jar 包,直接可以通过 java–jar 命令启动应用
异常处理 Spring Boot 提供了一个 WebExceptionHandler 用来处理所有错误,WebExceptionHandler 执行通常被认为是处理链中的最后一步,仅位于 WebFlux...对于机器端,它通常是一个 JSON 响应,包含了HTTP 状态码、错误信息等;对于浏览器端,它通常是一个 “whitelabel” HTML 错误页面,页面渲染了相同的错误信息。...HTML 错误页面,你可以在 /error 目录下添加一个错误页面文件。...过滤器 Spring WebFlux 提供了一个 WebFilter 接口,用来对 HTTP 请求-响应路由进行过滤,在应用程序上下文中找到的 WebFilter bean 将自动用于过滤每个路由!...以下是一个简单鉴权的过滤器 demo — 对于 没有 token 参数的请求返回 401 错误: @Component public class CustomWebFilter implements WebFilter
SpringWeb项目除了我们常见的返回json串之外,还可以直接返回静态资源(当然在现如今前后端分离比较普遍的情况下,不太常见了),一些简单的web项目中,前后端可能就一个人包圆了,前端页面,js.../css文件也都直接放在Spring项目中,那么你知道这些静态资源文件放哪里么 spring-boot-starter-web 在资源文件夹resources下,新建四个目录...优先级测试 关于优先级的测试用例,主要思路就是在上面四个不同的文件夹下面放相同文件名的静态资源,然后根据访问时具体的返回来确定相应的优先级。相关代码可以在文末的源码中获取,这里就不赘述了 II....修改配置文件 第一种方式比较简单和实用,修改上面的spring.resources.static-locations配置,添加上自定义的资源目录,如在 application.yml 中,指定配置 spring
[logo.jpg] 【WEB系列】静态资源配置与读取 SpringWeb项目除了我们常见的返回json串之外,还可以直接返回静态资源(当然在现如今前后端分离比较普遍的情况下,不太常见了),一些简单的web...项目中,前后端可能就一个人包圆了,前端页面,js/css文件也都直接放在Spring项目中,那么你知道这些静态资源文件放哪里么 spring-boot-starter-web 在资源文件夹resources下,新建四个目录...优先级测试 关于优先级的测试用例,主要思路就是在上面四个不同的文件夹下面放相同文件名的静态资源,然后根据访问时具体的返回来确定相应的优先级。相关代码可以在文末的源码中获取,这里就不赘述了 II....实例 新建一个工程,只提供基本的html静态资源,项目基本结构如下(具体的html内容就不粘贴了,墙裂建议有兴趣的小伙伴直接看源码,阅读效果更优雅) [08.jpg] 接着在我们上面常见的工程中,添加依赖
前面介绍了spring web篇数据返回的几种常用姿势,当我们在相应一个http请求时,除了直接返回数据之外,还有另一种常见的case -> 重定向; 比如我们在逛淘宝,没有登录就点击购买时,会跳转到登录界面...返回redirect 这种case通常适用于返回视图的接口,在返回的字符串前面添加redirect:方式来告诉Spring框架,需要做302重定向处理 @Controller @RequestMapping...小结 这里主要介绍了两种常见的后端重定向方式,都比较简单,这两种方式也有自己的适用场景(当然并不绝对) 在返回视图的前面加上redirect的方式,更加适用于视图的跳转,从一个网页跳转到另一个网页 HttpServletResponse...#sendRedirec的方式更加灵活,可以在后端接收一次http请求生命周期中的任何一个阶段来使用,比如有以下几种常见的场景 某个接口要求登录时,在拦截器层针对所有未登录的请求,重定向到登录页面 全局异常处理中...,如果出现服务器异常,重定向到定制的500页面 不支持的请求,重定向到404页面 II.
Spring Boot2教程 在Spring Boot项目中,正常来说是不存在XML配置,这是因为Spring Boot不推荐使用 XML ,注意,并非不支持,Spring Boot 推荐开发者使用 Java...配置来搭建框架,Spring Boot 中,大量的自动化配置都是通过 Java 配置来实现的,这一套实现方案,我们也可以自己做,即自己也可以使用纯 Java 来搭建一个 SSM 环境,即在项目中,不存在任何...Spring Boot全局异常处理 在Spring Boot项目中 ,异常统一处理,可以使用Spring中@ControllerAdvice来统一处理,也可以自己来定义异常处理方案。...此时,启动项目,如果项目抛出 500 请求错误,就会自动展示 500.html 这个页面,发生 404 就会展示404.html 页面。...类的errorHtml 方法中,这个方法用来返回异常页面+数据,还有另外一个 error 方法,这个方法用来返回异常数据(如果是 ajax 请求,则该方法会被触发)。
序 本文简单介绍一下,在springboot中怎么个性化404错误信息。...返回json @Bean public EmbeddedServletContainerCustomizer containerCustomizer() { return new....html")); } }; } 然后定义个404的request @GetMapping("/404") @ResponseBody...public Object customNotFound(){ return "not found"; } 返回页面 @Bean public EmbeddedServletContainerCustomizer....html")); } }; } 然后将404.html放在resources/static目录下 这样就大功告成了 doc spring boot中自定义错误提示页面
领取专属 10元无门槛券
手把手带您无忧上云