大家都知道对于spring mvc框架,最核心的就是DispatcherServlet。
那么DispatcherServlet到底能干些什么活呢,其实DispatcherServlet就是负责协调和组织不同组件以完成请求处理并返回响应的工作。
spring mvc 处理请求的过程简单如下:
1.一个请求过来,首先去匹配DispatcherServlet的请求映射路径(web.xml中可配置,如:
<servlet>
<servlet-name>springServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:/applicationContext-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
),如果匹配成功,则web容器将该请求转交给DispatcherServlet进行处理;
2.DispatcherServlet接收到请求后,将根据请求信息及HandlerMapping的配置找到处理请求的Handler;
3.通过HandlerAdapter对该Handler进行封装,再以统一的适配器接口调用Hander;
4.Handler完成业务逻辑的处理后,返回一个ModelAndView(包含视图逻辑名和模型数据信息)给DispatcherServlet;
5.DispatcherServlet借助ViewResoler完成逻辑视图名到真实视图对象的解析;
6.得到真实视图对象View后,DispatcherServlet使用这个View对ModerAndView中的模型数据进行视图渲染。
总结:可以发现整个过程DispatcherServlet担任了协调和组织不同组件,完成请求处理并返回响应的工作。