当前位置: 首页 > article >正文

web实操3——servlet

课程链接b站:第12课
https://www.bilibili.com/video/BV1qv4y1o79t?spm_id_from=333.788.videopod.episodes&vd_source=05a3c1275b87b47507d869e9349ee3cd&p=233

为什么只要写一个实现Servlet的类就可以被调用

tomcat根据url去web.xml里定位到我们写的类后,就做了如下1,2,3操作
在这里插入图片描述
所以我们只需要按照人家规定的结构把service方法实现了,在里面编写好我们想要的逻辑,就可以了,对象的创建和方法的调用都是由服务器执行的。

所以也就是说了,为什么servlet的运行依赖于web容器,也就是说你不在这个容器里,没人帮你创建对象,没人帮你调用方法,就运行不了。
在这里插入图片描述
补充:
web.xml配置多个路径时写法:
在这里插入图片描述

Servlet类方法详解,servlet生命周期

init方法:

服务器启动后,第一次浏览器访问这个servlet的路径回车后,就会执行。执行完执行service方法。
在这里插入图片描述

service方法:

服务器启动后,浏览器每次访问路径,回车都会执行service方法。
在这里插入图片描述
在这里插入图片描述

destroy方法:

服务器正常关闭了(非正常关闭,直接把黑窗口叉掉这样,destory方法不会被执行),servlet被销毁了,servlet被销毁的时候执行destory方法
在这里插入图片描述
理解成交待临终遗言,所以这个方法是servlet销毁之前执行。
在这里插入图片描述

正常关闭服务器:就自动执行了destory方法:
关闭前:
在这里插入图片描述
点击后:
在这里插入图片描述

servlet生命周期:

什么时候被创建,什么时候被销毁
在这里插入图片描述

getServletConfig方法

返回了ServletConfig对象,是Servlet的配置对象。
这个方法需要我们自己去实现的,我们暂时先不做实现,先了解一下。
在这里插入图片描述

getServletInfo方法

获取servlet的一些信息,一般我们也不实现他,了解一下就可以了。
在这里插入图片描述

servlet生命周期详解

指定servlet的创建时机

在这里插入图片描述
如何指定:
在xml里用坐标指定,说明如下图:一共有两种时机
在这里插入图片描述
服务器启动时创建:
只要一启动就创建,不是要浏览器url回车创建了。
无论配成哪种,都是要先执行init方法。
但是service方法是必须浏览器回车的时候才会调用。
在这里插入图片描述

使用场景:

有的servlet加载的资源比较多,init方法用来加载资源的
有的servlet执行之前需要依赖于其他的servlet,我们可以把其他servlet在服务器启动的时候就创建。就这个意思。

servlet单例的问题和解决

一个servlet内存里只有这一个对象:
在这里插入图片描述
这样一个对象会有的问题:
多个线程访问同样的对象资源的时候,这个时候可能会存在多线程的访问安全问题。
张三浏览器可以访问,李四也可以访问,王五也可以,
那么这同一个对象就是共享资源,就会存在安全问题。

加锁也不行,比如这个是12306的,张三在买,全国这么多亿人在那等着他买完吗,很不合适,性能影响太严重。

解决:
一个对象里面,方法不被共享,成员变量是被共享的。
所以尽量在方法里定义局部变量,每次方法进栈都会有一个变量存在在栈里,这个变量就不再是共享的了。这样就不会存在安全问题了。

如果万不得已必须要定义一个成员变量,尽量不要修改值,我们仅仅是获取这个值的话,每次只是拿这个值,没有对他修改,没有并发的操作,也不会有安全问题。
并发的问题是,有的线程对他进行修改了,有的对他获取了,所以才会出现数据安全错乱的问题。
在这里插入图片描述

前:
在这里插入图片描述

改成在方法里定义:
在这里插入图片描述


http://www.kler.cn/a/383176.html

相关文章:

  • springBoot Maven 剔除无用的jar引用
  • Linux系统安装部署xtrabackup
  • 重温设计模式--单例模式
  • 面试基础篇---迭代器,yield, tcp, 等
  • 抢单人机交互「新红利」!哪些细分赛道“多金”?
  • 1 软件工程——概述
  • 短剧APP系统开发,数字化微短剧时代
  • SpringBoot框架学习总结 及 整合 JDBC Mybatis-plus JPA Redis 我的学习笔记
  • 《Qwen2-VL》论文精读【下】:发表于2024年10月 Qwen2-VL 迅速崛起 | 性能与GPT-4o和Claude3.5相当
  • 《Java 实现选择排序:原理剖析与代码详解》
  • 手动切换python版本
  • yolov8涨点系列之Concat模块改进
  • 300公斤载重橡胶履带式无人车底盘技术详解
  • AUTOSAR CP NVRAM Manager规范导读
  • Angular 中 UntypedFormGroup和FormGroup的区别?
  • 【python】游戏设计 --- 双人井字棋小游戏
  • OceanBase中,如何解读 obdiag 收集的火焰图 【DBA早下班系列】
  • 刷题强训 (day1) -- 数字统计
  • 软件工程笔记一
  • Redis 数据类型详解与应用
  • 加密货币行业与2024年美国大选
  • Linux sudo命令及权限设置
  • 【MongoDB】MongoDB的Java API及Spring集成(Spring Data)
  • 免费送源码:Java+springboot+MySQL springboot 线上线下一体化的宠物交易 计算机毕业设计原创定制
  • 大语言模型在交通领域的应用分析
  • mysql知识点