当前位置: 首页 > 知识库问答 >
问题:

我如何使用spring boot提供静态内容,它在我的JAR外部?

魏景龙
2023-03-14

我从docker容器构建/启动中获得了以下内容

Step 13 : ENV WEBROOT /package/dist
 ---> Running in 0d0d3651fa08
 ---> e80c20af18ba
Removing intermediate container 0d0d3651fa08
Step 14 : USER $SPRING_APPLICATION_NAME
 ---> Running in 7fe20b631fee
 ---> 37435f78675b
Removing intermediate container 7fe20b631fee
Step 15 : CMD ls -l $WEBROOT && java -Djava.security.egd=file:/dev/urandom -Dlogging.level.org.springframework=DEBUG -Dspring.resources.static-locations=file:$WEBROOT/** -jar $JAR
 ---> Running in 9b71fb7bde61
 ---> 82e77cfde02a
Removing intermediate container 9b71fb7bde61
Successfully built 82e77cfde02a
total 1788
-rw-r--r--    1 root     root        152796 Aug 13 06:46 1dc35d25e61d819a9c357074014867ab.ttf
-rw-r--r--    1 root     root         76518 Aug 13 06:46 25a32416abee198dd821b0b17a198a8f.eot
-rw-r--r--    1 root     root         18028 Aug 13 06:46 448c34a56d699c29117adc64c43affeb.woff2
-rw-r--r--    1 root     root        108738 Aug 13 06:46 89889688147bd7575d6327160d64e760.svg
-rw-r--r--    1 root     root        170605 Aug 13 06:46 app.ff81c2c4df5a052cee7f.bundle.js
-rw-r--r--    1 root     root            87 Aug 13 06:46 app.ff81c2c4df5a052cee7f.bundle.map
-rw-r--r--    1 root     root        129946 Aug 13 06:46 aurelia-bootstrap.920ea8ba3d3ae900df6b.bundle.js
-rw-r--r--    1 root     root        307763 Aug 13 06:46 aurelia.042f8d07b45053bfe6a6.bundle.js
-rw-r--r--    1 root     root         90412 Aug 13 06:46 c8ddf1e5e5bf3682bc7bebf30f394148.woff
-rw-r--r--    1 root     root        391622 Aug 13 06:46 d7c639084f684d66a1bc66855d193ed8.svg
-rw-r--r--    1 root     root         45404 Aug 13 06:46 e18bbf611f2a2e43afc071aa2f4e1512.ttf
-rw-r--r--    1 root     root         71896 Aug 13 06:46 e6cf7c6ec7c2d6f670ae9d762604cb0b.woff2
-rw-r--r--    1 root     root         20127 Aug 13 06:46 f4769f9bdb7466be65088239c12046d1.eot
-rw-r--r--    1 root     root         23424 Aug 13 06:46 fa2772327f55d8198301fdb8bcfc8158.woff
-rw-r--r--    1 root     root          2249 Aug 13 06:46 favicon.ico
-rw-r--r--    1 root     root           568 Aug 13 06:46 index.html
-rw-r--r--    1 root     root        183950 Aug 13 06:46 styles.css

容器启动良好,所有这些,完成非常长的调试日志记录

2016-08-13 08:09:17.006 DEBUG 8 --- [           main] o.s.w.s.resource.ResourceUrlProvider     : Found resource handler mapping: URL pattern="/**/favicon.ico", locations=[URL [file:/package/dist/**], class path resource []], resolvers=[org.springframework.web.servlet.resource.PathResourceResolver@25df00a0]
2016-08-13 08:09:17.006 DEBUG 8 --- [           main] o.s.w.s.resource.ResourceUrlProvider     : Found resource handler mapping: URL pattern="/webjars/**", locations=[class path resource [META-INF/resources/webjars/]], resolvers=[org.springframework.web.servlet.resource.PathResourceResolver@4d15107f]
2016-08-13 08:09:17.006 DEBUG 8 --- [           main] o.s.w.s.resource.ResourceUrlProvider     : Found resource handler mapping: URL pattern="/**", locations=[URL [file:/package/dist/**]], resolvers=[org.springframework.web.servlet.resource.PathResourceResolver@7b4c50bc]
2016-08-13 08:15:16.448 DEBUG 8 --- [nio-8080-exec-2] o.s.b.w.f.OrderedRequestContextFilter    : Bound request context to thread: org.springframework.session.web.http.SessionRepositoryFilter$SessionRepositoryRequestWrapper@4a8af076
2016-08-13 08:15:16.448 DEBUG 8 --- [nio-8080-exec-2] o.s.s.web.util.matcher.OrRequestMatcher  : Trying to match using Ant [pattern='/css/**']
2016-08-13 08:15:16.448 DEBUG 8 --- [nio-8080-exec-2] o.s.s.w.u.matcher.AntPathRequestMatcher  : Checking match of request : '/'; against '/css/**'
2016-08-13 08:15:16.448 DEBUG 8 --- [nio-8080-exec-2] o.s.s.web.util.matcher.OrRequestMatcher  : Trying to match using Ant [pattern='/js/**']
2016-08-13 08:15:16.448 DEBUG 8 --- [nio-8080-exec-2] o.s.s.w.u.matcher.AntPathRequestMatcher  : Checking match of request : '/'; against '/js/**'
2016-08-13 08:15:16.448 DEBUG 8 --- [nio-8080-exec-2] o.s.s.web.util.matcher.OrRequestMatcher  : Trying to match using Ant [pattern='/images/**']
2016-08-13 08:15:16.448 DEBUG 8 --- [nio-8080-exec-2] o.s.s.w.u.matcher.AntPathRequestMatcher  : Checking match of request : '/'; against '/images/**'
2016-08-13 08:15:16.448 DEBUG 8 --- [nio-8080-exec-2] o.s.s.web.util.matcher.OrRequestMatcher  : Trying to match using Ant [pattern='/webjars/**']
2016-08-13 08:15:16.448 DEBUG 8 --- [nio-8080-exec-2] o.s.s.w.u.matcher.AntPathRequestMatcher  : Checking match of request : '/'; against '/webjars/**'
2016-08-13 08:15:16.448 DEBUG 8 --- [nio-8080-exec-2] o.s.s.web.util.matcher.OrRequestMatcher  : Trying to match using Ant [pattern='/**/favicon.ico']
2016-08-13 08:15:16.448 DEBUG 8 --- [nio-8080-exec-2] o.s.s.w.u.matcher.AntPathRequestMatcher  : Checking match of request : '/'; against '/**/favicon.ico'
2016-08-13 08:15:16.448 DEBUG 8 --- [nio-8080-exec-2] o.s.s.web.util.matcher.OrRequestMatcher  : Trying to match using Ant [pattern='/error']
2016-08-13 08:15:16.448 DEBUG 8 --- [nio-8080-exec-2] o.s.s.w.u.matcher.AntPathRequestMatcher  : Checking match of request : '/'; against '/error'
2016-08-13 08:15:16.448 DEBUG 8 --- [nio-8080-exec-2] o.s.s.web.util.matcher.OrRequestMatcher  : No matches found
2016-08-13 08:15:16.448 DEBUG 8 --- [nio-8080-exec-2] o.s.s.w.u.matcher.AntPathRequestMatcher  : Checking match of request : '/'; against '/'
2016-08-13 08:15:16.448 DEBUG 8 --- [nio-8080-exec-2] o.s.security.web.FilterChainProxy        : / has an empty filter list
2016-08-13 08:15:16.449 DEBUG 8 --- [nio-8080-exec-2] o.s.web.servlet.DispatcherServlet        : DispatcherServlet with name 'dispatcherServlet' processing GET request for [/]
2016-08-13 08:15:16.450 DEBUG 8 --- [nio-8080-exec-2] o.s.b.a.e.mvc.EndpointHandlerMapping     : Looking up handler method for path /
2016-08-13 08:15:16.453 DEBUG 8 --- [nio-8080-exec-2] o.s.b.a.e.mvc.EndpointHandlerMapping     : Did not find handler method for [/]
2016-08-13 08:15:16.453 DEBUG 8 --- [nio-8080-exec-2] s.w.s.m.m.a.RequestMappingHandlerMapping : Looking up handler method for path /
2016-08-13 08:15:16.454 DEBUG 8 --- [nio-8080-exec-2] s.w.s.m.m.a.RequestMappingHandlerMapping : Did not find handler method for [/]
2016-08-13 08:15:16.454 DEBUG 8 --- [nio-8080-exec-2] o.s.w.s.handler.SimpleUrlHandlerMapping  : Matching patterns for request [/] are [/**]
2016-08-13 08:15:16.454 DEBUG 8 --- [nio-8080-exec-2] o.s.w.s.handler.SimpleUrlHandlerMapping  : URI Template variables for request [/] are {}
2016-08-13 08:15:16.454 DEBUG 8 --- [nio-8080-exec-2] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapping [/] to HandlerExecutionChain with handler [ResourceHttpRequestHandler [locations=[URL [file:/package/dist/**]], resolvers=[org.springframework.web.servlet.resource.PathResourceResolver@7b4c50bc]]] and 1 interceptor
2016-08-13 08:15:16.454 DEBUG 8 --- [nio-8080-exec-2] o.s.web.servlet.DispatcherServlet        : Last-Modified value for [/] is: -1
2016-08-13 08:15:16.454 DEBUG 8 --- [nio-8080-exec-2] o.s.web.servlet.DispatcherServlet        : Null ModelAndView returned to DispatcherServlet with name 'dispatcherServlet': assuming HandlerAdapter completed request handling
2016-08-13 08:15:16.454 DEBUG 8 --- [nio-8080-exec-2] o.s.web.servlet.DispatcherServlet        : Successfully completed request
2016-08-13 08:15:16.454 DEBUG 8 --- [nio-8080-exec-2] o.s.b.w.f.OrderedRequestContextFilter    : Cleared thread-bound request context: org.springframework.session.web.http.SessionRepositoryFilter$SessionRepositoryRequestWrapper@4a8af076
2016-08-13 08:15:16.455 DEBUG 8 --- [nio-8080-exec-2] o.s.web.servlet.DispatcherServlet        : DispatcherServlet with name 'dispatcherServlet' processing GET request for [/error]
2016-08-13 08:15:16.455 DEBUG 8 --- [nio-8080-exec-2] o.s.b.a.e.mvc.EndpointHandlerMapping     : Looking up handler method for path /error
2016-08-13 08:15:16.456 DEBUG 8 --- [nio-8080-exec-2] o.s.b.a.e.mvc.EndpointHandlerMapping     : Did not find handler method for [/error]
2016-08-13 08:15:16.456 DEBUG 8 --- [nio-8080-exec-2] s.w.s.m.m.a.RequestMappingHandlerMapping : Looking up handler method for path /error
2016-08-13 08:15:16.456 DEBUG 8 --- [nio-8080-exec-2] s.w.s.m.m.a.RequestMappingHandlerMapping : Returning handler method [public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)]
2016-08-13 08:15:16.456 DEBUG 8 --- [nio-8080-exec-2] o.s.b.f.s.DefaultListableBeanFactory     : Returning cached instance of singleton bean 'basicErrorController'
2016-08-13 08:15:16.456 DEBUG 8 --- [nio-8080-exec-2] o.s.web.servlet.DispatcherServlet        : Last-Modified value for [/error] is: -1
2016-08-13 08:15:16.457 DEBUG 8 --- [nio-8080-exec-2] o.s.w.s.v.ContentNegotiatingViewResolver : Requested media types are [text/html, text/html;q=0.8] based on Accept header types and producible media types [text/html])
2016-08-13 08:15:16.457 DEBUG 8 --- [nio-8080-exec-2] o.s.b.f.s.DefaultListableBeanFactory     : Returning cached instance of singleton bean 'error'
2016-08-13 08:15:16.457 DEBUG 8 --- [nio-8080-exec-2] o.s.w.servlet.view.BeanNameViewResolver  : No matching bean found for view name 'error.html'
2016-08-13 08:15:16.457 DEBUG 8 --- [nio-8080-exec-2] o.s.w.s.v.ContentNegotiatingViewResolver : Returning [org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfiguration$SpelView@316bcf94] based on requested media type 'text/html'
2016-08-13 08:15:16.457 DEBUG 8 --- [nio-8080-exec-2] o.s.web.servlet.DispatcherServlet        : Rendering view [org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfiguration$SpelView@316bcf94] in DispatcherServlet with name 'dispatcherServlet'
2016-08-13 08:15:16.457 DEBUG 8 --- [nio-8080-exec-2] 
o.s.web.servlet.DispatcherServlet        : Successfully completed request

Spring Boot(1.4.0)版本与IO Platform Athens RC1一起打包

如何为JAR外部的静态内容提供服务?

共有1个答案

公良俊楚
2023-03-14

所以@david-pérez-cabrera的答案是正确的,但我原来的答案也是错误的,问题的根本原因是@enablewebmvc注释。它显然有效地禁用了Spring MVC的属性

 类似资料:
  • 我无法访问静态内容(angular app),甚至无法访问简单的索引。来自spring boot的html文件。我一直收到404错误。Spring没有为我提供这些静态文件。自从升级到Spring Boot 2.2.4后,我就遇到了这个问题。我必须升级以应对Zip64问题。 我的application.properties里有这样一句话: 我也有自己的staticResourceConfigurat

  • 因此,我正在IntelliJ开发一个spring boot应用程序。使用Gradle,我创建了sprint引导jar文件。 我很难确定将JSP和静态内容(如。js文件)放在哪里,这样运行jar和从IntelliJ内部运行都能正常工作!

  • 我有一个小型java webapp,由三个微服务组成——api-service、book-service和db-service,所有这些都使用mini kube本地部署在kubernetes集群上。 我计划为api-service和book-service保留单独的UI,从单独的pod提供常见的静态文件,可能是映像。 我能够创建一个前端,为参考本教程的nginx:alpine中的静态文件提供服务。

  • 问题内容: 我在两个不同的容器(Tomcat和Jetty)上部署了一个webapp,但是它们用于提供静态内容的默认servlet具有处理我要使用的URL结构的不同方式(详细信息)。 因此,我希望在web应用程序中包含一个小型servlet,以提供其自己的静态内容(图像,CSS等)。Servlet应该具有以下属性: No external dependencies Simple and reliab

  • 类似于另一个问题(参见过滤静态内容Jersey),我想从Jetty提供静态内容。在浩瀚的互联网上散布着几个类似的问题,但大多数都不涉及Guice,而那些涉及Guice的问题已经完全过时了。 我有一个现有的服务,使用泽西(1.12)和Guice(3)与以下: < code>MyGuiceConfig看起来像这样: 当我使用 时,我的服务按预期工作。但是,任何对静态内容的请求都会产生404。 如何在不

  • 我正在通过spring boot启动一个嵌入式tomcat,并希望提供一个静态索引。html页面作为正在运行的应用程序的一部分。 但以下方法不起作用: 结果:当我调用localhost:8080时,我只看到单词“index”,而没有看到我的html页面。为什么?