Sevlet(Lifecycle)
博客专区 > 赵-猛 的博客 > 博客详情
Sevlet(Lifecycle)
赵-猛 发表于6个月前
Sevlet(Lifecycle)
  • 发表于 6个月前
  • 阅读 4
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

摘要: Sevlet工作流程

Servlet工作流程

1.客户端browser组装客户端的请求逻辑,构造向服务端发送的请求内容request

http request: method url version + header kvs + 空行 + body


2.由browser向服务器端发送请求request

http request: method url version + header kvs + 空行 + body


3.服务器端由Tomcat服务器提供的Servlet容器解析接收到的请求

parse parameters, build session, build application ... 

 

4.通过Web应用程序的配置文件web.xml,解析到对应执行的JSP/Servlet

对于jsp,先由jsp引擎编译成java servlet文本,继而由java编译器编译成java class字节码文件,然后加载/链接(验证/准备/解析)/类初始化/执行

对于servlet,由于已经编译成了java class字节码文件,直接加载/链接(验证/准备/解析)/类初始化/执行

    sevlet的执行(生命周期,其中124在整个生命周期只会执行一次):

1.实例化该servlet, 一个servlet容器只有该类的一个实例
2.初始化该实例,容器负责调用该servlet实例的 init() 方法,在处理用户请求之前,来做一些额外的初始化工作
3.处理请求,当Servlet容器接收到一个Servlet请求时,便运行与之对应的Servlet实例的 service()方法
4.特定情况下(如jsp或者servlet发生了更新)销毁该servlet实例,servlet容器调用该实例的destroy()方法

   servlet相关组件

listener:application/session/request事件响应程序
filter:拦截并转换请求或者响应
sevlet:依据请求的url, 加载和执行对应的处理代码
(interceptor是struts和spring中的概念,不配置在web.xml中)


    
5.Servlet完成客户端发送的请求逻辑,并完成向客户端发送的响应内容response

http response: version code message + header kvs + 空行 + body

  
6.由Tomcat服务器提供的Servlet容器向客户端浏览器进行响应response。    

http response: version code message + header kvs + 空行 + body


Servlet注意事项

Servlet规范定义,在默认情况下(Servlet不是在分布式的环境中部署),Servlet容器对声明的每一个Servlet,只创建一个实例
Servlet容器维护了一个线程池来服务多个客户请求同时访问同一个Servlet
Servlet容器使用一个调度者线程(Dispatcher Thread)来管理工作者线程(Worker Thread)。
当容器接收到一个访问Servlet的请求,调度者线程从线程池中选取一个工作者线程,将请求传递给该线程,然后由这个线程执行Servlet的service()方法 
(在Tomcat,可以在server.xml文件中通过<Connnector>元素设置线程池中线程的数目)

 

标签: java servlet lifecycle
共有 人打赏支持
粉丝 5
博文 78
码字总数 390081
×
赵-猛
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: