本专栏主要是记录学习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:8080、web-demo、demo1
- 根据
localhost:8080可以找到要访问的Tomcat Web服务器 - 根据
web-demo可以找到部署在Tomcat服务器上的web-demo项目 - 根据
demo1可以找到要访问的是项目中的哪个Servlet类,根据@WebServlet后面的值进行匹配 - 找到
ServletDemo1这个类后,Tomcat Web服务器就会为ServletDemo1这个类创建一个对象,然后调用对象中的service方法- ServletDemo1实现了Servlet接口,所以类中必然会重写
service方法供Tomcat Web服务器进行调用 - service方法中有
ServletRequest和ServletResponse两个参数,ServletRequest封装的是请求数据,ServletResponse封装的是响应数据,后期我们可以通过这两个参数实现前后端的数据交互
- ServletDemo1实现了Servlet接口,所以类中必然会重写
三、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体系结构,有问题可以留言评论

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

489

被折叠的 条评论
为什么被折叠?



