今天,想起SpringMVC的一些注意事项,在引用js文件的时候,有多种方式而已进行引用,下面我来介绍下我了解到的:
我们在写web.xml配置文件的时候,经常会考虑url-parent的使用,它可以是/也可以是/*还可以是.do,此时我来回顾一下url-parent的配置模式
①/xxx:完全匹配/xxx的路径
②/xxx/*:匹配以/xxx开头的路径的所有,必须包含/xxx
③/*:匹配/下面的所有路径,请求可以进入到action或者controller,但是转发jsp时再次被拦截, 不能访问jsp页面
④.xx:匹配以xx结尾的路径,必须包含.xx,但不会影响访问静态资源
⑤/:默认模式,未被匹配的路径都会进入servlet,但是还是不能访问静态文件
一:因此,如果我们一开始就采用了/的方式,那么就需要补上配置来让静态文件可访问了,下面介绍三种方式:
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.css</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>*.js</url-pattern>
</servlet-mapping>
A:在web.xml中添加好配置后,在jsp页面就可以引用这些静态资源了
<script type="text/javascript" src="static/js/1.js"></script>(这种方法不能访问WEB-INF目录下的静态资源,也就是js目录必须是web根(可能是webapp,webContent等)目录下,否则是不能引用的;如果放在WEB-INF目录下,即使你使用<c:url value=“/WEB-INF/js/jquery.js”>也是会出现404错误的)
B:在相应的 -servlet.xml中添加spring配置<mvc:default-serlvet-handler>
如:<mvc:default-servlet-handler/>
这种方法只需要添加一行代码,在jsp页面中引用时和上面那种一样,同样也不能引用WEB-INF下的资源。
C:使用spring 3.0.4的新特性,在相应的 -servlet.xml中添加配置<mvc:resource>
如:3.1 <mvc:resources location="/js/" mapping="/js/**" />
或 3.2 <mvc:resources location="/WEB-INF/js/" mapping="/js/**" />
这种方法我写了两个配置,不同的地方只是location的值,一个是“/js/”,一个是“/WEB-INF/js/”;两种都可以,根据你自己的目录结构来引用。这就说明使用这种方式可以引用WEB-INF目录下的静态资源;这里的mapping属性的值用了ant的通配符方式,"/js/**"(两个"*")指location的值所表示的目录以及所有子目录;但是在jsp页面中引用时需要注意:
二:但是其实简单的做法就是,我们并不需要这么复杂,其实就是把所有需要springmvc dispatchservlet的地方,设置成.do就可以了,这样静态文件还是可以继续访问的。
<servlet-name>spring-mvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup><!-- 大于等于0启动时加载此框架 -->
</servlet>
<servlet-mapping>
<servlet-name>spring-mvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
以上就是我今天对SpringMVCy引入js等静态文件的一些思考,还有待加强,温故知新!!!