spring MVC设置不拦截静态资源
2018-01-20 10:52
316 查看
问题产生:
因为我们在web.xml中写了 拦截所有请求,当然包括了静态资源,所以页面需要引用css或js的话,该请求也会被拦截,例如:在style.css中写一个简单样式,加个背景颜色
body{ background-color: antiquewhite; }
然后在index.jsp页面引用该样式:<link rel="stylesheet" href="/css/style.css">
再一次运行项目,会看到并没有样式,F12可以看到在调用style.css的时候报了404错误,这是因为被DispatcherServlet拦截了
解决办法:
方案一:拦截器中增加针对静态资源不进行过滤(涉及spring-mvc.xml)注意:需引入mvc命名空间
<!-- 添加注解驱动 --> <mvc:annotation-driven/> <!-- 通过mvc:resources设置静态资源,这样servlet就会处理这些静态资源,而不通过控制器 设置不过滤内容,比如:css,js,img 等资源文件 location指的是本地的真是路径,mapping指的是映射到的虚拟路径。 --> <mvc:resources mapping="/css/**" location="/css/"/>
方案二:使用默认的servlet处理静态资源(涉及spring-mvc.xml,web.xml)
在spring-mvc.xml中添加:<!--启用默认Servlet--> <mvc:default-servlet-handler/>
在web.xml中添加:
<!--增加对静态资源的处理,当前的设置必须在Spring的Dispatcher的前面--> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.css</url-pattern> <url-pattern>/css/*</url-pattern> </servlet-mapping>
方案三:修改spring的全局拦截设置为*.do的拦截(涉及web.xml)
<!-- 拦截所有请求 --> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <!--<url-pattern>/</url-pattern>--> <url-pattern>*.do</url-pattern> </servlet-mapping>
这时,我们浏览器的所有访问路径就要变成:http://localhost:8080/xxx/xxx.do
比较总结:
第一种方案配置比较臃肿,多个拦截器时增加文件行数,不推荐使用第二种方案使用默认的Servlet进行资源文件的访问,Spring拦截所有请求,然后再将资源文件交由默认的Sevlet进行处理,性能上少有损耗
第三种方案Spring只是处理以'.do'结尾的访问,性能上更加高效,但是再访问路径上必须都以'.do'结尾,URL不太文雅
综上所述,推荐使用第二和第三中方案
相关文章推荐
- Spring mvc静态文件设置不拦截
- Spring MVC 框架不拦截静态资源的配置
- Spring Mvc Web 配置拦截规则与访问静态资源 (三)
- Spring Mvc Web 配置拦截规则与访问静态资源 (三)
- Spring MVC 自学杂记(七) -- 去掉静态资源的拦截
- 关于spring mvc不拦截静态资源的配置
- SpringMVC中设置静态资源不被拦截的问题
- Spring MVC静态资源拦截(No mapping found for HTTP request with URI in DispatcherServlet with name ' ')问题
- 【转】Spring Mvc Web 配置拦截规则与访问静态资源
- 解决Spring MVC DispatcherServlet拦截“/”时,无法访问静态资源的问题
- Spring MVC静态资源拦截(No mapping found for HTTP request with URI in DispatcherServlet with name ' ')问题
- spring mvc静态资源拦截问题
- spring mvc 不拦截静态资源
- 详解SpringMVC中设置静态资源不被拦截的问题
- springMVC设置不拦截静态资源
- spring mvc静态资源拦截问题
- 定义不被SpringMVC拦截的静态资源(html, js, css等文件),通用方法,不需要每个目录都设置
- Spring MVC静态资源处理
- Spring MVC 静态资源的访问
- spring mvc 中对静态资源的访问配置