千家信息网

SpringBoot自定义错误页面方式有哪些

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要讲解了"SpringBoot自定义错误页面方式有哪些",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"SpringBoot自定义错误页面方式有
千家信息网最后更新 2026年11月02日SpringBoot自定义错误页面方式有哪些

这篇文章主要讲解了"SpringBoot自定义错误页面方式有哪些",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"SpringBoot自定义错误页面方式有哪些"吧!

以前web.xml方式

先来看下在web.xml中配置错误页面的方式:

    404    /error/404.jsp

SpringBoot中实现方式

在SpringBoot后,可以通过如下几种方式实现自定义错误页面。

1.实现EmbeddedServletContainerCustomizer的bean

适合内嵌服务器,先在controller中定义我们的错误页面Mapping,通过在配置类中实现EmbeddedServletContainerCustomizer的bean,加入对应状态码的错误页面。注意这种方式在打成war后,供外部tomcat使用时,将会失效。

定义错误页面:

   @RequestMapping(value = "/error/[code]")    public String error(@PathVariable int code, Model model) {        String pager = "/content/error-pager";        switch (code) {            case 404:                model.addAttribute("code", 404);                pager = "/content/error-pager";                break;            case 500:                model.addAttribute("code", 500);                pager = "/content/error-pager";                break;        }        return pager;    }

在配置类中加入EmbeddedServletContainerCustomizer:

  /**     * 配置默认错误页面(仅用于内嵌tomcat启动时)     * 使用这种方式,在打包为war后不起作用     *     * @return     */  @Beanpublic EmbeddedServletContainerCustomizer containerCustomizer() {        return container -> {            ErrorPage error404Page = new ErrorPage(HttpStatus.NOT_FOUND, "/error/404");            ErrorPage error500Page = new ErrorPage(HttpStatus.INTERNAL_SERVER_ERROR, "/error/500");            container.addErrorPages(error404Page, error500Page);        };

2.通过拦截器方式

适合内嵌Tomcat或者war方式。

/** * @author hgs * @version ErrorPageInterceptor.java, v 0.1 2018/03/04 20:52 hgs Exp $ * 

* 错误页面拦截器 * 替代EmbeddedServletContainerCustomizer在war中不起作用的方法 */@Componentpublic class ErrorPageInterceptor extends HandlerInterceptorAdapter { private List errorCodeList = Arrays.asList(404, 403, 500, 501); @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { if (errorCodeList.contains(response.getStatus())) { response.sendRedirect("/error/" + response.getStatus()); return false; } return super.preHandle(request, response, handler); }}

在配置类中添加拦截

@Configurationpublic class WebMvcConfig extends WebMvcConfigurerAdapter { @Override    public void addInterceptors(InterceptorRegistry registry) {        registry.addInterceptor(errorPageInterceptor);//.addPathPatterns("/action/**", "/mine/**");默认所有        super.addInterceptors(registry);    }}

3.自定义静态error页面方法

在resource/templates下添加error.html页面,springBoot会自动找到该页面作为错误页面,适合内嵌Tomcat或者war方式。

SpringBoot错误视图提供了以下错误属性:

  • timestamp:错误发生时间;

  • status:HTTP状态吗;

  • error:错误原因;

  • exception:异常的类名;

  • message:异常消息(如果这个错误是由异常引起的);

  • errors:BindingResult异常里的各种错误(如果这个错误是由异常引起的);

  • trace:异常跟踪信息(如果这个错误是由异常引起的);

  • path:错误发生时请求的URL路径。

SpringBoot使用的前端框架模板不同,页面的名称也有所不同:

  • 实现Spring的View接口的Bean,其ID需要设置为error(由Spring的BeanNameViewResolver所解析);

  • 如果配置了Thymeleaf,则需命名为error.html的Thymeleaf模板;

  • 如果配置了FreeMarker,则需命名为error.ftl的FreeMarker模板;

  • 如果配置了Velocity,则需命名为error.vm的Velocity模板;

  • 如果是用JSP视图,则需命名为error.jsp的JSP模板。

Thymeleaf实例:

    

非常抱歉,没有找到您要查看的页面

返回首页

对于外部Tomcat第三中方案是比较推荐的一种实现方式,但不够灵活,我们不好定义自己的属性,如果想对其做相应修改,可以参见源码BasicErrorController,通过继承AbstractErrorController,并重写errorHtml方法,达到自己想要的效果。在内嵌Tomcat时,第一种推荐使用,更具灵活性。

感谢各位的阅读,以上就是"SpringBoot自定义错误页面方式有哪些"的内容了,经过本文的学习后,相信大家对SpringBoot自定义错误页面方式有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

错误 页面 方式 配置 模板 方法 是由 学习 不同 作用 内容 属性 状态 视图 中实 拦截器 推荐 抱歉 不够 不好 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 深圳市人人互联网科技有限公司 广东万易互联网科技有限公司惠州分公司 互联网科技会 美国互联网科技巨头监管 互联网科技社 远拓互联网科技 易通互联网络科技有限公司 无锡溥仪互联网科技有限公司 银川新华互联网科技学校地址 茂名市互联网科技产业园 知域互联网科技有限公司大骗子 长沙互联网科技 怎样加入科技互联网 下一代互联网重大应用科技园 半导体行业属于互联网高科技类吗 宁波跨境商互联网科技有限公司 萌小萌互联网科技河南有限公司 张家口科技产业互联网平台 互联网科技创新创业项目 六子台科技互联网展会 互联网科技未来 互联网络科技有限公司 互联网科技ppt模板 科技互联网创业计划书 盛创互联网科技有限公司 互联网科技热点资讯 互联网还是高科技吗 河南猎农互联网科技有限公司 中国互联网公司排名锤子科技 广东猫王互联网科技有限公司电话
0