Servlet路径匹配以及静态资源路径访问

问题由来,为什么SpringMvc中的DispatcherServlet中可以用/,也可以用/*, 这两个有什么区别。

先说结论:“/*”的优先级比扩展名匹配(如.jsp)高,而“/” 的优先级比扩展名匹配(如.jsp)低。

我们知道一个路径(url-pattern)只能匹配一个servlet,不像filter,只要能匹配的路径都可以过滤。
**那就说下URL匹配的优先级,从高到低:
1.精确匹配:即exact.do,明确的路径。
2.通配符匹配:即”/*”,
3.扩展名匹配:.jsp, .do之类的
4.默认的servlet,也即是“/”. defaultwapper。**

那为什么我们没有配置“.jsp”,为什么会这个呢,那是因为Tomcat会自动加入扩展名“.jsp”导致的。
这就是为什么我们在配置DispatcherServlet中用“/”,可以访问jsp,而不能访问其他的静态资源的原因如“.html”,“.js”之类的。

那么问题来了,我们如何访问静态资源:
1.激活Tomcat的defaultServlet来处理静态文件

<servlet-mapping>   
<servlet-name>defaultservlet-name>  
<url-pattern>文件路径可以自己配置(如*.jpg)url-pattern>     
servlet-mapping> 

这个处理不会进入到Spring, 所以他的效率是最高的

2.用Spring中的配置文件


<mvc:resources mapping="/images/**" location="/images/" />  

也可以对classpath路径下的静态资源进行访问
这里写链接内容

你可能感兴趣的:(SpringMvc)