码迷,mamicode.com
首页 > 其他好文 > 详细

DispatcherServlet

时间:2017-06-18 14:26:08      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:framework   ash   exception   hand   响应   阶段   web服务器   .net   csdn   

DispatcherServlet(前端控制器)是整个MVC框架中最为核心的一块,它主要用来拦截符合要求的外部请求,并把请求分发到不同的控制器去处理,根据控制器处理后的结果,生成相应的响应发送到客户端。前端控制器既可以使用Filter实现(Struts2采用这种方式),也可以使用Servlet来实现(spring MVC框架)。

 技术分享

 

DispatcherServlet 作为前置控制器是web服务器的入口,是spring mvc最重要的一个类,通过它的生命周期可以加深对web服务器的理解。

  1)初始化阶段:调用init()方法,Servlet被装载后,Servlet容器创建一个Servlet实例并且调用Servlet的init()方法进行初始化。

     在Servlet的整个生命周期内,init()方法只被调用一次。

  2)响应客户请求阶段:调用service()方法

  3)终止阶段:调用destroy()方法

Servlet初始化阶段:

  在下列时刻Servlet容器装载Servlet:

  1)Servlet容器启动时自动装载某些Servlet,实现它只需要在web.XML文件中的<Servlet></Servlet>之间添加如下代码:  

   <loadon-startup>1</loadon-startup> 

  2)在Servlet容器启动后,客户首次向Servlet发送请求

  3)Servlet类文件被更新后,重新装载Servlet

DispatcherServlet的结构

复习了上述知识后我们来看看DispatcherServlet的结构:

DispatcherServlet继承自抽象类:FrameworkServlet,间接继承了HttpServlet (FrameworkServlet继承自HttpServletBean,而HttpServletBean继承自HttpServlet )

 

Servlet的初始化

技术分享

 1     protected void initStrategies(ApplicationContext context) {
 2         initMultipartResolver(context); //文件上传解析,如果请求类型是multipart将通过MultipartResolver进行文件上传解析;
 3         initLocaleResolver(context);    //本地化解析
 4         initThemeResolver(context);   //主题解析
 5         initHandlerMappings(context);   //通过HandlerMapping,将请求映射到处理器
 6         initHandlerAdapters(context);   //通过HandlerAdapter支持多种类型的处理器
 7         initHandlerExceptionResolvers(context); //如果执行过程中遇到异常将交给HandlerExceptionResolver来解析
 8         initRequestToViewNameTranslator(context); //直接解析请求到视图名
 9         initViewResolvers(context);      //通过ViewResolver解析逻辑视图名到具体视图实现
10         initFlashMapManager(context);   //flash映射管理器
11     }

 

DispatcherServlet

标签:framework   ash   exception   hand   响应   阶段   web服务器   .net   csdn   

原文地址:http://www.cnblogs.com/wanghuabin0917/p/7044164.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!