文章目录

  • Servlet 如何运行
  • 演示 Servlet 运行原理

Servlet 如何运行

用户向浏览器地址栏输入:http://ip:port/helloweb/sayHello?name=zs

  1. 浏览器使用 ip:port(端口号)连接服务器

  2. 浏览器将请求数据按照 http 协议打成一个数据包(请求数据包)发送给服务器

请求数据包的内容包含了请求资源路径(/helloweb/sayHello?name=zs),另外,在请求数据包当中,还会包含浏览器自动生成的一些信息。

  1. 服务器创建两个对象:请求对象(Request)和响应对象(Response)
    服务器解析请求数据包,将解析之后的数据存放到请求对象里面,方便 servlet 读取请求数据(因为 servlet 不用解析请求数据包,如果 要解析,需要理解 http 协议)。
    请求对象是 HttpServletRequest 接口的一个实现。
    响应对象是 HttpServletResponse 接口的一个实现,响应对象用于存放 servlet 处理的结果。

  2. 依据请求资源路径找到相应的 servlet 配置,通过反射创建 servlet 实例。然后调用其 service() 方法。
    在调用 service()方法时,会将事先创建好的请求对象(request)和响应对象(response)作为参数进行传递。在 servlet 内部,可以通过 request 获得请求数据,或者通过 response 设置响 应数据。

  3. 服务器从 response 中获取数据,按照 http 协议打成一个数据包(响应数据包),发送给浏览器。

  4. 浏览器会解析响应数据包,取出相应的数据,生成相应的界面。

演示 Servlet 运行原理

当用户向浏览器地址栏输入 http://ip:port/helloweb/sayHello?name=xxx

原理图

说明:

  1. 建立连接
    浏览器根据 IP 地址和端口号(port)和服务器建立连接

  2. 打包
    浏览器将请求数据按 HTTP 协议打成数据包(http 请求数据包)
    http 请求数据包包含“helloweb/sayHello”(请求资源路径)

  3. 发送请求
    浏览器向服务器发送请求数据包

  4. 创建 Request 对象
    Servlet 引擎(Tomcat 负责通讯的模块)创建请求对象(Request),方便我们自定义的 Servlet 获得请求数 据包中的内容
    该对象符合 HttpRequest 接口

  5. 创建 Response 对象
    Servlet 引擎(Tomcat 负责通讯的模块)创建相应对象(Response)
    该对象符合 HttpResponse 接口

  6. 创建 HelloServlet 对象
    服务器通过反射的方式创建 Servlet 实例

  7. 调用 Servlet 实例的 service(request , response)方法
    7.1)访问参数
    在 service()方法中访问 Request 对象,获得用户提交的一些参数
    7.2)处理结果
    在 service()方法中将处理结果放入 Response 对象

  8. 取数据
    Servlet 引擎从 Response 对象中取出数据

  9. 打包
    Servlet 引擎将取出的数据打包,该数据包符合 http 协议要求

  10. 发送响应
    浏览器将响应数据包中的数据取出,生成界面

Servlet 运行原理相关推荐

  1. Servlet运行原理以及生命周期

    Servlet运行原理 Servlet生命周期定义了一个Servlet如何被加载.初始化,以及它怎样接收请求.响应请求,提供服务.在讨论Servlet生命周期之前,先让我们来看一下这几个方法: 1. ...

  2. java启动servlet_Java Servlet 运行原理分析

    1 Servlet基本执行过程 Web容器(如Tomcat)判断当前请求是否第一次请求Servlet程序 . 如果是第一次,则Web容器执行以下任务: 加载Servlet类. 实例化Servlet类. ...

  3. Web开发基础_Servlet学习_0011_Servlet中的多线程安全问题与Servlet运行原理

    Servlet中的多线程安全问题 Servlet运行原理 Servlet中的多线程安全问题 演示 案例演示: 工程案例目录结构 pom.xml: <project xmlns="htt ...

  4. servlet运行原理和生命周期

    servlet的生命周期分为3个阶段: 1初始化阶段:调用init方法 2响应客户请求阶段:调用service()方法 3终止阶段:调用destroy方法 servlet初始化阶段: 在下列时刻ser ...

  5. Servlet运行原理图解

  6. Servlet 的运行原理

    系列文章目录 如何创建一个Servlet项目(Maven)?_crazy_xieyi的博客-CSDN博客 Tomcat下载.安装及使用介绍_crazy_xieyi的博客-CSDN博客 文章目录 一.T ...

  7. web开发总结-Servlet与JSP(运行原理)

    文章结构:(1)剖析Servlet:(2)剖析JSP: 一.剖析Servlet: (1)概述: Servlet是一种独立于平台和协议的服务器端的Java应用程序,可以生成动态的web页面.它担当Web ...

  8. Servlet简介及其运行原理

    Servlet简介及其运行原理: 1.Servlet是什么?     Java Servlet是运行在Web服务器或应用服务器上的程序,它是作为来自Web浏览器或者其他HTTP客户端的请求和HTTP上 ...

  9. servlet的运行原理

    Servlet在容器中的执行过程 1.浏览器向服务器发出GET请求 2.服务器上的Tomcat接收到该url,根据该url判断为Servlet请求,此时Tomcat将产生两个对象:请求对象(HttpS ...

最新文章

  1. jsp servlet mysql封装_html2canvas使用中的坑 - SegmentFault 思否
  2. 最全的Centos6.10详细安装Oracle 11G R2图文教程
  3. WCF服务的REST / SOAP端点
  4. Hibernate getCurrentSession()和openSession()的区别
  5. php fsockopen socket,基于php socket(fsockopen)的应用实例分析
  6. 把自己当成打工的,一辈子都是打工的!:周鸿祎
  7. C语言递归算法将十进制转换为二进制(附完整源码)
  8. EF Core 异步编程注意要点
  9. 作者:钱卫宁,华东师范大学数据科学与工程研究院教授、博士生导师。
  10. java redis 故障切换_java使用Redis6–sentinel单点故障主从自动切换
  11. Tapestry5 开发过程中问题收集
  12. 文档图纸加密解决方案
  13. (数据结构)树的深度/高度
  14. Esp8266 进阶之路33【大神篇】如何优雅地像乐鑫原厂封装esp8266底层寄存器的逻辑思维,做成自己的静态库库文件,让第三方人使用?
  15. 对多个Excel表中的数据进行合并计算
  16. sublime Text3去除文本重复行
  17. 撰写SCI论文好用的免费工具(下) - 易智编译EaseEditing
  18. 宇视NVR录像机下载录像没有声音如何解决
  19. c语言输出五角星程序,c语言入门之绘制五角星.doc
  20. python编程软件免费吗_Python Mac下载-Python for Mac(Python编程工具) v3.10.0a2免费版

热门文章

  1. apache.camel_在即将发布的Camel 2.21版本中改进了使用Apache Camel和ActiveMQ Artemis处理大型消息的功能...
  2. javaone_JavaOne 2015:高级模块化开发
  3. jvm gc阻塞时长 占比_jvm进行转义分析需要多长时间? 可能比您想象的要长。
  4. java jpa 异步编程_异步处理时的JPA
  5. Istio的网络API解释了
  6. 简单的测试可以防止最严重的故障
  7. java创建类的三个步骤_3个简单步骤即可测试Java 8
  8. Spring Webflux –编写过滤器
  9. Thymeleaf + Spring中的验证
  10. 为Java + STANDARD值引入Cucumber