好学IT学院:IT信息技术分享交流平台
标签:J2EE  来源:blog.csdn.net  作者:CSDN博客  发布时间:2009-08-25  ★★★加入收藏〗〖手机版
摘要:DispatcherServlet是spring的web框架(以下简称SpringWeb)中的核心servlet.…

二 doService()处理请求。

DispatcherServlet中无论是通过post方式还是get方式提交的request,最终都会交由doService()处理。doService()中的处理逻辑大致分以下六个步骤:

1.if(request是MultiPart,即文件上传) 则将request解析并包装成MultipartHttpServletRequest
2.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.html
Spring Reference Documentation http://www.springframework.org/docs/reference/index.html
Spring Framework 开发参考手册(中文版)http://www.jactiongroup.net/reference/html/index.html

刚从Spring Web Framework 0.4.pdf(By floater@cjsdn.com)看到以下两张sequence图,更能说明问题: