我正在构建一个Spring应用程序,frontController servlet被映射为"/“来拦截所有请求,我将能够服务于静态内容(.js、.css、.png.)而不是春天。我的应用程序结构是
-webapp/
styles/
images/
WEB-INF/
views/
默认情况下,由于frontController被映射到我的应用程序的上下文根上,它处理所有请求,但不提供任何静态资源。静态资源的mvc配置如下。
<mvc:resources mapping="/resources/**" location="/"/>
该页的代码是:
<img src="resources/images/logo.png" />
我需要配置Tomcat来为静态资源服务,而不需要spring交互。
有什么建议吗?
发布于 2010-09-18 23:52:15
您可以重新映射tomcats的默认servlet (它处理静态内容)。
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/images/*</url-pattern>
</servlet-mapping>
发布于 2010-09-18 23:38:59
看一看这个邮件列表线程,看看它是否能满足您的需要。
发布于 2012-07-13 20:56:02
另一个潜在的解决方案--只需在SpringDispatcherServlet.xml (弹簧文档)中添加以下内容
<mvc:default-servlet-handler/>
此标记允许将DispatcherServlet映射到"/“(从而覆盖容器的默认Servlet的映射),同时仍然允许容器的默认Servlet处理静态资源请求。它将DefaultServletHttpRequestHandler配置为"/**“的URL映射(给定最低优先级顺序)。此处理程序将将所有请求转发到默认Servlet。
专业人士(与@nos的解决方案相比)
缺点
此外,不管您喜欢哪种解决方案,我建议在您的web.xml中添加以下内容,以防止目录列表(如URL/图像)
<servlet>
<servlet-name>default</servlet-name>
<init-param>
<param-name>dirAllowed</param-name>
<param-value>false</param-value>
</init-param>
</servlet>
https://stackoverflow.com/questions/3743932
复制相似问题