Servlet 运行原理
文章目录
- Servlet 如何运行
- 演示 Servlet 运行原理
Servlet 如何运行
用户向浏览器地址栏输入:http://ip:port/helloweb/sayHello?name=zs
浏览器使用 ip:port(端口号)连接服务器
浏览器将请求数据按照 http 协议打成一个数据包(请求数据包)发送给服务器
请求数据包的内容包含了请求资源路径(/helloweb/sayHello?name=zs),另外,在请求数据包当中,还会包含浏览器自动生成的一些信息。
服务器创建两个对象:请求对象(Request)和响应对象(Response)
服务器解析请求数据包,将解析之后的数据存放到请求对象里面,方便 servlet 读取请求数据(因为 servlet 不用解析请求数据包,如果 要解析,需要理解 http 协议)。
请求对象是 HttpServletRequest 接口的一个实现。
响应对象是 HttpServletResponse 接口的一个实现,响应对象用于存放 servlet 处理的结果。依据请求资源路径找到相应的 servlet 配置,通过反射创建 servlet 实例。然后调用其 service() 方法。
在调用 service()方法时,会将事先创建好的请求对象(request)和响应对象(response)作为参数进行传递。在 servlet 内部,可以通过 request 获得请求数据,或者通过 response 设置响 应数据。服务器从 response 中获取数据,按照 http 协议打成一个数据包(响应数据包),发送给浏览器。
浏览器会解析响应数据包,取出相应的数据,生成相应的界面。
演示 Servlet 运行原理
当用户向浏览器地址栏输入 http://ip:port/helloweb/sayHello?name=xxx
原理图
说明:
建立连接
浏览器根据 IP 地址和端口号(port)和服务器建立连接打包
浏览器将请求数据按 HTTP 协议打成数据包(http 请求数据包)
http 请求数据包包含“helloweb/sayHello”(请求资源路径)发送请求
浏览器向服务器发送请求数据包创建 Request 对象
Servlet 引擎(Tomcat 负责通讯的模块)创建请求对象(Request),方便我们自定义的 Servlet 获得请求数 据包中的内容
该对象符合 HttpRequest 接口创建 Response 对象
Servlet 引擎(Tomcat 负责通讯的模块)创建相应对象(Response)
该对象符合 HttpResponse 接口创建 HelloServlet 对象
服务器通过反射的方式创建 Servlet 实例调用 Servlet 实例的 service(request , response)方法
7.1)访问参数
在 service()方法中访问 Request 对象,获得用户提交的一些参数
7.2)处理结果
在 service()方法中将处理结果放入 Response 对象取数据
Servlet 引擎从 Response 对象中取出数据打包
Servlet 引擎将取出的数据打包,该数据包符合 http 协议要求发送响应
浏览器将响应数据包中的数据取出,生成界面
Servlet 运行原理相关推荐
- Servlet运行原理以及生命周期
Servlet运行原理 Servlet生命周期定义了一个Servlet如何被加载.初始化,以及它怎样接收请求.响应请求,提供服务.在讨论Servlet生命周期之前,先让我们来看一下这几个方法: 1. ...
- java启动servlet_Java Servlet 运行原理分析
1 Servlet基本执行过程 Web容器(如Tomcat)判断当前请求是否第一次请求Servlet程序 . 如果是第一次,则Web容器执行以下任务: 加载Servlet类. 实例化Servlet类. ...
- Web开发基础_Servlet学习_0011_Servlet中的多线程安全问题与Servlet运行原理
Servlet中的多线程安全问题 Servlet运行原理 Servlet中的多线程安全问题 演示 案例演示: 工程案例目录结构 pom.xml: <project xmlns="htt ...
- servlet运行原理和生命周期
servlet的生命周期分为3个阶段: 1初始化阶段:调用init方法 2响应客户请求阶段:调用service()方法 3终止阶段:调用destroy方法 servlet初始化阶段: 在下列时刻ser ...
- Servlet运行原理图解
- Servlet 的运行原理
系列文章目录 如何创建一个Servlet项目(Maven)?_crazy_xieyi的博客-CSDN博客 Tomcat下载.安装及使用介绍_crazy_xieyi的博客-CSDN博客 文章目录 一.T ...
- web开发总结-Servlet与JSP(运行原理)
文章结构:(1)剖析Servlet:(2)剖析JSP: 一.剖析Servlet: (1)概述: Servlet是一种独立于平台和协议的服务器端的Java应用程序,可以生成动态的web页面.它担当Web ...
- Servlet简介及其运行原理
Servlet简介及其运行原理: 1.Servlet是什么? Java Servlet是运行在Web服务器或应用服务器上的程序,它是作为来自Web浏览器或者其他HTTP客户端的请求和HTTP上 ...
- servlet的运行原理
Servlet在容器中的执行过程 1.浏览器向服务器发出GET请求 2.服务器上的Tomcat接收到该url,根据该url判断为Servlet请求,此时Tomcat将产生两个对象:请求对象(HttpS ...
最新文章
- jsp servlet mysql封装_html2canvas使用中的坑 - SegmentFault 思否
- 最全的Centos6.10详细安装Oracle 11G R2图文教程
- WCF服务的REST / SOAP端点
- Hibernate getCurrentSession()和openSession()的区别
- php fsockopen socket,基于php socket(fsockopen)的应用实例分析
- 把自己当成打工的,一辈子都是打工的!:周鸿祎
- C语言递归算法将十进制转换为二进制(附完整源码)
- EF Core 异步编程注意要点
- 作者:钱卫宁,华东师范大学数据科学与工程研究院教授、博士生导师。
- java redis 故障切换_java使用Redis6–sentinel单点故障主从自动切换
- Tapestry5 开发过程中问题收集
- 文档图纸加密解决方案
- (数据结构)树的深度/高度
- Esp8266 进阶之路33【大神篇】如何优雅地像乐鑫原厂封装esp8266底层寄存器的逻辑思维,做成自己的静态库库文件,让第三方人使用?
- 对多个Excel表中的数据进行合并计算
- sublime Text3去除文本重复行
- 撰写SCI论文好用的免费工具(下) - 易智编译EaseEditing
- 宇视NVR录像机下载录像没有声音如何解决
- c语言输出五角星程序,c语言入门之绘制五角星.doc
- python编程软件免费吗_Python Mac下载-Python for Mac(Python编程工具) v3.10.0a2免费版
热门文章
- apache.camel_在即将发布的Camel 2.21版本中改进了使用Apache Camel和ActiveMQ Artemis处理大型消息的功能...
- javaone_JavaOne 2015:高级模块化开发
- jvm gc阻塞时长 占比_jvm进行转义分析需要多长时间? 可能比您想象的要长。
- java jpa 异步编程_异步处理时的JPA
- Istio的网络API解释了
- 简单的测试可以防止最严重的故障
- java创建类的三个步骤_3个简单步骤即可测试Java 8
- Spring Webflux –编写过滤器
- Thymeleaf + Spring中的验证
- 为Java + STANDARD值引入Cucumber