当前位置: 首页 > 面试题库 >

具有上下文路径的Spring Boot静态内容

宰父劲
2023-03-14
问题内容

使用上下文路径时,Spring Boot中的静态内容出现问题。即:我希望将我的应用程序部署到localhost:8080/{appname}/

当我在没有上下文路径的情况下运行应用程序时,一切正常,Spring Boot会找到并运行我的.html文件(来自资源/ templates
/,我正在使用Thymeleaf)和JS文件(来自资源/ static / js /),但是当我添加上下文路径时与:

server.context-path=/{appname}

要么

server.servlet-path=/{appname}

然后这些.html页面仍由JS文件显示,产生 404错误

我已经尝试spring.resources.static- locations在自己的application.properties和覆盖addResourceHandlers()方法中更改,MvcConfig.class但似乎都没有用

我使用一个MvcConfig类是因为我需要定义一个CookieLocaleResolver和一个,MessageSource但这就是我所拥有的MvcConfig。我不使用@EnableWebMvc,只是带有的@SpringBootApplication注释@ComponentScan

任何帮助,将不胜感激 :)


问题答案:

根据您的评论:

HTML在没有应用上下文的情况下引用了JS

问题不在于Spring为js提供服务,其原因在于页面未正确创建资源的URL。

Thymeleaf通过仅用th前缀标记src属性提供了一种自动支持此功能的机制。

请参阅第2节“相对于上下文的URL”:www.thymeleaf.org/doc/articles/standardurlsyntax.html



 类似资料:
  • 当我在没有上下文路径的情况下运行应用程序时,一切都运行得很好,并且Spring Boot查找并运行我的文件(来自resources/templates/,我使用)和JS文件(来自resources/static/JS/),但是当我添加上下文路径时: 或 则页面仍然显示由JS文件生成的404个错误。 我尝试更改中的和我的中重写方法,但似乎都不起作用 我使用类,因为我需要定义一个和一个,但这是我在中所

  • 我有一个Spring Boot2.0应用程序,我试图将其部署为WAR文件。这意味着它将有一个自定义上下文路径。作为我添加的Java应用程序进行测试 不管我是否使用上下文路径,它总是试图从http://localhost:8080/dist/main.js加载文件,完全忽略我指定的上下文路径。如果我试图将我的应用程序部署为WAR也是如此。该文件实际上位于http://localhost:8080/m

  • 假设我有一个包含以下内容的application.yml 从springboot开始,我就控制了Tomcat。有没有什么方法可以添加一个基本的html到它的根级别,这样我们的负载均衡器就不会标记我们的应用程序不可用?PD:我没有设置负载均衡器权限:(

  • 我通过将上下文路径设置为/myservice来运行我的springboot应用程序。这将导致附加在URL处公开的所有执行器endpoint-http://localhost:8080/myservice/actuator/,而我只想要http://localhost:8080/actuator/.有没有办法告诉springboot忽略将上下文路径附加到执行器endpoint(通过Dispatche

  • 根据JLS §8.1.3,为什么Java不允许在内部类中建立静态上下文?

  • 我有2个docker compose文件需要一起运行,文件的位置如下 /home/project1/docker compose。yml公司 和 /home/project2/docker-compose.yml 所以很明显两个服务应该有不同的上下文路径 但当我在docker下运行compose命令时 docker compose-f/home/project1/docker compose。ym