在配置中定义servlet路径时如何在spring boot中提供静态内容

Posted

技术标签:

【中文标题】在配置中定义servlet路径时如何在spring boot中提供静态内容【英文标题】:How to serve static content in spring boot when servlet path is defined in config 【发布时间】:2020-05-15 19:02:03 【问题描述】:

我注意到,在指定 servlet 路径时,提供静态内容不能开箱即用。事实上,我无法让它以任何方式工作。这是我的 application.properties 文件的一部分:

server.servlet.context-path=/online
spring.mvc.servlet.path=/app

如果我注释掉 spring.mvc.servlet.path=/app,那么当我点击 url localhost:8080/online/styles.css 时,我就可以访问 resources/static 文件夹下的 styles.css 文件。但是有了这个配置,应用程序就会抛出 404 错误。 DispathcherServlet 肯定不会处理该请求,AFAIK 是预期的行为。如果ResourceHttpRequestHandler 类是处理它的类,那么它的handleRequest 方法会错过请求。关于应该做什么的任何想法?

【问题讨论】:

【参考方案1】:

ResourceHttpRequestHandler也受到spring.mvc.servlet.path变化的影响,因此css将作为localhost:8080/online/app/styles.css服务

【讨论】:

以上是关于在配置中定义servlet路径时如何在spring boot中提供静态内容的主要内容,如果未能解决你的问题,请参考以下文章

配置servlet时<url-pattern>的作用是

如何在 Spring Boot Tests 中设置 servlet 上下文路径?

在jsp文件中如何编写正确的servlet请求路径

spring boot:如何配置自动装配的 WebTestClient

SpringBoot配置介绍

如何在 web.xml 中配置 spring-boot servlet?