在配置springmvc的前端控制器 DispatcherServlet的时候有三种配置方式:
- *.action,访问以.action结尾 由DispatcherServlet进行解析
- 第二种:/,所以访问的地址都由DispatcherServlet进行解析(但是经测试,jsp资源不会被这种方式拦截),这种配置方式一般用在restFUl,这种方式会拦截静态资源所以需要利用< mvc:resources / >标签进行静态资源解析,这个的配置一会后面讲
- 第三种:/*,使用这种配置会拦截所有的url,包括jsp,当handler返回modeAndView时最终要转发到一个jsp页面时, 这个jsp仍然会由DispatcherServlet解析jsp地址,不能根据jsp页面找到handler,会报错。
< mvc:resources />的配置:
<!-- 使用restful之后(前端控制器 配置为拦截 / )静态资源解析会去找映射器找handler(Controller的@RequestMapping) 这当然找不到 所以要配置静态资源解析 -->
<mvc:resources location="/" mapping="/**"/> <!-- 经实验 /* /**效果一样 都会去找子目录 个人感觉这个配置后后面的两个可以不配置 但是要放在最前面-->
<mvc:resources location="/js/" mapping="/js/**"/> <!-- 不加这句话页面会无法使用js -->
<mvc:resources location="/img/" mapping="/img/**"/> <!-- /img/*和 /img/**不一样 /**代表包含子url 使用/img/**时img/aa/1.jpg可以被访问到 而使用/img/*时 /img/bb/1.jpg访问不到 只能访问/img/1.png这样一级目录的 -->
/ 能够拦截静态资源 css js img …但不会拦截.jsp 需要在springmvc.xml中配置静态资源解析
/rest/* 静态资源可以直接放在web-app下,而且不会拦截静态资源,这种静态资源可以直接被访问