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.mzph.cn/diannao/59524.shtml

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

相关文章

Jest项目实战(1):JavaScript 库设计原则及最佳实践

JavaScript库设计 在开始项目实战之前,我们先来介绍一下在设计开源库的时候有哪些原则以及最佳实践。 函数的设计 函数包含三要素: 函数名参数返回值 函数名 函数通常表示做一件事情,因此函数名一般为一个动词或者表示动作的短语&#…

HTML 基础标签——分组标签 <div>、<span> 和基础语义容器

文章目录 1. `<div>` 标签特点用途示例2. `<span>` 标签特点用途示例3. `<fieldset>` 标签特点用途示例4. `<section>` 标签特点用途示例5. `<article>` 标签特点用途示例总结HTML中的分组(容器)标签用于结构化内容,将页面元素组织成逻辑区域…

hpp文件的使用

提示&#xff1a;文章 文章目录 前言一、背景二、过程2.1 编写代码2.3 问题探究 总结 前言 前期疑问&#xff1a; 本文目标&#xff1a; 一、背景 最近突然看到hpp文件&#xff0c;查了百度也没有hpp文件怎么写的说明&#xff0c;自己就试着写了下&#xff0c;写成功了。 而…

NPU 可不可以代替 GPU

结论 先说结论&#xff0c;GPU分为可以做图形处理的传统意义上的真GPU&#xff0c;做HPC计算的GPGPU和做AI加速计算的GPGPU&#xff0c;所以下面分别说&#xff1a; 对于做图形处理的GPU&#xff0c;这个就和NPU 一样&#xff0c;属于DSA&#xff0c;没有替代性。当然&#xf…

java: 题目:银行账户管理系统

题目&#xff1a;银行账户管理系统 设计一个简单的银行账户管理系统。要求实现以下功能&#xff1a; 1. 创建一个银行账户 BankAccount 类&#xff0c;该类具有以下属性&#xff1a;accountNumber&#xff08;账户号码&#xff0c;类型为 String&#xff09; balance&#xff…

2024年无线领夹麦克风十大品牌推荐,衣领麦克风哪个品牌好

声音&#xff0c;是沟通的桥梁&#xff0c;是信息的载体。在信息爆炸的时代&#xff0c;如何让自己的声音脱颖而出&#xff0c;成为了每个人都需要思考的问题。无线领夹麦克风&#xff0c;以其小巧便携、无线传输的特点&#xff0c;成为了众多声音爱好者的首选。市场上无线领夹…

【C++的vector、list、stack、queue用法简单介绍】

【知识预告】 vector的介绍及使用list的介绍及使用list与vector的对比stack的介绍和使用queue的介绍和使用priority_queue的介绍和使用 1 vector的介绍及使用 1.1 vector的介绍 vector是表示可变大小数组的序列容器和数组类似&#xff0c;vector也采用连续存储空间来存储元…

杨传辉:云+AI 时代的一体化数据库|OceanBase发布会实录

在 2024 OceanBase 年度发布会 上&#xff0c; OceanBase CTO 杨传辉进行了主题为《云和 AI 时代的一体化数据库战略思考》的演讲&#xff0c;本文为演讲实录&#xff0c;欢迎阅读。 视频观看可点击&#xff1a;https://www.oceanbase.com/video/9001825 各位 OceanBase 的客…

[大模型]视频生成-Sora简析

参考资料&#xff1a; Sora技术报告https://openai.com/index/video-generation-models-as-world-simulators/4分钟详细揭密&#xff01;Sora视频生成模型原理https://www.bilibili.com/video/BV1AW421K7Ut 一、概述 相较于Gen-2、Stable Diffusion、Pika等生成模型的前辈&am…

【docker入门】docker的安装

目录 Centos 7 添加docker 官方仓库到yum源 将 Docker 的官方镜像源替换为国内可以的 Docker 镜像源 安装docker 配置docker加速源 Ubuntu 创建 gpg key 目录 下载 gpg key 添加国内可用镜像源到 系统的 APT 仓库中 安装docker 配置加速源 Centos 7 添加docker 官方仓…

2024年【汽车修理工(高级)】考试总结及汽车修理工(高级)试题及解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 汽车修理工&#xff08;高级&#xff09;考试总结是安全生产模拟考试一点通总题库中生成的一套汽车修理工&#xff08;高级&#xff09;试题及解析&#xff0c;安全生产模拟考试一点通上汽车修理工&#xff08;高级&a…

vscode的一些使用心得

问题1&#xff1a;/home目录空间有限 连接wsl或者remote的时候&#xff0c;会在另一端下载一个.vscode-server&#xff0c;vscode的插件都会安装进去&#xff0c;导致空间增加很多&#xff0c;可以选择更换这个文件的位置 参考&#xff1a;https://blog.csdn.net/weixin_4389…

Qt(openCV的应用)

1. OpenCV简介 OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个开源的计算机视觉库&#xff0c;它提供了丰富的图像处理和计算机视觉功能。该库由英特尔公司发起&#xff0c;并在 BSD 许可证下发布&#xff0c;因此它是免费的&#xff0c;且开放源代…

【大语言模型】ACL2024论文-06 探索思维链COT在多模态隐喻检测中的应用

【大语言模型】ACL2024论文-06 探索思维链COT在多模态隐喻检测中的应用 目录 文章目录 【大语言模型】ACL2024论文-06 探索思维链COT在多模态隐喻检测中的应用目录摘要研究背景问题与挑战如何解决创新点算法模型1. 知识总结模块&#xff08;Knowledge Summarization Module&…

Kubernetes中的statefulset控制器

华子目录 statefulset控制器功能StatefulSet的组成部分 问题复现示例statefulset示例总结 statefulset控制器 功能 Statefulset是为了解决有状态服务的问题设计的StatefulSet将应用状态抽象成了两种情况拓扑状态&#xff1a;应用实例必须按照某种顺序启动。新创建的Pod必须和…

【Android】时区规则库tzdata更新

1 背景&#xff1a; 最近我遇到墨西哥城时区&#xff0c;会出现夏令时&#xff0c;而墨西哥城在2022年底都已经取消夏令时了。 看起来是要更新RK3588上的时区库&#xff0c;我的还是2021a&#xff0c;而现在都已经2024年了 这样能看版本号&#xff1a; cat /system/usr/sha…

【论文速看】DL最新进展20241106-图像分类、图像分割、时间序列预测

目录 【图像分类】【图像分割】【时间序列预测】 【图像分类】 [2024 解耦数据增强] Decoupled Data Augmentation for Improving Image Classification 机构&#xff1a;腾讯优图 论文链接&#xff1a;https://arxiv.org/pdf/2411.02592v1 代码链接&#xff1a;无 最近在图…

[MRCTF2020]PYWebsite1

如果输入的密钥是对的那么我们就直接跳转到flag.php页面 那么我们直接访问&#x1f60e;&#xff0c;他不带我们去我们自己去. 那就用XFF呗. 知识点&#xff1a; 定义&#xff1a;X-Forwarded-For是一个HTTP请求头字段&#xff0c;用于识别通过HTTP代理或负载均衡方式连接到W…

穿越文化与时空的回响——从廖问洁《红豆诗词选》看当代人文情怀

穿越文化与时空的回响 ——从廖问洁《红豆诗词选》看当代人文情怀 在快节奏的现代生活中&#xff0c;我们时常感到身心的疲惫&#xff0c;渴望找到一种能够洗涤内心的方式。而廖问洁的《红豆诗词选》就如同一股清泉&#xff0c;为我们带来了心灵的洗礼和慰藉。 这位来自94年的…

【sqlmap使用手册-持续更新中】

SQLMap 简介 SQLMap 是一个开源的渗透测试工具&#xff0c;用于自动化检测和利用 SQL 注入漏洞。它支持多种数据库&#xff0c;包括 MySQL、PostgreSQL、Oracle、SQL Server 等。 可以通过以下命令安装sqlmap git clone https://github.com/sqlmapproject/sqlmap.git最常用的…