Servlet细节

目录

 

1 Servlet 是否符合线程安全?

2 Servlet对象的创建时间?

3 Servlet 绑定url 的写法

3.1 一个Servlet 可以绑定多个url

3.2 在web.xml 配置文件中 url-pattern写法


 

1 Servlet 是否符合线程安全?

答案:不安全

判断一个线程是否安全?条件是 是否存在共享元素【全局变量】

举例

因为一个类型的Servlet只有一个实例对象,那么就有可能会现时出一个Servlet同时处理多个请求,那么Servlet是否为线程安全的呢?答案是:“ 不是线程安全的 ”。这说明Servlet的工作效率很高,但也存在线程安全问题!

所以我们不应该在Servlet中便宜创建成员变量,因为可能会存在一个线程对这个成员变量进行写操作,另一个线程对这个成员变量进行读操作。

2 Servlet对象的创建时间?

通过之前的学习,我们知道想要创建Servlet 对象,必须要满足两个条件

  • 首先要启动tomcat服务器
  • 其次要使用浏览器通过url访问Servlet,服务器创建Servlet 对象

在之前的博客中,有提到使用注解@WebServlet("url")【一般来说 :url:  /.... 的方式】 形式关联我们创建的Servlet 比在xml配置文件中添加,更加方便 。

但当浏览器访问时,通过url直接或间接 找到Servlet ,这里有个问题。第一次访问Servlet 时,等待时间比较长!在这里我称这种行为是:第一次惩罚。

注意

1 Servlet 和url 路径,本质上是映射的关系。我们可以通过url 找到与它匹配的Servlet

  • 我们可以理解成map集合中的key-value 键值对的

2 这里的“直接”的意思是:我们指定启动服务器的首页,刚好是要访问的Servlet 的前端页面

3 这里的“间接”的意思是:我们没有指定,而是手动在浏览器的搜索栏中输入和Servlet 匹配的路径,去访问

有什么方式,可以加快Servlet的创建速度,节省创建所需要的时间?

答案:让服务器在启动时就创建Servlet

假设这里我是AServlet 操作

应该怎么做呢?

解决办法

  • 在xml配置文件中添加    <load-on-startup> 数字</load-on-startup>    
  •  @WebServlet 注解上添加

1 在xml配置文件中添加    <load-on-startup> 数字</load-on-startup>    

   <load-on-startup>数字</load-on-startup>	
<servlet><servlet-name>AServlet</servlet-name>
<!--        对应在AServle中的路径:包名.类名--><servlet-class>fs.AServlet</servlet-class><init-param>
<!--            初始化参数--><param-name>key</param-name><param-value>value</param-value></init-param><load-on-startup>1</load-on-startup></servlet>

这样我就把Servlet的创建提前到服务器启动的时候。

启动服务器:

c87a57d9a4be4e18a2c657e8580b6ddf.png

2@WebServlet 注解上添加

注意:使用注解时,要把之前在xml配置文件上的添加url 的标签,要注释掉,否则会报错

原因:问题出在 @WebServlet 注解的使用上。具体来说,错误提示表明存在两个不同的 Servlet 类都尝试映射到同一个 URL 模式 /a

@WebServlet(value = "/a", loadOnStartup = 1)

5319888208104e2fb229a6acaa479310.png

注意

在这里value ,是不能被省略的。原因是只有一个参数时,value可以被省略,其余的不能被省略

3 Servlet 绑定url 的写法

3.1 一个Servlet 可以绑定多个url

注意:但这种方式不推荐

我们一般在@WebServlet 注解的使用

@WebServlet({"/a", "/aa"})

eb6694720fee4b828a61006055d79f06.png

运行

使用/a

2697b2787ebe4180a26755086add3dc3.png

使用/aa

注意:我们第一次访问时创建了AServlet对象,因此之后的访问中,不会再创建该对象,之后调用service()方法

b679669e1e0249cea17fa0423bc467c8.png

fd763b3e0900464f8fe6087cdb2a334a.png

3.2 在web.xml 配置文件中 url-pattern写法

  • 精确匹配:/字符串
  • 借助通配符 *
  • 匹配所有:/*
  • 前缀匹配:/abc/*
  • 后缀匹配:*/.后缀名

 

 

 

 

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

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

相关文章

VisionPro 机器视觉案例 之 凹点检测

第十六篇 机器视觉案例 之 凹点检测 文章目录 第十六篇 机器视觉案例 之 凹点检测1.案例要求2.实现思路2.1 方式一&#xff1a;斑点工具加画线工具加点线距离工具2.2 方法二 使用斑点工具的结果集边缘坐标的横坐标最大值ImageBoundMaxX2.3 方法三 使用斑点工具的结果集凹点结果…

SAP 零售方案 CAR 系统的介绍与研究

前言 当今时代&#xff0c;零售业务是充满活力和活力的业务领域之一。每天&#xff0c;由于销售运营和客户行为&#xff0c;它都会生成大量数据。因此&#xff0c;公司迫切需要管理数据并从中检索见解。它将帮助公司朝着正确的方向发展他们的业务。 这就是为什么公司用来处理…

手搓人工智能—聚类分析(下)谱系聚类与K-mean聚类

“无论结果如何&#xff0c;至少我们存在过” ——《无人深空》 前言 除了上一篇手搓人工智能-聚类分析&#xff08;上&#xff09;中提到的两种简单聚类方式&#xff0c;还有一些更为常用、更复杂的聚类方式&#xff1a;谱系聚类&#xff0c;K-均值聚类。 谱系聚类 谱系聚类…

【c语言】文件操作详解 - 从打开到关闭

文章目录 1. 为什么使用文件&#xff1f;2. 什么是文件&#xff1f;3. 如何标识文件&#xff1f;4. 二进制文件和文本文件&#xff1f;5. 文件的打开和关闭5.1 流和标准流5.1.1 流5.1.2 标准流 5.2 文件指针5.3 文件的打开和关闭 6. 文件的读写顺序6.1 顺序读写函数6.2 对比一组…

视频质量评价SimpleVQA

目录 一、研究意义例子 二、介绍三、文章解读3.1 论文动机3.2论文思路3.3方法3.3.1网络框架3.3.2公式解读3.3.3核心创新3.3.4理解 &#xff01;&#xff01;&#xff01;作者对模型的改进本人算法框体视频抽帧美学特征提取网络&#xff1a;3.3.5实验细节&#xff1a; 四、代码复…

【真实场景面试问题-2】

1 介绍一下低功耗设计手段–clock gating 和 clock domain&#xff1b; 芯片的低功耗设计尤其是在关注能耗的场景&#xff1a;移动设备、物联网和嵌入式系统&#xff1b;时钟门控&#xff08;Clock Gating&#xff09;和时钟域&#xff08;Clock Domain&#xff09;是两种常用…

c++编程玩转物联网:使用芯片控制8个LED实现流水灯技术分享

在嵌入式系统中&#xff0c;有限的GPIO引脚往往限制了硬件扩展能力。74HC595N芯片是一种常用的移位寄存器&#xff0c;通过串行输入和并行输出扩展GPIO数量。本项目利用树莓派Pico开发板与74HC595N芯片&#xff0c;驱动8个LED实现流水灯效果。本文详细解析项目硬件连接、代码实…

《白帽子讲Web安全》13-14章

《白帽子讲Web安全》13-14章 《白帽子讲Web安全》13-14章13、应用层拒绝服务攻击13.1、DDOS简介13.2、应用层DDOS13.2.1、CC攻击13.2.2、限制请求频率13.2.3、道高一尺&#xff0c;魔高一丈 13.3、验证码的那些事儿13.4、防御应用层DDOS13.5、资源耗尽攻击13.5.1、Slowloris攻击…

Linux—进程概念学习-03

目录 Linux—进程学习—31.进程优先级1.1Linux中的进程优先级1.2修改进程优先级—top 2.进程的其他概念3.进程切换4.环境变量4.0环境变量的理解4.1环境变量的基本概念4.2添加环境变量—export4.3Linux中环境变量的由来4.4常见环境变量4.5和环境变量相关的命令4.6通过系统调用获…

pikachu文件上传漏洞通关详解

声明&#xff1a;文章只是起演示作用&#xff0c;所有涉及的网站和内容&#xff0c;仅供大家学习交流&#xff0c;如有任何违法行为&#xff0c;均和本人无关&#xff0c;切勿触碰法律底线 目录 概念&#xff1a;什么是文件上传漏洞一、客户端check二、MIME type三、getimagesi…

从零开始学GeoServer源码(二)添加支持arcgis切片功能

文章目录 参考文章环境背景1、配置打包好的程序1.1、下载GeoServer的war包1.2、下载GeoWebCache1.3、拷贝jar包1.4、修改配置文件1.4.1、拷贝geowebcache-arcgiscache-context.xml1.4.2、修改geowebcache-core-context.xml1.4.3、修改geowebcache-servlet.xml 1.5、配置切片信息…

学习日志016--python实现双向循环列表与链栈

python中一些复合数据结构通过类的封装来实现的。双向循环链表与链栈也在其中。 双向循环链表 双向循环链表是一种特殊类型的链表&#xff0c;它结合了双向链表和循环链表的特点。在双向循环链表中&#xff0c;每个节点不仅包含数据&#xff0c;还持有指向前一个和后一个节点的…

【自动化Selenium】Python 网页自动化测试脚本(上)

目录 1、Selenium介绍 2、Selenium环境安装 3、创建浏览器、设置、打开 4、打开网页、关闭网页、浏览器 5、浏览器最大化、最小化 6、浏览器的打开位置、尺寸 7、浏览器截图、网页刷新 8、元素定位 9、元素交互操作 10、元素定位 &#xff08;1&#xff09;ID定位 &…

微软Ignite 2024:建立一个Agentic世界!

在今年的Microsoft Ignite 2024上&#xff0c;AI Agent无疑成为本次大会的重点&#xff0c;已经有十万家企业通过Copilot Studio创建智能体了。微软更是宣布&#xff1a;企业可以在智能体中&#xff0c;使用Azure目录中1800个LLM中的任何一个模型了&#xff01; 建立一个Agent…

嵌入式linux系统中图像处理基本方法

目录 2.1 BMP图像处理 2.1.1 BMP文件格式解析 2.1.2 代码实现:将BMP文件解析为RGB格式,在LCD上显示 2.2 JPEG图像处理 2.2.1 JPEG文件格式和libjpeg编译 2.2.2 libjpeg接口函数的解析和使用 2.2.3 使用libjpeg把JPEG文件解析为RGB格式,在LCD上显示 …

探索 GAN 的演变之路

2014 年&#xff0c;在论文Generative Adversarial Networks中&#xff0c;首次提出了 GAN&#xff0c;其核心思想是“生成”与“对抗”。GAN 由一个生成器 G(Generator)和一个判别器 D(Discriminator)构成&#xff0c;前者用于捕捉数据分布&#xff0c;后者用于判别某个样本是…

Vue实训---5-路由搭建

回顾之前的代码 我们在my-vue-project\src\router\index.js中的代码如下&#xff1a; // 什么是路由&#xff1f;路由就是url地址和组件的对应关系 // 1.引入vue-router import { createRouter, createWebHashHistory } from vue-router// 2.定义路由 const routes [{path: …

【GAMES101笔记速查——Lecture 19 Cameras,Lenses and Light Fields】

本章节内容&#xff1a;相机、棱镜、光场 计算机图形学的两种成像方法&#xff1a; 1.合成方法&#xff1a;光栅化、光线追踪&#xff08;展示出现实没有的东西&#xff09; 2.捕捉方法&#xff1a;相机&#xff08;捕捉现实已有的东西&#xff09; 目录 1 相机 1.1 针孔相…

MacOS系统上Jmeter 录制脚本遇到的证书坑位

一、JMeter介绍与安装 1&#xff0c;下载及安装 jmeter官网地址 二、录制百度链接https请求时&#xff0c;需要导入jmeter相关证书到macos系统的更目录中. 导入方式&#xff0c;直接拖入mac的系统中&#xff0c;始终新人就可以&#xff1b; 三、jmeter 创建相关的录制组件…

软件团队的共担责任

问责制被认为是个人与其社会系统之间的纽带&#xff0c;它创造了一种将个人与其行为和绩效联系起来的身份关系。在入门系列的第一篇文章《超越工具和流程&#xff1a;成功软件开发团队的策略》中&#xff0c;我们介绍了问责制的概念&#xff0c;并提出了以下定义&#xff1a; …