Spring 通常用来开发 web 应用。

1. Spring MVC 的请求响应机制

Spring 框架会将请求(request)在调度Servlet(DispatcherServlet)、处理器映射(HandlerMapping)、控制器(Controller)以及视图解析器(View resolver)之间流动。


Spring MVC 起步_应用程序

每当用户在 web 浏览器中点击链接或提交表单时,请求就开始了。从图中可以看出:

  • 第一步,请求离开浏览器,会带有用户请求内容的信息,
    • 至少需要包含请求的 URL;
    • 还有可能包含其他信息,提交的表单信息;
  • DispatcherServlet 是整个请求响应的调度中心;
    • 同大多数 Java web 一样,Spring MVC 所有的请求都会通过一个前端控制器(front controller)Servlet,其作用在于可以以一个单实例的 Servlet 将请求(request)委托给应用程序(application)的其他组件来进行实际的处理,
    • Spring MVC 中,DispatcherServlet 就是这样的前段控制器;
    • DispatcherServlet 的任务是将请求发送给 Spring MVC 控制器(controller),控制器是一个用于处理 request(handle request)的Spring 组件。
  • 控制器(Controller),在典型的应用程序中可能会有多个控制器,
    • DispatcherServlet 需要知道将请求发送给哪个控制器(什么样的request对应什么样的controller)
    • DispatcherServlet 便需要一个或多个 handler mapping,以确定将请求交给哪一个控制器;
    • 请求到了控制器,控制器会读取请求携带的信息(用户提交的信息)并耐心等待控制器处理这些信息;
    • 实际上,设计良好的控制器本身只处理很少甚至不处理工作,而是将业务逻辑委托给一个或多个服务器对象进行处理;
  • HandlerMapping,处理器映射会根据请求(request)所携带的 url 信息来决定将其交给哪一个控制器(controller)处理;
  • 模型(Model),控制器在完成逻辑处理之后,通常会产生一些信息, 这些信息需要返回给用户并在浏览器上显示,这些信息称为模型(model);