我已经将Spring MVC dispatcher映射为/*上的全局前端控制器servlet。
<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、图片等等。
我怎么才能访问它们呢?
发布于 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容器使用的,所以他们可能没有将该类作为超级优化的静态内容处理程序来编写。它就在那里。它可以完成工作。足够好了。
但这是处理静态内容的东西,它位于"/“。所以,如果你在那里放了任何东西,而那个东西不能处理静态请求,那么,你的静态资源就消失了。
我一直在到处寻找同样的答案,我得到的答案是“如果你不想让它这么做,就不要这么做”。
长话短说,您的配置正在用根本不是静态资源处理程序的东西替换默认的静态资源处理程序。您需要尝试不同的配置才能获得您想要的结果(我也是如此)。
https://stackoverflow.com/questions/870150
复制相似问题