部分转载自:https://blog.csdn.net/javaloveiphone/article/details/8154791

从上图可以看出 Tomcat 的容器分为四个等级,真正管理Servlet 的容器是Context 容器,一个 Context 对应一个 Web 工程。除了将 Servlet 包装成 StandardWrapper 并作为子容器添加到 Context 中,其它的所有 web.xml 属性都被解析到 Context 中,所以说 Context 容器才是真正运行 Servlet 的 Servlet 容器。一个 Web 应用对应一个 Context 容器,容器的配置属性由应用的 web.xml 指定,这样我们就能理解 web.xml 到底起到什么作用了。

Web服务器在与客户端交互时.Servlet的工作过程是:

1.     在客户端对web服务器发出请求

2.     web服务器接收到请求后将其发送给Servlet

3.     Servlet容器为此产生一个实例对象并调用ServletAPI中相应的方法来对客户端HTTP请求进行处理,然后将处理的响应结果返回给WEB服务器.

4.     web服务器将从Servlet实例对象中收到的响应结构发送回客户端.

以下是我对Serverlet的一些总结:

在第一次请求到来时调用init()方法进行一次创建和初始化,可以在web.xml中对Serverlet进行初始化赋参,然后调用getInitParameter(String name)进行初始化的参数调用。当长时间不使用或web服务器关闭时serverlet会被销毁destroy()。

而具体解析请求如下:

1.     web客户向Servlet容器发出HTTP请求;

2.     Servlet容器解析web的HTTP请求.

3.     Servlet容器创建一个HttpRequest对象,在这个对象中封装了http请求信息;

4.     Servlet容器创建一个HttpResponse对象;

5.     Servlet容器(如果访问的该servlet不是在服务器启动时创建的,则先创建servlet实例并调用init()方法初始化对象)调用HttpServlet的service()方法,把HttpRequest和HttpResponse对象为service方法的参数传给HttpServlet对象;

6.     HttpServlet调用HttpRequest的有关方法,获取HTTP请求信息;

7.     HttpServlet调用HttpResponse的有关方法,生成响应数据;

8.    Servlet容器把HttpServlet的响应结果传给web客户.

也就是说在HTTPServerlet中,service方法是处理逻辑的关键,service方法调用时收到上层传递的HttpRequest和HttpResponse参数,前者包含客户端传递的参数,后者用于回传给客户端

18.12.17 发现前面对serverlet的理解还是很浅,补一篇博客:

https://blog.csdn.net/jinfulin/article/details/44549573 详细的一篇讲解serverlet的博客。

https://www.cnblogs.com/xdp-gacl/p/3760336.html 开发serverlet再倒回来细看这篇博客,以下图截至此博客。

serverlet调用图:

Serverlet理解相关推荐

  1. Serverlet简介及理解

    Serverlet简介: Servlet(Server Applet),全称Java Servlet,未有中文译文.是用Java编写的服务器端程序.其主要功能在于交互式地浏览和修改数据,生成动态Web ...

  2. serverlet 原理_Serverlet详解 | 学步园

    Serverlet简介: Servlet(Server Applet),全称Java Servlet,未有中文译文.是用Java编写的服务器端程序.其主要功能在于交互式地浏览和修改数据,生成动态Web ...

  3. Serverlet具体解释

    Serverlet简单介绍: Servlet(Server Applet),全称Java Servlet,未有中文译文.是用Java编写的server端程序.其主要功能在于交互式地浏览和改动数据,生成 ...

  4. serverlet 原理_Serverlet具体解释

    Serverlet简单介绍: Servlet(Server Applet),全称Java Servlet,未有中文译文.是用Java编写的server端程序.其主要功能在于交互式地浏览和改动数据,生成 ...

  5. 通用解题法——回溯算法(理解+练习)

    积累算法经验,积累解题方法--回溯算法,你必须要掌握的解题方法! 什么是回溯算法呢? 回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就&quo ...

  6. stream流对象的理解及使用

    我的理解:用stream流式处理数据,将数据用一个一个方法去 . (点,即调用) 得到新的数据结果,可以一步达成. 有多种方式生成 Stream Source: 从 Collection 和数组 Co ...

  7. Linux shell 学习笔记(11)— 理解输入和输出(标准输入、输出、错误以及临时重定向和永久重定向)

    1. 理解输入和输出 1.1 标准文件描述符 Linux 系统将每个对象当作文件处理.这包括输入和输出进程.Linux 用文件描述符(file descriptor)来标识每个文件对象.文件描述符是一 ...

  8. java局部变量全局变量,实例变量的理解

    java局部变量全局变量,实例变量的理解 局部变量 可以理解为写在方法中的变量. public class Variable {//类变量static String name = "小明&q ...

  9. 智能文档理解:通用文档预训练模型

    预训练模型到底是什么,它是如何被应用在产品里,未来又有哪些机会和挑战? 预训练模型把迁移学习很好地用起来了,让我们感到眼前一亮.这和小孩子读书一样,一开始语文.数学.化学都学,读书.网上游戏等,在脑子 ...

最新文章

  1. linux下yum错误:[Errno 14] problem making ssl connection Trying other mirror.
  2. win10终端仿真程序_win10下子系统的使用
  3. idea数据库反向生成实体类_IntelliJ IDEA 的数据库管理工具实在太方便了
  4. SpringBoot 精通系列-构建一个RESTful Web 服务
  5. mavon-editor文本编辑器初体验(一)
  6. 逆向工程mysql注释_PowerDesigner 15进行逆向工程生成数据库图表时,注释的comment的生成,解决PowerDesigner逆向工程没有列注释...
  7. XML案例(简单的考生成绩管理系统)
  8. 测试人员常用的20个Linux命令(附Linux视频教程)
  9. 测试计算机性能的软件比较专业,用什么软件测验电脑CPU性能最好
  10. 卡常数技巧(未完结)
  11. MongoDB UTC时间问题
  12. 天王表的网络营销战略
  13. Adaptive AUTOSAR Diagnostic Manager模块介绍(一)
  14. 超市小票案例--适合Java初级练习Scanner类以及Java基础语法的例题
  15. IAR 设置TAB代码格式问题
  16. 视频超分——03 SPMC
  17. java-php-python-ssm蔬菜水果销售系统计算机毕业设计
  18. 2022寒假day3
  19. 根据输入的半径值,计算球的体积。
  20. 《自己动手做智能机器人》——1.3 机电一体化技术带来哪些明星产品

热门文章

  1. odoo权限管理详解
  2. 零食行业的升维战争 良品铺子会成为巨头企业吗?
  3. 局域网网站服务器dns设置,实战局域网DNS服务器配置
  4. DDD领域模型浅显易懂的示例实战
  5. js 将13位时间戳转化为YYYY-MM-dd HH:mm:ss
  6. Linux - Forever
  7. Android记事本 (附apk和源码)
  8. linux系统下ping ipv6
  9. C++:基于CreateThread 实现多线程(附完整源码)
  10. python学习笔记六:Series