网站大量收购闲置独家精品文档,联系QQ:2885784924

《Spring_MVC_基础(三)》.pdf

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《Spring_MVC_基础(三)》.pdf

在上一篇文章中,我们给出了构成 SpringMVC 应用程序的三要素以及三要素的设 计过程。让我们来归纳一下整个设计过程中的一些要点:  SpringMVC 将 Http 处理流程抽象为一个又一个处理单元  SpringMVC 定义了一系列组件(接口)与所有的处理单元对应起来  SpringMVC 由DispatcherServlet 贯穿始终,并将所有的组件串联起来 在整个过程中,组件和 DispatcherServlet 总是维持着一个相互支撑的关系:  DispatcherServlet —— 串联起整个逻辑主线,是整个框架的心脏  组件 —— 逻辑处理单元的程序化表示,起到承上启下的作用,是 SpringMVC 行为模式的实际承载者 在本系列接下来的两篇文章中,我们将分别讨论 DispatcherServlet 和组件的相 关内容。本文讨论 DispatcherServlet,而下一篇则重点分析组件。 有关 DispatcherServlet,我们想从构成 DispatcherServlet 的体系结构入手, 再根据不同的逻辑主线分别加以分析,希望能够帮助读者整理出学习 SpringMVC 核心类的思路。 DispatcherServlet 的体系结构 通过不同的角度来观察 DispatcherServlet 会得到不同的结论。我们在这里选取 了三个不同的角度:运行特性、继承结构和数据结构。 【运行主线】 从 DispatcherServlet 所实现的接口来看,DispatcherServlet 的核心本质:是 一个 Servlet。这个结论似乎很幼稚,不过这个幼稚的结论却蕴含了一个对整个 框架都至关重要的内在原则:Servlet 可以根据其特性进行运行主线的划分。 根据 Servlet 规范的定义,Servlet 中的两大核心方法 init 方法和 service 方 法,它们的运行时间和触发条件都截然不同: 1. init 方法 在整个系统启动时运行,且只运行一次。因此,在 init方法中我们往往会对整 个应用程序进行初始化操作。这些初始化操作可能包括对容器 (WebApplicationContext)的初始化、组件和外部资源的初始化等等。 2. service 方法 在整个系统运行的过程中处于侦听模式,侦听并处理所有的 Web 请求。因此, 在 service及其相关方法中,我们看到的则是对 Http 请求的处理流程。 因而在这里,Servlet 的这一特性就被 SpringMVC 用于对不同的逻辑职责加以划 分,从而形成两条互不相关的逻辑运行主线:  初始化主线 —— 负责对 SpringMVC 的运行要素进行初始化  Http 请求处理主线 —— 负责对 SpringMVC 中的组件进行逻辑调度完成 对 Http 请求的处理 对于一个 MVC 框架而言,运行主线的划分非常重要。因为只有弄清楚不同的运行 主线,我们才能针对不同的运行主线采取不同的研究策略。而我们在这个系列中 的绝大多数分析的切入点,也是围绕着不同的运行主线进行的。 注:SpringMVC 运行 主线的划分依据是 Servlet 对象中不同方法的生命周期。 事实上,几乎所有的 MVC 都是以此为依据来进行运行主线的划分。这进一步可以 证明所有的 MVC 框架的核心基础还是 Servlet 规范,而设计理念的差异也导致 了不同的框架走向了完全不同的发展道路。 【继承结构】 除了运行主线的划分以外,我们再关注一下 DispatcherServlet 的继承结构: 在这个继承结构中,我们可以看到 DispatcherServlet 在其继承树中包含了 2 个 Spring 的支持 类:HttpServletBean 和 FrameworkServlet。我们分别来讨论一下这两个Spring 的支持类在这 里所起到的作用。 HttpServletBean 是 Spring 对于 Servlet 最低层次的抽象。在这一层抽象中,Spring 会将这个 Servlet 视作是一个 Spring 的 bean,并将 init-param 中的值作为 bean 的属性注入进来: Java 代码 public final void init() throws ServletException { if (logger.isDebugEnabled()) { logger.debug(Initializing se

文档评论(0)

ycwf + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档