今天的内容相对就比较少了 主要是讲一下今天学习遇到的很好玩的事情,
下图是配置我们上篇讲到的控制器,DispatcherServlet的web.xml中的配置
DispatcherServlet这个控制器本质上呢他是一个Serlvet,所以说我们可以在web.xml中配置它, 在第二个箭头指向的
<servlet-mapping>
<servlet-name>springmvcservlet-name>
<url-pattern>/url-pattern>
servlet-mapping>
/中的这个/ 就是我说的十分有趣的点,这个代表的DispatcherServlet匹配范围, /*:代表匹配所选定的目录下所有的请求包括静态资源如 html,css,jsp等 /:代表匹配所有选定目录下的所有请求不包括静态资源
当把所有的请求交给DispatcherServlet来处理的时候, 没有被 @RequestMapping() 映射的资源就无法成功响应,比如静态资源,jsp,html等文件 我们是不会去写@RequestMapping("/.jsp")或是@RequestMapping("/.html")这样的映射 所以当我们在/使用的是 / 的话就会导致我们的所有静态资源无法被访问 报出404等路径问题的异常状态码 所以一般我们在使用过滤器等需要覆盖全部请求的组件中使用 / 来匹配全部 流程图:
经过阅读一些博客和讨论得知,在使用 / 来处理请求的时候 Servlet执行是有排序的,如下:
别着急!Spring他都想到了! 在SpringMVC.xml中mvc支持有这么两个好用的功能
这个功能有什么作用呢? 他将DispatcherServlet处理的请求转发给tomcat的DefaultServlet来处理,解决了静态请求的问题
这个想必大家也猜到了, 这个功能用来处理使用@@RequestMapping映射的请求
将以上二者搭配使用就可以达到让程序有效处理全部请求了 详细执行图:
今天的记录博客就到这里啦,晚安各位还在努力奋斗的小伙伴们