SpringMVC-请求过程
- 请求离开浏览器。它会带有用户请求内容的信息,至少包含请求的URL(还可能有其他信息,例如用户提交的表单信息)
- 到达前端控制器 -
DispatcherServlet
。与大多数Java Web框架一样,SpringMVC 所有的请求都会通过一个前端控制器Servlet(前端控制器是常用的Web应用程序模式)。这个单例的Servlet将请求委托给应用程序的其他组件来执行实际的处理。很显然,在SpringMVC中DispatcherServlet
就是前端控制器 - 查询处理映射器。DispatcherServlet的任务是将请求发送给SpringMVC控制器,但是DispatcherServlet需要知道应该将请求发给哪个控制器,所以它会去查询一个或者多个处理映射器(处理映射器会根据请求所携带的URL信息来进行决策)来确认请求的下一站在哪里
- 到达控制器。选择了控制器之后,DispatcherServlet会将请求发送给选中的控制器,控制器会解析请求并进行业务处理(通畅控制器会将处理的业务逻辑委托给多个服务对象来进行处理)
- 模型及逻辑视图。控制器处理完逻辑后,通常会产生一些信息,这些信息需要返回给用户,这些信息就是模型(Model)。不过我们通常会对原始信息进行格式化处理,例如HTML,所以信息需要发送给一个视图(View)例如JSP。控制器所做的最后一件事就是将模型打包,并标示出用于渲染输出的视图名称,然后将请求连同模型和视图想耦合发送回DispatcherServlet
- 视图解析。控制器不会与特定的视图耦合,其传递给DispatcherServlet的视图名称并不直接表示某个特定的JSP,而只是一个逻辑名称(这个逻辑名称将用来查找真正的视图),这里DispatcherServlet就是使用的视图解析器来将逻辑视图名匹配为一个特定视图实现的
- 视图实现。现在DispatcherServlet已经知道了由哪个视图渲染结果,最后只需要交付数据模型
- 响应用户。