Ric*_*oll 59 configuration spring spring-mvc
如果我映射我的spring应用程序来处理所有传入的请求('/*'),那么对静态内容的请求将返回404.例如,对"myhost.com/css/global.css"的请求将返回404,即使资源存在,因为Spring拦截了请求.
另一种方法是将SpringMVC映射到子目录(例如'/ home/'),但在这种情况下,您必须在应用程序的所有链接中传递此目录.有没有办法将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>
Run Code Online (Sandbox Code Playgroud)
Idealy我希望映射类似于以下内容:
<servlet-mapping>
<servlet-name>springApp</servlet-name>
<url-pattern>/*</url-pattern>
<exclude>/css/*,/js/*</exclude>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
这类事可能吗?
atr*_*ain 56
注意:此答案仅适用于Spring 3.0.4+
(顺便说一下,这个问题也在这里处理过:Spring使用mvc:resources提供静态内容,xsd无效)
查看Spring subversion示例存储库中的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/" />
Run Code Online (Sandbox Code Playgroud)
小智 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 -->
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.
如果你只想用Spring做这个,它可能会有点乱:
完成所有操作后,所有无法映射到控制器的请求都将转发给您HttpRequestHandler并按"原样"提供.
| 归档时间: |
|
| 查看次数: |
54456 次 |
| 最近记录: |