问一个springmvc拦截css样式 mvc加载css问题

没有更多推荐了,
不良信息举报
举报内容:
SpringMVC如何引入css文件
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!最近使用springmvc+bootstrap搭建框架,过程真的是苦不堪言啊,先说遇到的问题吧:
使用myeclipse6.5 的话,在处理静态资源访问的时候基本没遇到什么问题,所以也就以为没问题呢,后来换了myeclipse8.5或者以上的IDE时才发现静态资源的访问出现了问题。好了,前提说完了,那下面列举问题情况吧。
在web.xml中配置springmvc如下:
&description&springMVCservlet&/description&
&servlet-name&springMvc&/servlet-name&
&servlet-class&
org.springframework.web.servlet.DispatcherServlet
&/servlet-class&
&init-param&
&description&springMVC 配置文件&/description&
&param-name&contextConfigLocation&/param-name&
&param-value&classpath:configs/spring-mvc.xml&/param-value&
&/init-param&
&load-on-startup&1&/load-on-startup&
&/servlet&
&!-- 配置spring mvc mapping
&servlet-mapping&
&servlet-name&springMvc&/servlet-name&
&url-pattern&*.do&/url-pattern&
&/servlet-mapping&
&!--tomcat 默认的servlet
&servlet-mapping&
&servlet-name&default&/servlet-name&
&url-pattern&*.css&/url-pattern&
&url-pattern&*.js&/url-pattern&
&url-pattern&*.json&/url-pattern&
&url-pattern&*.gif&/url-pattern&
&url-pattern&*.png&/url-pattern&
&url-pattern&*.jpg&/url-pattern&
&url-pattern&*.ico&/url-pattern&
&url-pattern&*.doc&/url-pattern&
&url-pattern&*.docx&/url-pattern&
&url-pattern&*.xls&/url-pattern&
&url-pattern&*.xlsx&/url-pattern&
&url-pattern&*.txt&/url-pattern&
&/servlet-mapping&
关键的配置就在上面了。对应的标了1处和2处,下面就直接说问题吧(正常的情况就不说了),
1、使用myeclipse6.5:2处有没有根本没影响。
使用myeclipse8.6或者以上版本,2处对应的url没有的话就访问不到,比如访问css文件,你就要配置对应的url。
2、经过我的实验,对于myeclipse6.5,只要在1处配置了url拦截为".XXX"而不是"/",2处的配置存不存在就可以访问静态资源,而对于myeclipse8.6或者以上版本的话,即使1处url配置了拦截为".XXX",如果2处配置了的话,想要访问某静态资源就要在2处配置对应的url 如&url-pattern&*.txt&/url-pattern&,但是,如果2处没有配置的话,就可以访问所有的静态资源。也就是说,如果2处没配置就没什么问题,如果配置了,就需要配置对应静态资源的url
浏览: 799 次
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'博客分类:
当你使用SpringMVC来做web开发时,经常会遇到如何配置静态资源加载的问题。
问题产生的根源,看如下web.xml中的配置:
&servlet-name&springServlet&/servlet-name&
&servlet-class&org.springframework.web.servlet.DispatcherServlet&/servlet-class&
&init-param&
&param-name&contextConfigLocation&/param-name&
&param-value&/WEB-INF/spring-mvc.xml&/param-value&
&/init-param&
&load-on-startup&1&/load-on-startup&
&/servlet&
&servlet-mapping&
&servlet-name&springServlet&/servlet-name&
&url-pattern&/&/url-pattern&
&/servlet-mapping&
上面的Servlet配置会拦截你所有的请求,包括静态的资源*.css, *.html, *.htm, *.jpg, *.js, *.png ... 等等。
其实这些静态资源被拦截是没有意义的,那么如何避免这些不希望被拦截的资源被拦截呢?
主要有两种方式:
1、如果你的静态资源打包之后再项目的根目录下---注意这里一定是根目录,在WEB-INF目录下是不行的,即在你的项目的Webapp 目录下,那么可以采用配置:
&mvc:default-servlet-handler/&
的方式到你的 spring-servlet.xml 中。
然后在你的web.xml 加入如下配置:
&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&*.ico&/url-pattern&
&/servlet-mapping&
&servlet-mapping&
&servlet-name&default&/servlet-name&
&url-pattern&*.gif&/url-pattern&
&/servlet-mapping&
&servlet-mapping&
&servlet-name&default&/servlet-name&
&url-pattern&*.jpg&/url-pattern&
&/servlet-mapping&
&servlet-mapping&
&servlet-name&default&/servlet-name&
&url-pattern&*.png&/url-pattern&
&/servlet-mapping&
&servlet-mapping&
&servlet-name&default&/servlet-name&
&url-pattern&*.bmp&/url-pattern&
&/servlet-mapping&
&servlet-mapping&
&servlet-name&default&/servlet-name&
&url-pattern&*.jpeg&/url-pattern&
&/servlet-mapping&
&servlet-mapping&
&servlet-name&default&/servlet-name&
&url-pattern&*.swf&/url-pattern&
&/servlet-mapping&
&servlet-mapping&
&servlet-name&default&/servlet-name&
&url-pattern&*.flv&/url-pattern&
&/servlet-mapping&
&servlet-mapping&
&servlet-name&default&/servlet-name&
&url-pattern&*.xml&/url-pattern&
&/servlet-mapping&
&servlet-mapping&
&servlet-name&default&/servlet-name&
&url-pattern&*.txt&/url-pattern&
&/servlet-mapping&
&servlet-mapping&
&servlet-name&default&/servlet-name&
&url-pattern&*.htm&/url-pattern&
&/servlet-mapping&
&servlet-mapping&
&servlet-name&default&/servlet-name&
&url-pattern&*.html&/url-pattern&
&/servlet-mapping&
然后当你在访问静态资源是就不会被spring Servlet拦截了。
2. 采用 配置 如下代码到你的spring-servlet.xml 文件中的方式:
&mvc:resources mapping="/html/**" location="/WEB-INF/views/mqcloud/monitor/"/&
注意,这种方式可以指定你的静态资源在你项目中的任何位置,包括在jar 里面,因为 配置中的 location 可以配置成 classpath:/com/ctx/....
并且该方式不会像 第一中方式那样 要求静态资源文件放置到应用的根目录下面的。
注意:当两种方式在你的项目里面都配置了,那么会出现访问静态资源失败的问题,因此最好不要在项目里面同时配置这两种方式。
cuitongxin
浏览: 7817 次
来自: 杭州
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'我面试时面试官问了我一个关于spring mvc的问题
1.spring mvc
中,前端能传什么数据类型到后端controller
可以自定义数据类型吗?
2.spring mvc如何把json数据传到后端生成对象?
大体就是这个意思,具体的记不清了,哪位大神解答一下
非常感谢!
写下你的评论...
听面试官说还有个表单也可以传到后端
估计是将表单序列化传到后端的,封装成一个json对象
有道理,你在工作吗?
写下你的评论...
Copyright (C) 2018 imooc.com All Rights Reserved | 京ICP备 号-11  昨天,在写一个新需求的时候,因为没有前端同事的对接,无奈只有自己写css,js放到ssm结构的后台项目中,因为之前开发都是把前端文件放在一个专门的服务器上,一直没有关注服务端项目读取静态资源的问题,运行部署以后,项目死活读取不到我在webapp目录下放置的css,js文件,经过一番探索发现了问题.
  原因是这样的,SpringMVC项目因为会在web.xml中配置一个全局的拦截器
&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/web-context.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&
  DispatcherServlet会拦截所有请求,包括对静态资源css,js的请求,它会将其当做一个正常的请求拦截掉,解决方法是在springmvc的配置文件,也就是上面的web-context.xml中添加&mvc:resources/&:
&!--静态资源访问--&
&mvc:resources location="/js/" mapping="/js/**"/&
&mvc:resources location="/css/" mapping="/css/**"/&
  &mvc:resources/&指定静态资源的存放位置,指定目录下的文件不会再受DispatcherServlet的拦截.
阅读(...) 评论()

我要回帖

更多关于 springmvc css失效 的文章

 

随机推荐