【spring-mvc】spring mvc中得/和/*的区别
转载 http://blog.csdn.net/u013412066/article/details/50581796
<mvc:annotation-driven/>
<!-- 使用默认的Servlet来响应静态文件 -->
<mvc:default-servlet-handler/>
就能放行静态文件,包括css,js等,但是如果配置了拦截器,拦截所有文件的话,那么此时css,js等文件在上述配置下还是会被拦截,还需要在web.xml中配置:
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.js</url-pattern>
<url-pattern>*.html</url-pattern>
<url-pattern>*.css</url-pattern>
<url-pattern>/css/*</url-pattern>
<url-pattern>/css/img/*</url-pattern>
<url-pattern>/css/images/*</url-pattern>
<url-pattern>/images/*</url-pattern>
<url-pattern>/fonts/*</url-pattern>
<url-pattern>/plugin/jqueryeasyui/themes/*</url-pattern>
<url-pattern>/plugin/jqueryeasyui/themes/default/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
并且可看出,缺省servlet的配置在springmvc相关配置的前面。
在没有拦截器的时候,为了防止css/js等除jsp以外的静态资源被拦截,
只需要在web.xml中像上述一样配置,或者,注意是或者,只要在Springmvc.xml的配置文件中配置:
<mvc:annotation-driven/>
<!-- 使用默认的Servlet来响应静态文件 -->
<mvc:default-servlet-handler/>
即可
)
<url-pattern>/*</url-pattern> 会匹配所有url:路径型的和后缀型的url(包括/login,*.jsp,*.js和*.html等)
url-pattern / 和 /* 的区别
总是现象就是:
spring用到forward("/WEB-INF/jsp/*.jsp")
而forward当然是又要经过web.xml的映射的,
然后,在URL匹配时,
<url-pattern>/</url-pattern> 不会匹配到*.jsp,不会进入spring的DispatcherServlet类
<url-pattern>/*</url-pattern> 会匹配*.jsp,导致进入spring的DispatcherServlet类,然后去寻找controller,接着找不到对应的controller所以报错。
试验了一下,改为 <url-pattern>/</url-pattern> 果然就不会报错了,唉,还以为不能解决,为此还换成了velocity作为视图,算了,继续用velocity吧,简单点。
总之,关于web.xml的url映射的小知识:
<url-pattern>/</url-pattern> 会匹配到/login这样的路径型url,不会匹配到模式为*.jsp这样的后缀型url
<url-pattern>/*</url-pattern> 会匹配所有url:路径型的和后缀型的url(包括/login,*.jsp,*.js和*.html等)
浙公网安备 33010602011771号