spring mvc 不拦截静态资源
2017-05-27 14:46
337 查看
当我们在web.xml配置spring mvc 的前端控制器(DispatcherServlet)时,经常会配置"/"来拦截所有请求,但是前端的css,js,html等文件都会被拦截点,这并不是我们所期望,和看到的,下面我们介绍三种方法解决访问静态资源问题。
在上面可以配置多项,当然这些应该写在DispatcherServlet的前面,让 defaultServlet先拦截,这个就不会进入spring
mvc 了 。
方案二: 配置资源映射 mvc:resources
<mvc:resources mapping="/css/**" location="/css/" />
<mvc:resources mapping="/js/**" location="/js/" />
<mvc:resources mapping="/html/**" location="/html/" />使用<mvc:resources/>元素,把mapping的URI注册到SimpleUrlHandlerMapping的urlMap中,key为mapping的URI
pattern值,而value为ResourceHttpRequestHandler,这样就巧妙的把对静态资源的访问由HandlerMapping转到ResourceHttpRequestHandler处理并返回,所以就支持classpath目录,jar包内静态资源的访问.另外需要注意的一点是,不要对SimpleUrlHandlerMapping设置defaultHandler.因为对static uri的defaultHandler就是ResourceHttpRequestHandler,否则无法处理static
resources request
方案三 ,使用<mvc:default-servlet-handler/><mvc:default-servlet-handler/> 会把"/**"
url,注册到SimpleUrlHandlerMapping的urlMap中,把对静态资源的访问由HandlerMapping转到org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler处理并返回.DefaultServletHttpRequestHandler使用就是各个Servlet容器自己的默认Servlet.
<servlet> <servlet-name>SpringMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>SpringMVC</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>方案一:激活Tomcat的defaultServlet来处理静态文件
<servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.html</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>*.css</url-pattern> </servlet-mapping>
在上面可以配置多项,当然这些应该写在DispatcherServlet的前面,让 defaultServlet先拦截,这个就不会进入spring
mvc 了 。
方案二: 配置资源映射 mvc:resources
<mvc:resources mapping="/css/**" location="/css/" />
<mvc:resources mapping="/js/**" location="/js/" />
<mvc:resources mapping="/html/**" location="/html/" />使用<mvc:resources/>元素,把mapping的URI注册到SimpleUrlHandlerMapping的urlMap中,key为mapping的URI
pattern值,而value为ResourceHttpRequestHandler,这样就巧妙的把对静态资源的访问由HandlerMapping转到ResourceHttpRequestHandler处理并返回,所以就支持classpath目录,jar包内静态资源的访问.另外需要注意的一点是,不要对SimpleUrlHandlerMapping设置defaultHandler.因为对static uri的defaultHandler就是ResourceHttpRequestHandler,否则无法处理static
resources request
方案三 ,使用<mvc:default-servlet-handler/><mvc:default-servlet-handler/> 会把"/**"
url,注册到SimpleUrlHandlerMapping的urlMap中,把对静态资源的访问由HandlerMapping转到org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler处理并返回.DefaultServletHttpRequestHandler使用就是各个Servlet容器自己的默认Servlet.
相关文章推荐
- 关于spring mvc不拦截静态资源的配置
- Spring Mvc Web 配置拦截规则与访问静态资源 (三)
- Spring Mvc Web 配置拦截规则与访问静态资源 (三)
- 【转】Spring Mvc Web 配置拦截规则与访问静态资源
- Spring MVC 自学杂记(七) -- 去掉静态资源的拦截
- Spring MVC 框架不拦截静态资源的配置
- 解决Spring MVC DispatcherServlet拦截“/”时,无法访问静态资源的问题
- spring MVC设置不拦截静态资源
- Spring MVC静态资源拦截(No mapping found for HTTP request with URI in DispatcherServlet with name ' ')问题
- Spring MVC静态资源拦截(No mapping found for HTTP request with URI in DispatcherServlet with name ' ')问题
- spring mvc静态资源拦截问题
- spring mvc静态资源拦截问题
- 关于spring mvc 中的静态资源被过滤
- SSM框架 Spring MVC对静态资源的访问 图片等
- Spring MVC静态资源处理
- 当配置 DispatcherServlet拦截“/”,SpringMVC访问静态资源的三种方式
- 【Spring学习笔记-MVC-14】Spring MVC对静态资源的访问
- SpringMVC 拦截器不拦截静态资源的三种处理方式方法
- Spring MVC 静态资源访问配置
- Spring MVC静态资源处理