DispatcherServlet

你真的理解SpringMVC DispatcherServlet中的映射了吗?

故事扮演 提交于 2019-12-02 09:47:10
一、Request URL 与 Servlet url-pattern匹配顺序与关系 当一个请求发送到 servlet 容器(服务器)的时候,容器先会将请求的 url 减去当前应用上下文的路径,就是 scheme://ip:port/context 的 url 作为 servlet 的映射 url ,访问的是 http://localhost:8080/test/index.html ,我的应用上下文( context )是 test ,容器会将 http://localhost:8080/test 去掉,剩下的 /index.html 部分拿来和 servlet 的 url-pattern 进行匹配。 1. 精确路径匹配 ( 完全匹配 ) 以 ”/” 开始的,不包含通配符 * (不以通配符结尾)的,例如: <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>/index.html</url-pattern> </servlet-mapping> 2. 最长路径匹配(路径匹配) 以 ”/” 开始的,并且以通配符 * 结尾的(通配符只能在结尾,不能放中间。例如, /index/te*/index.html 这样的) <servlet-mapping> <servlet-name>default<

【原创】遨游springmvc之DispatcherServlet

蹲街弑〆低调 提交于 2019-11-27 03:04:19
1.机制 Dispatcher是springmvc 前端控制器模式 的实现,它提供一个集中的请求处理机制,所有的请求都将由一个单一的处理程序处理,Dispatcher负责请求的派遣,它与spring ioc完美继承,从而可以拥有spring的所有好处。 2.原理图 图2.1 原理图 通过原理图我们可知我们在用springmvc一直在强调的,它是由两个容器组成,即非web层容器和web层容器,一般配置在我们的spring.xml和springmvc.xml,非web层组件一般是整个应用都共享的,如经常用到的dao层,service层等,而DispatcherServlet则初始化springmvc上下文加载的bean如Controller、HandlerMapping、HandlerAdapter等,它只加载web层的bean 3.源代码解剖 3.1 依赖关系 直接上图(实线是继承extend、虚线是实现(implement)) 3.2 源码解刨 在初始化web项目的时候,首先需要初始化servlet(HttpServlet),而servlet的初始化过程则转交给了HttpServletBean的init方法 public final void init() throws ServletException { if (logger.isDebugEnabled()) { logger