快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

spring中DispatcherServlet的运行机制


Spring中DispatcherServlet的运行机制

DispatcherServlet是spring的web框架(以下简称SpringWeb)中的核心servlet."Spring的web框架——象其它web框架相同——是一个哀求驱动的web框架,其设计围绕一个能将哀求分发到控制器的servlet,它也提供其它功能帮助web应用开发。"----《Spring Framework 开发参考手册(中文版)》而在SpringWeb框架中这个servlet就是org.springframework.web.servlet.DispatcherServlet。这个Servlet的继续关系如下图所示:SpringWeb首先将传统的HttpServlet抽象类包装成了Bean;FrameworkServlet抽象出了web框架中的servlets的一些基本行为,比如对application context的访问;DispatcherServlet的主要工作就是将一个request分发到一个合适的处理器上,并将处理返回的ModelAndView绘制出来返回给客户端。

DispatcherServlet作为一个Servlet那他一定有两个主要的方式:init()和doService()。

一 init()初始化。DispatcherServlet继续体系中init()方式的实现位于HttpServletBean中,HttpServletBean首先调用initBeanWrapper(),初始化BeanWrapper,然后调用抽象方式initServletBean(),这个方式的实现位于他的子类FrameworkServlet中;FramewordServlet中的initServletBean()方式将调用initWebApplicationContext(),初始化WebApplicationContext,然后同样调用他的抽象方式initFrameworkServlet(),而这个抽象方式的实现位于最终的DispatcherServlet中;DispatcherServlet中的initFrameworkServet()将依次初始化Multipar(用作文件上传)解析器、本地化信息解析器、主题解析器处理器映射等等内容。所以DispatcherServlet的初始化顺序为init();initBeanWrapper();

initServletBeaninitWebApplicationContext()

initFramework();initMultipartResolver();initLocaleResolver();initThemeResolver();initHandlerMappings();initHandlerAdapters();initHandlerExceptionResolvers();initViewResolvers();

二 doService()处理哀求。DispatcherServlet中无论是通过post方法还是get方法提交的request,最终都会交由doService()处理。doService()中的处理逻辑大致分以下六个步骤:1.if(request是MultiPart,即文件上传) 则将request解析并包装成MultipartHttpServletRequest2.mappedHandler = getHandler(request)根据request得到相应的处理器3.调用注册的所有拦截器的preHandle方式4.调用处理器    HandlerAdapter ha = new getHandlerAdapter(mappedHandler.getHandler());    ModelAndView mv = ha.handle(req, res, mappedHandler.getHandler())//这里使用了adapter模式5.调用注册的所有拦截器的postHandle方式6.绘制mv

也许Spring不像Struts、hibernate那样是使用最为广泛的,但他是全面的、轻量级的、足够灵活的、轻易替换、轻易扩展的。SpringWeb是SpringFramework中的一个部分,而DispatcherServlet又是SpringWeb中的一小部分,要弄懂Spring以及他背后的设计思想,对我等菜鸟而言,还是有很长一段路要走的。但愿在新的一条路出现之前,我们已经走遍了这条路。路漫漫其修远兮,吾将上下而求索。继承研究ing...to be continue...

参考资料Spring官方网站 http://www.springframework.org/Spring API http://www.springframework.org/docs/api/index.htmlSpring Reference Documentation http://www.springframework.org/docs/reference/index.htmlSpring Framework 开发参考手册(中文版)http://www.jactiongroup.net/reference/html/index.html




返回类别: 教程
上一教程: Eclipse Form程序设计指南(2)
下一教程: 对象映射就这么简朴

您可以阅读与"spring中DispatcherServlet的运行机制"相关的教程:
· Java学习之Java的运行环境
· JSP的运行内幕
· 迅速建立SERVLET和JSP的运行、调试和编译环境
· Learn Spring in spring(四)
· Java中非常机制的研究
    微笑服务 优质保证 索取样品