在web.xml中classpath和classpath*的区别。/与/*的区别

来源:互联网 发布:修罗场是什么意思网络 编辑:程序博客网 时间:2024/05/18 13:43
写spring的代码到现在,一直都很习惯性的拷贝web.xml中的内容,没怎么在意里面的内容,最近认真研究了下,很多东西都不是很理解,特别是classpath和classpath*的区别,研究了许久才搞明白,记录下备忘。

classpath 和 classpath* 区别
classpath:只会到你指定的class路径中查找找文件;
classpath*:不仅包含class路径,还包括jar文件中(class路径)进行查找.

举个简单的例子,在我的web.xml中是这么定义的:classpath*:META-INF/spring/application-context.xml
那么在META-INF/spring这个文件夹底下的所有application-context.xml都会被加载到上下文中,这些包括META-INF/spring文件夹底下的 application-context.xml,META-INF/spring的子文件夹的application-context.xml以及jar中的application-context.xml。

如果我在web.xml中定义的是:classpath:META-INF/spring/application-context.xml
那么只有META-INF/spring底下的application-context.xml会被加载到上下文中。

1、拦截"/",可以实现现在很流行的REST风格。很多互联网类型的应用很喜欢这种风格的URL。为了实现REST风格,拦截了所有的请求。同时对*.js,*.jpg等静态文件的访问也就被拦截了。2、拦截/*,这是一个错误的方式,请求可以走到Action中,但是返回的内容,如返回的jsp还会再次被拦截,这样导致404错误,即访问不到jsp。

0 0
原创粉丝点击