javaweb之servlet调用过程

在说调用之前先看下http请求的一些相关知识

当浏览器向Web服务器发出请求时,它向服务器传递了一个数据块,也就是请求信息,HTTP请求信息由3部分组成:(1)请求方法URI协议/版本(2) 请求头(Request Header)(3) 请求正文

(1)请求方法URI协议/版本

请求的第一行是"方法URI协议/版本"例如:GET/sample.jsp HTTP/1.1

以上代码中"GET"代表请求方法,"/sample.jsp"表示URI,"HTTP/1.1代表协议和协议的版本。

(2)请求头(Request Header)

请求头包含许多有关的客户端环境和请求正文的有用信息。例如,请求头可以声明浏览器所用的语言,请求正文的长度等。例如:

Accept:image/gif.image/jpeg.*/*

Accept-Language:zh-cn

Connection:Keep-Alive

Host:localhost

User-Agent:Mozila/4.0(compatible:MSIE5.01:Windows NT5.0)

Accept-Encoding:gzip,deflate.

(3)请求正文

请求头和请求正文之间是一个空行,这个行非常重要,它表示请求头已经结束,接下来的是请求正文。请求正文中可以包含客户提交的查询字符串信息:

username=jinqiao&password=1234


在一个web请求中冲浏览器中发出时必须带有一定的说明,一定的头文件信心,主要有hosts,dns解析,请求方法,在get或post请求时会加入一定的相应的头文件信息,请求的协议:http协议,主机名,端口,项目名,项目请求的方法,以及携带的数据,通过浏览器会他相应的请求的路径给解析出来,把携带的参数解析出来,把允许的类型解析出来,其实就是实体内容

  1. 查看hosts头分析请求的是哪个虚拟主机,如果没有hosts请求头访问默认的虚拟主机,
  2. 分当前请求时访问的当前主机中的哪一个web资源
  3. 分析出当前请求访问的当前web资源中的哪一个资源,
  4. 查找web.xml看是否有虚拟路径如果有则用虚拟路径去访问这个资源
  5. 服务器从response对象中获得写入浏览器的数据并响应给浏览器

servlert的生命周期:

servlet在第一次访问到的时候,服务器会创建一个servlet对象,创建对象时立即调用init方法进行初始化操作,创建出的对象一直停留在内存中,为后续访问这个servlet提供服务,每次调用servle时都会执行其中的service方法,当web应用移除出容器或者服务器被关闭时随着服务器的关闭会调用servlet中的destory方法进行后续销毁工作

init():在Servlet的生命周期中,仅执行一次init()方法。它是在服务器装入Servlet时执行的,负责初始化Servlet对象。可以配置服务器,以在启动服务器或客户机首次访问Servlet时装入Servlet。无论有多少客户机访问Servlet,都不会重复执行init()。

service():它是Servlet的核心,负责响应客户的请求。每当一个客户请求一个HttpServlet对象,该对象的Service()方法就要调用,而且传递给这个方法一个“请求”(ServletRequest)对象和一个“响应”(ServletResponse)对象作为参数。在HttpServlet中已存在Service()方法。默认的服务功能是调用与HTTP请求的方法相应的do功能。

destroy():仅执行一次,在服务器端停止且卸载Servlet时执行该方法。当Servlet对象退出生命周期时,负责释放占用的资源。一个Servlet在运行service()方法时可能会产生其他的线程,因此需要确认在调用destroy()方法时,这些线程已经终止或完成。

  • 第一个到达服务器的 HTTP 请求被委派到 Servlet 容器。

  • Servlet 容器在调用 service() 方法之前加载 Servlet。

  • 然后 Servlet 容器处理由多个线程产生的多个请求,每个线程执行一个单一的 Servlet 实例的 service() 方法。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kay三石 [Alay Kay]

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值