JAVAWEB入门之Sevlet的执行原理

上一节我们学习了快速入门,

但是里面的问题是ServletDemo1里面既没有创建对象,又没有写方法,竟然就被执行了,为什么呢?

我们来分析一下Sevlet的执行原理

1.当服务器接收到客户端浏览器的请求后,会解析请求URL路径,获取访问的Servlet的资源路径

2.查找web.xml文件,是否有对应的<url-pattern>标签体内容

3.如果有,则再找到对应的<servlet-class>全类名

4.tomcat服务器,第一步将字节码文件加载进内存,并且创建其对象

5.调用其方法

至于里面的<servlet-name>只是为了对应名字可以互相匹配

 

Servlet中的生命周期:

1.被创建:执行init方法,只执行一次

疑问:默认情况下,第一次被访问时,Servlet被创建

           可以配置执行Servlet的创建时机

           在<servlet>标签下配置

            

修改为-5,这时候再次启动服务器,服务器并没有init.....出现,这说明

Servlet的init方法,只执行一次,说明一个Servlet在内存中只存在一个对象 ,说明Servlet是单例的

多个用户同时访问时,可能存在线程安全问题

解决:尽量不要在Servlet中定义成员变量。即使定义了成员变量,也不要对其修改值(赋值)

 

2.提供服务:执行service方法,执行多次

每次访问Servlet时,Service方法都会被调用一次

3.被销毁:执行destroy方法,执行一次

Servlet被销毁时执行。服务器关闭时,Servlet被销毁

只有服务器正常关闭时,才会执行destroy方法

那么问题来了,Servlet先销毁还是destroy先执行呢?

结论是,先执行destroy方法,一般用于释放资源

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/501648.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JAVAWEB入门之Servlet的注解配置

1.我们发现&#xff0c;配置servlet很麻烦&#xff0c;要一直在web.xml里面配置<servlet></servlet> 因此官方给了我们一个新的版本servlet3.0 好处&#xff1a;支持注解配置。可以不用web.xml了 步骤&#xff1a;1.创建javaEE项目&#xff0c;选择Servlet的版本…

JAVAWEB入门之IDEA与tomcat相关配置

IDEA与tomcat相关配置 IDEA会为每一个tomcat部署的项目单独建立一份配置文件&#xff0c;查看启动项目后的控制台的log&#xff1a;Using CATALINA_BASE: "C:\Users\14811\.IntelliJIdea2017.1\system\tomcat\_test2"打开这个文件路径后&#xff0c;我们发现里面有…

mysql 自增id replace_MySQL--REPLACE INTO与自增

####测试环境&#xff1a;MySQL版本&#xff1a;MySQL 5.7.19复制模式&#xff1a;ROW####执行下面操作&#xff1a;##测试脚本&#xff1a;CREATE TABLET_AUTO_TEST(IDINT AUTO_INCREMENT PRIMARY KEY,C1INT NOT NULL,UNIQUE KEYUNI_C1(C1))INSERT INTO T_AUTO_TEST(ID,C1)VAL…

JAVAWEB入门之Servlet_体系结构

我们建的这个类要继承复写Servlet的所有方法&#xff0c;但是这会很麻烦&#xff0c;所有的写出来很繁琐当摆设&#xff0c;所以我们想&#xff0c;可不可以定义一个类&#xff0c;然后继承这些类和方法&#xff0c; Servlet的体系结构&#xff0c; Servlet----接口----爷爷 …

JAVA入门级教学之HTTP

HTTP概念&#xff1a;Hyper Text Transfer Protocol 超文本传输协议 传输协议&#xff1a;定义了客户端和服务器端通信时发送数据的格式 特点&#xff1a;1.基于TCP/IP的高级协议&#xff0c;要经过三次握手&#xff0c;说明也是一种安全的协议 2.默认端口号是80 http://…

mysql 取年月日 语句_MySQL学习从这里出发!

MySQL数据库开发学习中&#xff0c;想满足一些需求&#xff0c;无疑需要经常与数据打交道&#xff0c;例如&#xff0c;我们在使用IO的一些技术的时候&#xff0c;常常需要将一些数据存储到外部文件&#xff0c;可能大家会问&#xff0c;我们初学的时候常常会简单的保存一些数据…

JAVAWEB入门之Requset原理

Request 1.request和respinse对象的原理 request和respinse对象是由服务器创建的&#xff0c;我们只是使用他们 request对象是来获取请求消息&#xff0c;response是来设置响应消息 3.request对象的继承体系结构&#xff1a; ServletRequest-------接口 继承 HttpServlet…

mysql事务编号_Mysql事务

一&#xff1a;mysql事务1.需求从orders表中查询最新的销售订单编号&#xff0c;并使用下一个销售订单编号作为新的销售订单编号。在指定客户的orders表中插入新的销售订单。将新的销售订单项目插入orderdetails表中。从orders表和orderdetails中获取数据以确认更改。如果由于数…

java try catch 例子_java try catch

try catch机制非常好。那些觉得try catch不行的人&#xff0c;是他们自己的水平有问题&#xff0c;无法理解这种机制。并且这群人写代码不遵守规则&#xff0c;喜欢偷懒&#xff0c;这才造成try catch不好的错觉。详细解释&#xff1a;1.程序要健壮&#xff0c;必须要设计报错机…

java xss 默认值_一台 Java 服务器可以跑多少个线程?

原标题&#xff1a;一台 Java 服务器可以跑多少个线程&#xff1f;转自&#xff1a;简书&#xff0c;作者&#xff1a;新栋BOOK一台Java服务器能跑多少个线程&#xff1f;这个问题来自一次线上报警如下图&#xff0c;超过了我们的配置阈值。京东自研UMP监控分析打出jstack文件&…

java设计模式初探之装饰者_JAVA设计模式初探之装饰者模式

装饰者模式1、意图&#xff1a; 动态地给一个对象添加一些额外的职责。就增加功能来说&#xff0c; Decorator模式相比生成子类更为灵活。该模式以对客 户端透明的方式扩展对象的功能。2、适用环境(1)在不影响其他对象的情况下&#xff0c;以动态、透明的方式给单个对象添加职责…

redis在java中的方法_redis在java中的使用方法

Redis是key-value方式储存数据的内存数据库。下载后解压&#xff0c;redis-server.exe是redis服务&#xff0c;启动之后就可以使用redis。redis-cli.exe是客户端&#xff0c;可以访问本地或远程的redis。redis-cli.exe -h 127.0.0.1 -p 6379 命令行命令。修改-h后的ip…

Java写一个快速排序_快速排序java实现

1.快速排序的思想快速排序属于交换排序&#xff0c;是冒泡排序的升降版。相对于冒泡排序而言&#xff0c;快速排序增大了记录比较和移动的距离&#xff0c;将关键字较大的记录直接移动到后面&#xff0c;将关键字较小的记录直接移动到前面&#xff1b;不再是相邻两个记录依次进…

java porm.xml_通过Maven仓库安装Spire.PDF for Java

本文将介绍如何通过Maven仓库安装Spire.PDF for Java。首先&#xff0c;在pom.xml文件中配置Maven仓库路径。com.e-icebluee-icebluehttp://repo.e-iceblue.com/nexus/content/groups/public/其次&#xff0c;在pom.xml文件中指定Spire.PDF for Java的Maven依赖e-iceblue spire…

JAVA入门级教学之(方法内存分配机制)

目录 JAVA入门级教学之&#xff08;方法内存分配机制&#xff09; 1.方法只定义&#xff0c;不调用&#xff0c;是不会执行的 2.在JVM内存划分上有这样三块主要的内存空间&#xff1a;【还有其它的内存空间】 3.关于"栈"数据结构 4.方法代码片段存在哪里&#xff1f;…

cad与连接mySQL数据库_跨服务器操作数据库?其实很简单!(下)

之前一篇文章一步一步的教小伙伴们如何建立SQL Server的数据库链接(DBLINK)&#xff0c;详细步骤可查看上篇&#xff1a;跨服务器操作数据库&#xff1f;其实很简单&#xff01;(上)今天我们来教大家如何连接MYSQL和Oracle的远程数据库创建MYSQL远程链接第一步需要下载MYSQL驱动…

php如何获取服务器时间_php如何获取当前日期

1、前提条件php网站编程中&#xff0c;我们一般用date函数来获取服务器上的时间。但要想正确调用date函数&#xff0c;必须保证php的配置文件php.ini已经配置正确了&#xff0c;否则调用date函数时会报错&#xff0c;没办法正确进行获取时间。2、用记事本程序打开php配置文件ph…

JAVA入门级教学之(对象的创建和使用)

/* 对象的创建和使用*/ public class OOTest01 {public static void main(String[] args){//通过一个类可是实例化N个对象//实例化对象的语法&#xff1a;new.类名();//new是java语言中的一个运算符//new运算符的作用是创建对象&#xff0c;在JVM【堆】内存中开辟新的内存…

JAVA入门级教学之(对象的使用)

//定义一个用户类public class User {//属性【以下都是成员变量之实例变量】//用户编号//int是一种【基本数据】类型&#xff1a;整数型//no是一个实例变量int no;//用户名//String是一种引用数据类型&#xff1a;代表字符串//name是一个实例变量//name是一个引用String name;/…

台式电脑耳机插孔在哪_一图教你学会电脑主机后面各接口正确接线

电脑主机后面接口众多&#xff0c;很多人分不清各接口都分别起什么作用和怎么接线&#xff0c;下面就来重点说说经常易出错的各接口作用及连接方法。1、 键盘鼠标接口&#xff1a;注意紫色的圆形接口为键盘接口&#xff0c;绿色的圆形接口为鼠标接口。如果你的键盘是紫色的圆形…