您的位置:首页 > 编程语言 > Java开发

Spring 源码分析(四) ——MVC(四)核心逻辑

2016-03-28 20:31 459 查看

DispatcherServlet 的设计

Spring MVC 的本质其实就是一个 Servlet,而上一篇提到了 DispatcherServlet,我们知道 Spring MVC 真正的逻辑其实是在 DispatcherServlet 中进行的,而 DispatcherServlet 恰恰就是实现 Servlet 接口的实现类。

下面是 DispatcherServlet 的继承图:



其实,DispatcherServlet 的设计大致就是 Spring MVC 整体结构了,下面是他的主要逻辑部分:



我们在前面的Spring MVC 核心架构方面已经有所提及,下面我们就着重的介绍。

Sevrlet 补充说明

servlet 是一个 Java 编写的程序,此程序是基于开篇介绍的 HTTP 协议的,在服务器端运行的(如:Tomcat),是按照 servlet 规范编写的一个 Java 类。主要是处理客户端的请求并将其结果发送到客户端。servlet 的生命周期是由 servlet 容器来控制的,它可以分为 3 个阶段:初始化阶段、运行阶段和销毁阶段。

初始化阶段:
servlet 容器加载 servlet 类,把 servlet 类的 .class 文件中的数据读到内存中。
servlet 容器创建一个 servletConfig 对象。servletConfig 对象包含了 servletConfig 的初始化配置信息。
servletConfig 容器创建一个 servlet 对象。
servletConfig 容器调用 servlet 对象的 ini 方法进行初始化。

运行阶段:

当 servlet 容器接收到一个请求时,servlet 容器会针对这个请求创建 servletRequest 和 ServletResponse 对象,然后调用 service 方法。并把这两个参数传递给 servlet 方法。servlet 方法通过 servletRequest 对象获得请求的信息。并处理该请求。再通过 servletResponse 对象生成这个请求的响应结果。然后销毁 servletRequest 和 servletResponse 对象。我们不管这个请求时 post 提交的还是 get 提交的,最终这个请求都会由 servlet 方法来处理。

销毁阶段:
当 Web 应用被终止时,servlet 容器会先调用 servlet 对象的 destroy 方法,然后再销毁 servlet 对象,同时也会销毁与 servlet 对象相关联的 servletConfig 对象。我们可以在 destroy 方法的实现中,释放 servlet 所占用的资源,如关闭数据库连接,关闭文件输入输出流等。

servlet 的框架是由两个 Java 包组成的:javax.servlet 和 javax.servlet.http。在 javax.servlet 包中定义了所有的 servlet 类都必须实现或扩展的通用接口和类,在 javax.servlet.http 包中定义了采用 HTTP 通信协议的 HttpServlet 类。
servlet 被设计成请求驱动,servlet 的请求可能包含多个数据项,当 Web 容器接收到某个 servlet 请求时,servlet 把请求封装成一个 HttpServletRequest 对象,然后把对象传给 servlet 的对应服务方法。
HTTP 的请求方式包括 delete、get、options、post、put 和 trace,在 HttpServlet 类中分别提供了相应的服务方法,它们是 doDelete(),doGet()、doOptions()、doPost()、doPut()和 doTrace()。

——水门(2016年3月写于武汉)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring