Servlet | Servlet执行流程和生命周期

本文详细介绍了Servlet的执行流程,从浏览器请求到Tomcat定位Servlet,再到Servlet的加载、实例化、初始化、请求处理和服务终止的全过程。同时,探讨了Servlet的生命周期,包括如何通过参数调整加载时机,以及init、service和destroy方法的调用情况。通过对Servlet的深入理解,有助于提升JavaWeb开发技能。

本专栏主要是记录学习JavaWeb中的Servlet相关知识点,如果刚开始学习Java的小伙伴可以点击下方连接查看专栏,本专栏为作者第一个付费专栏,如果觉得不错的可以多多支持
本专栏地址:🔥Servlet
Java入门篇: 🔥Java基础学习篇
Java进阶学习篇(持续更新中):🔑Java进阶学习篇

在这里插入图片描述
本系列文章将带领刚开始学习Servlet的小伙伴从0构建Servlet项目,并进行深入了解,明白其原理所在,作者认为知其然要知其所以然才能将知识点学的更加通透,预计本系列会有以下文章,在全部更新完成后可以点击连接查看

文章名称文章地址
Servlet简单入门——构建第一个Servlet项目Servlet简单入门——构建第一个Servlet项目
Servlet执行流程
Servlet生命周期
Servlet体系结构
Servlet urlPattern配置
XML 配置方式编写 Servlet

一、前言

本文将讲述Servlet执行流程以及生命周期

二、Servlet执行流程

浏览器发出http://localhost:8080/web-demo/demo1请求,从请求中可以解析出三部分内容,分别是localhost:8080web-demodemo1

  • 根据localhost:8080可以找到要访问的Tomcat Web服务器
  • 根据web-demo可以找到部署在Tomcat服务器上的web-demo项目
  • 根据demo1可以找到要访问的是项目中的哪个Servlet类,根据@WebServlet后面的值进行匹配
  • 找到ServletDemo1这个类后,Tomcat Web服务器就会为ServletDemo1这个类创建一个对象,然后调用对象中的service方法
    • ServletDemo1实现了Servlet接口,所以类中必然会重写service方法供Tomcat Web服务器进行调用
    • service方法中有ServletRequestServletResponse两个参数,ServletRequest封装的是请求数据,ServletResponse封装的是响应数据,后期我们可以通过这两个参数实现前后端的数据交互

三、Servlet生命周期

1.加载和实例化

在某人情况下,Servlet会在第一次访问时,被容器创建,但如果创建Servlet比较耗时的话,那么第一个访问的人等待的时间就比较长,用户的体验就比较差。那么我们可以听过修改loadOnStartup的参数来修改调用方法的时机
我们可以按住Ctrl键然后点击loadOnStartup来查看源码,这里可以看到默认值是-1,也就是说当参数为-1时,是在第一次访问时创建Servlet对象,如果是0或正整数,那么就是服务器启动时创建Servlet对象
在这里插入图片描述
具体的代码写在方法体前

@WebServlet(urlPatterns = "/demo1",loadOnStartup = 1)

2.初始化

init方法
在Servlet实例化之后,容器将调用Servlet的init()方法初始化这个对象,完成一些如加载配置文件、创建连接等初始化的工作。该方法只调用一次
有一个小点就是:初始化方法不打开网页也能调用。为了测试这个方法,我们修改loadOnStartup的参数,使其参数为1。如果运行程序出现了init方法中的输出语句,则说明服务器启动时没有访问到Servlet,但是Servlet已被创建,简单来说,不打开网页也调用init方法

在这里插入图片描述

3.请求处理

service方法,当每一次Servlet被访问时都会调用该方法,且该方法可以被多次调用,也就是说当我们打开了URL后多次刷新,那么这个方法就会被多次执行。为了能够更直观的看到效果,我们在service方法里面写一个输出语句, 也就是说在控制台会多次输出
在这里插入图片描述

4.服务终止

destory方法,当内存释放或服务器关闭时,会销毁方法,即调用该方法,且该方法仅会调用一次。如果需要调用这个方法,就需要正常关闭tomcat才可以。正常关闭tomcat的方法:打开Terminal输入命令:mvn tomcat7:run启动,Ctrl+C关闭,这时候就会调用destory方法,并跳出选择语句,我们只需要输入Y/N再回车确认即可结束进程
在这里插入图片描述

四、结语

接下来将讲述Servlet体系结构,有问题可以留言评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Alita11101_

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值