Spring Mvc中DispatcherServlet和Servlet的区别小结

在web开发过程中开始接触的是servlet,用来处理用户请求。这几年随着spring 框架越来越成熟,几乎成了java web开发界的主流框架。既然这么受欢迎肯定有它的优点,spring框架在原来的基础上改进了,前端控制器的(DispatcherServlet)跟之前的Servlet作用相似,都是用来接收用户请求。前几天还有小一届的学弟问我这两个东西的区别,觉得还是有必要写篇文章记录下,方便以后的学习。

Servlet介绍

1.Servlet不是框架,它是java库里面的一个类,Servlet是服务器端运行的一个程序。

2.当web容器启动的时候并且执行的时候,Servlet类就会被初始化。

3.用户通过浏览器输入url时,请求到达Servlet来接收并且根据servlet配置去处理。

通常项目中会用到不同的web容器,我这里用到是比较常见的Tomcat。在eclipse里面创建一个java web项目,会有一个WEB-INF的文件夹,为了不轻易被外界访问到,这个文件夹底下的文件都是受保护的。文件夹中包括了一个很重要的配置文件,web.xml,我们要实现的不同Servlet也要在这里配置才能使用。servlet在web.xml中的配置如下图。

servlet配置

这里有个重要的类:

httpServlet,

这个类的底层实现也是继承了Servlet这个接口类,Servlet定义了下面几个方法。(有的方法的参数省略了)

init():

用于容器初始化。

getServlet():

获取配置信息。

service()

:请求转发

getServletInfo();

获取servlet信息

destory():

容器销毁

2.Spring 中的DispatcherServlet

2.1

Spring主要也是通过DispatcherServlet实现了Servlet这个接口,又叫前端控制器,来自前端的请求会先到达这里,它负责到后台去匹配合适的handler。DispatcherServlet的主要工作流程如下:

前端请求到达DispatcherServlet。

前端控制器请求HandlerMappering 查找Handler。

如果查找到存在的处理器,进一步去调用service和dao层

返回结果再到controller层,渲染具体的视图,返回结果给页面。

dispatcherServlet在web.xml中的配置如下图:

注:

load-on-startup:

表示容器启动时自动初始化该Servlet。

url-pattern

:表示拦截所有的.do请求。

spring框架已经是java web开发很主流的框架,这个框架有很多优点当然也有它的不足之处,比于之前的servlet,它一定程度上简化了开发人员的工作,使用servlet的话需要每个请求都去在web.xml中配置一个servlet节点,而Spring 中的DispatcherServlet他会拦截所有的请求,进一步去查找有没有合适的处理器,一个前端控制器就可以,有兴趣的可以看看它的源码。欢迎大家提出自己不同的看法,这只是我个人理解的两者的区别,哪里有问题的话多多指教哈。

 

posted on 2017-10-12 10:32  释迦&牟尼  阅读(526)  评论(0编辑  收藏  举报

导航