首页 > 其他分享 >servlet的生命周期及线程问题

servlet的生命周期及线程问题

时间:2024-05-01 18:11:19浏览次数:29  
标签:生命周期 Tomcat init 调用 线程 使用 servlet

1.servlet对象的产生,是在第一次使用servlet的时候由Tomcat创建,由Tomcat调用构造方法创建的对象。之后再使用这个servlet就直接使用创建好的对象。servlet在Tomcat服务器中是单实例。

2.init()在创建servlet后只调用一次。可以初始化一些公用的函数。通常我们直接使用父类的init就可以,如果在servlet中需要加入一些初始信息,就可以重写init()方法添加初始值。注意这个方法只会在servlet被Tomcat创建之后被调用一次。

3.service()在每次请求servlet时调用。访问几次servlet的URL,就会调用几次方法。这个方法决定具体使用doGet还是doPost。

4.destroy()用来销毁servlet对象时执行。执行的时机是Tomcat停止或者(重启)这个web项目(servlet所在的项目)被重新部署。

这个生命周期指的是Tomcat的启动到停止。

线程问题:

servlet在tomcat服务器中是单实例多线程的,多个线程同时操作了servlet的成员变量,因此尽量不要在servlet类中使用成员变量,如果要使用就封装一个普通java类,在doGet和doPost中new这个普通java类的对象来使用。

标签:生命周期,Tomcat,init,调用,线程,使用,servlet
From: https://www.cnblogs.com/460759461-zeze/p/18169507

相关文章

  • servlet实现注册功能
    1.servlet://创建一个hashmap数组来存放注册的用户名和密码publicstaticHashMap<String,String>user=newHashMap<>();@OverrideprotectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException{doPost(request,response);}@Ov......
  • Spring6 当中 Bean 的生命周期的详细解析:有五步,有七步,有十步
    1.Spring6当中Bean的生命周期的详细解析:有五步,有七步,有十步@目录1.Spring6当中Bean的生命周期的详细解析:有五步,有七步,有十步每博一文案1.1什么是Bean的生命周期1.2Bean的生命周期"五步"1.3Bean的生命周期“七步”1.4Bean的生命周期“十步”2.Bean的作用域不......
  • Java多线程
    程序,进程,线程程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念;进程是执行程序的一次执行过程,是一个动态的概念,是系统资源分配的单位;通常在一个进程中可以包含若干个线程,线程是CPU调度和执行的单位;若是单核cpu,则多线程是模拟出来的,在一个cpu的情况下,在同......
  • Vue入门到关门之生命周期钩子
    一、生命周期钩子函数1、什么是生命周期?在软件开发中,"生命周期"通常指的是一个对象从创建到销毁的整个过程。在前端开发中,特别是在使用诸如Vue.js、React等框架的情况下,"生命周期"常常指的是组件或实例在其存在期间经历的一系列阶段。在Vue.js中,每个Vue实例都有一个生命周期,它......
  • 多线程TCP的一些问题
    使用循环堵塞等待客户端连接,连接到一个就开一条线程,当用以下代码,即每次ad重新初始化后其地址作为实参进行线程的创建,结果就是当有新客户端连接,开了新线程时,旧线程看起来会被停止,实际上是因为ad用了地址而不是值作为实参,所以当新连接进来时,ad的值被更改,但地址不变,旧线程所使用的ad......
  • 多线程
    1.相关概念程序(program):为完成特定任务,用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象进程(process):程序的一次执行过程,或是正在内存中运行的应用程序。如:运行中的QQ,运行中的网易音乐播放器。线程(thread):进程可进一步细化为线程,是程序内部的一条执行路径。一个......
  • Hashtable和ConcurrentHashMap如何实现线程安全
    感谢一起重温此知识点的同学--糖糖HashMap线程不安全,效率高put方法没有锁//任意地方声明HashMap,点击put即可进入源码HashMap<String,String>hashMap=newHashMap();hashMap.put("heart","糖糖");//HashMap.put(key,value)部分源码publicVput(Kkey,Vvalue){......
  • 我的第一个套接字通信(基本多线程)....
    前排叠个甲:为什么现在才学习到Linux套接字???我的回答是:大一玩了一年,大二开始接触C++,其中呢,大二上学习完了Qt,大二下才开始接触Linux,而在这期间,反复阅读了C++的特性源码....所以。回归正题:直接放代码,没什么好说的,就那一套流程:服务器端的代码:#include<stdio.h>#include<stdlib.h>......
  • [转帖]WEB请求处理三:Servlet容器请求处理
    https://www.jianshu.com/p/571c474279af 0系列目录#WEB请求处理WEB请求处理一:浏览器请求发起处理WEB请求处理二:Nginx请求反向代理本篇文章将给大家讲述Servlet容器中请求处理的过程,在给本篇文章起标题时,一直在“应用服务器”与“Servlet容器”这两者之间......
  • Windows下绑定线程到指定的CPU核心
    在某些场景下,需要把程序绑定到指定CPU核心提高执行效率。通过微软官方文档查询到Windows提供了两个Win32函数:SetThreadAffinityMask和SetProcessAffinityMask为指定线程和进程设置处理器关联掩码。通俗的讲就是在指定的CPU核心上执行线程或者进程。这里的CPU核心指的是逻辑核心......