zoukankan      html  css  js  c++  java
  • 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他会拦截所有的请求,进一步去查找有没有合适的处理器,一个前端控制器就可以,有兴趣的可以看看它的源码。欢迎大家提出自己不同的看法,这只是我个人理解的两者的区别,哪里有问题的话多多指教哈。

  • 相关阅读:
    selenium1-安装
    jmeter9-图形监控
    InetAddress.getLocalHost().getHostAddress() 在macOS里面反应很慢
    自定义实现简易定时任务
    Redis性能监控
    Linux启动进程、线程数量查看及修改方式
    jmeter处理request和response
    centos安装netdata
    scp使用expect自动输入密码
    Linux系统下生成TPS,ResponseTime曲线图
  • 原文地址:https://www.cnblogs.com/zhangtan/p/7654921.html
Copyright © 2011-2022 走看看