Sevrlet 生命周期
发布日期:2021-06-30 14:57:01
浏览次数:3
分类:技术文章
本文共 2521 字,大约阅读时间需要 8 分钟。
package com.jerry.servlet;import java.io.IOException;import javax.servlet.ServletConfig;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;@WebServlet(asyncSupported = true, urlPatterns = { "/lifecycle" })public class Lifecycle extends HttpServlet { private static final long serialVersionUID = 1L; // servlet是单例模式,所以只会构造一次 public Lifecycle() { super(); System.out.println("构造函数:Lifecycle()"); } // 初始化当然也只会执行一次 public void init(ServletConfig config) throws ServletException { System.out.println("初始化函数:init(ServletConfig config)"); } // 每次访问就是调用 service 啦。service 判断请求类型再去调度 doGet 或 doPost protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("调用:service"); // doGet、doPost其实是由service调用的。如果我们重写了 service,又没手动调用他们,那么doGet、doPost就成失踪人口了。 super.service(request, response);// 如果没有什么特殊需求,直接调用父类的 service 就行了。 } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("调用:doGet"); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); System.out.println("调用:doPost"); } // servlet实例被销毁前调用一次,交代后事。(要正常关闭 tomcat 如果直接关 tomcat 那遗言的机会都没有了) public void destroy() { System.out.println("析构函数:destroy()"); }}
访问:
输出如下构造函数:Lifecycle() 初始化函数:init(ServletConfig config)调用:service调用:doGet
随便编辑下 Lifecycle.java 触发Eclipse 的 **“自动重建”**观察 sevrlet 的销毁过程。
十一月 16, 2018 10:54:12 下午 org.apache.catalina.core.StandardContext reload信息: Reloading Context with name [/servlet_demo] has started析构函数:destroy()十一月 16, 2018 10:54:12 下午 org.apache.catalina.core.StandardContext reload信息: Reloading Context with name [/servlet_demo] is completed
至于tomcat是怎么根据我们输入的URL找到具体 servlet的呢?
1、从URL 中提取出路径 lifecycle
2、到 servlet-mapping 》 url-pattern 匹配 3、配上了就用它的 servlet-name 找 servlet-name 相同 servlet 节点 4、得到了类名 com.jerry.servlet.Lifecycle 就可以用反射为所欲为了... Lifecycle com.jerry.servlet.Lifecycle ... Lifecycle /lifecycle
servlet 默认都是懒加载,有访问时才实例化。如果一些servlet需要服务器启动就实例化可以加上 load-on-startup 数字越小优先级越高
Lifecycle com.jerry.servlet.Lifecycle 1
转载地址:https://jerryjin.blog.csdn.net/article/details/84147008 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
关注你微信了!
[***.104.42.241]2024年04月08日 00时57分22秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
如何用手机维护Mysql数据库
2019-05-01
完成《Java编程入门》初稿
2019-05-01
Windows Server 2012下安装Hyper-V虚拟机
2019-05-01
MacOSX和Windows 8的完美融合
2019-05-01
Iphone5S 体验(视频+截图)
2019-05-01
python 多进程之进程池的操作
2019-05-01
flask整理之 flask程序中的debug模式
2019-05-01
如何和大妈解释区块链,让他们理解区块链
2019-05-01
比特币,父母这一辈能接受吗?
2019-05-01
解释区块链钱包的意思
2019-05-01
让老百姓知道什么是比特币,只需要10分钟
2019-05-01
为什么要反对比特币,这不代表是空气币
2019-05-01
5G技术如何运用在数字资产方面
2019-05-01
区块链技术运用最广泛的还是保险
2019-05-01
我们提出了DeFi项目如何成为聚合器,有两种路径
2019-05-01
SnapEx的新感觉,对新手很友好
2019-05-01
聚合器运用在什么地方最合适
2019-05-01
区块链可以解决供应链的问题,包括食品方面
2019-05-01
首个聚合器怎么产生的,并运用领域在什么
2021-07-04