如果我将spring应用程序映射为处理所有传入请求('/*'),则对静态内容的请求将返回404。例如,对"myhost.com/css/global.css“的请求将返回404,即使Spring截获该请求时资源已经存在。
另一种方法是将主目录映射到一个子目录(例如‘/ SpringMVC /’),但在这种情况下,必须在应用程序内的所有链接中传递该目录。有没有办法将SpringMVC映射到'/‘并从处理中排除一组目录?
我当前的web.xml配置是:
<servlet>
<servlet-name>springApp</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springApp</servlet-name>
<url-pattern>/home/*</url-pattern>
</servlet-mapping>
理想情况下,我希望映射如下所示:
<servlet-mapping>
<servlet-name>springApp</servlet-name>
<url-pattern>/*</url-pattern>
<exclude>/css/*,/js/*</exclude>
</servlet-mapping>
这种事情有可能发生吗?
发布于 2009-08-05 19:40:17
如果你只想用Spring来做这件事,这是可能的,但有点麻烦:
一旦所有这些都完成了,所有无法映射到您的控制器的请求都将被转发到您的HttpRequestHandler
,并“按原样”提供服务。
发布于 2010-12-30 01:26:48
Spring注意:此答案仅适用于 3.0.4+
(顺便说一句,这个问题也在这里处理过:Spring serving static content with mvc:resources, invalid xsd)
查看Spring subversion samples repository中的Spring mvc-showcase项目。它准确地显示了您想要做什么,也就是说,您可以描述不会被DisapatcherServlet处理的静态资源。请参见文件/mvc-showcase/src/main/webapp/WEB-INF/spring/appServlet/servlet-context.xml
。下面是我如何处理这些排除的一小段代码,其中JS、CSS和图像位于应用程序上下文根目录中( MVC名称空间映射到mvc
<!-- resources exclusions from servlet mapping -->
<mvc:resources mapping="/css/**" location="/css/" />
<mvc:resources mapping="/images/**" location="/images/" />
<mvc:resources mapping="/js/**" location="/js/" />
发布于 2009-08-09 21:11:27
我通过“默认”servlet提供静态内容来解决这个问题,这个servlet只向客户端提供内容。所以我的web.xml看起来像这样:
<servlet>
<servlet-name>MyApp</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyApp</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping> <!-- The 'dynamic' content -->
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.css</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.js</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.jpg</url-pattern>
</servlet-mapping> <!-- The 'static' content -->
希望这能有所帮助。
https://stackoverflow.com/questions/1234298
复制相似问题