如何在 Spring Boot 中创建自定义错误页面

Posted

技术标签:

【中文标题】如何在 Spring Boot 中创建自定义错误页面【英文标题】:How to create custom error page in spring boot 【发布时间】:2017-10-03 12:42:09 【问题描述】:

我从以下网址阅读了参考资料

Customized 404 error page in spring-boot 及其工作。

在上述文档中,他们使用了 .html 页面。但我需要.jsp 页面。

src/
+- main/
   +- java/
   +- resources/
       +- public/
           +- error/
           |   +- 404.html

即。 404.html转404.jsp

有可能吗?

【问题讨论】:

【参考方案1】:

是的,这是可能的。

你只需要配置

InternalViewResolver

与 .jsp 扩展名一样。

编辑:

请检查以下示例代码。

private static final String VIEW_RESOLVER_PREFIX = "your/jsp/location";
private static final String VIEW_RESOLVER_SUFFIX = ".jsp";

@Bean
public ViewResolver viewResolver() 
    InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
    viewResolver.setPrefix(VIEW_RESOLVER_PREFIX);
    viewResolver.setSuffix(VIEW_RESOLVER_SUFFIX);
    return viewResolver;

【讨论】:

谢谢。你能告诉我一个示例配置吗? 'application.properties' 有什么变化吗? 我已经在 'application.properites' 中进行了配置。 spring.mvc.view.prefix=/WEB-INF/Views/spring.mvc.view.suffix=.jsp。错误页面可以是静态 JSP docs.spring.io/spring-boot/docs/current/reference/htmlsingle/…【参考方案2】:

您需要首先配置 spring boot 以使用 jsp,因为它不是开箱即用的。在maven pom.xml中,添加如下依赖:

    <!-- Need this to compile JSP -->
    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.eclipse.jdt.core.compiler</groupId>
        <artifactId>ecj</artifactId>
        <version>4.6.1</version>
        <scope>provided</scope>
    </dependency>
    <!-- JSTL for JSP -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
    </dependency>

在 application.properties 中:

spring.mvc.view.prefix= /WEB-INF/jsp/
spring.mvc.view.suffix= .jsp

按照我的配置方式,.jsp 文件需要位于 src/main/webapp/WEB-INF/jsp 文件夹中,因此如果需要,请创建它。 假设我创建了一个文件 src/main/webapp/WEB-INF/jsp/error/404.jsp。要从我的控制器访问它,我只是将其称为

return "error/404";

因为spring boot会自动为我添加视图前缀和后缀。

【讨论】:

以上是关于如何在 Spring Boot 中创建自定义错误页面的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Spring Cloud 中创建自定义 zuul 过滤器

如何在 JavaScript 中创建自定义错误?

如何在 Angular Material 中创建自定义输入错误

如何在 Django 中创建自定义 403 页面?

无法在 Spring Data Repository 中创建自定义查询方法 [重复]

如何在 laravel 5.6 中创建自定义帮助文件?