首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在/*上映射全局前端控制器servlet时访问静态资源

如何在/*上映射全局前端控制器servlet时访问静态资源
EN

Stack Overflow用户
提问于 2009-05-15 18:23:40
回答 15查看 116.2K关注 0票数 60

我已经将Spring MVC dispatcher映射为/*上的全局前端控制器servlet。

代码语言:javascript
运行
复制
<servlet>       
  <servlet-name>home</servlet-name>         
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>     
</servlet>  
<servlet-mapping>       
  <servlet-name>home</servlet-name>         
  <url-pattern>/*</url-pattern>     
</servlet-mapping>

然而,这个映射阻止了对/res/文件夹中的静态文件的访问,比如CSS、JS、图片等等。

我怎么才能访问它们呢?

EN

Stack Overflow用户

发布于 2009-12-15 16:24:10

冲突的原因似乎是因为,默认情况下,上下文根"/“将由org.apache.catalina.servlets.DefaultServlet处理。此servlet旨在处理对静态资源的请求。

如果您决定使用您自己的servlet来处理动态请求,那么顶级servlet还必须执行由catalina最初的"DefaultServlet“处理程序完成的所有任务。

如果您通读tomcat文档,就会发现True Apache (httpd)在处理静态内容方面比Apache Tomcat更好,因为它就是专门为此而构建的。我猜是因为Tomcat默认使用org.apache.catalina.servlets.DefaultServlet来处理静态请求。因为它们都包装在JVM中,而Tomcat是作为Servlet/JSP容器使用的,所以他们可能没有将该类作为超级优化的静态内容处理程序来编写。它就在那里。它可以完成工作。足够好了。

但这是处理静态内容的东西,它位于"/“。所以,如果你在那里放了任何东西,而那个东西不能处理静态请求,那么,你的静态资源就消失了。

我一直在到处寻找同样的答案,我得到的答案是“如果你不想让它这么做,就不要这么做”。

长话短说,您的配置正在用根本不是静态资源处理程序的东西替换默认的静态资源处理程序。您需要尝试不同的配置才能获得您想要的结果(我也是如此)。

票数 6
EN
查看全部 15 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/870150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档