本问题已经有最佳答案,请猛点这里访问。

HttpServletRequest request;

HttpServletResponse response;

public void doGet(HttpServletRequest request , HttpServlet response){

this.request = request;

this.response = response;

}

如果此servlet一次收到多个请求会发生什么?

我们遇到了响应不匹配的问题。 这是一个问题吗?

不要这样做。 真。 别。

这使得世界陷入了黑洞

了解servlet的工作原理:stackoverflow.com/questions/3106452/

您的Web应用程序容器仅加载一个servlet实例。

要编写线程安全的servlet,你几乎不应该使用实例变量。将请求和响应设置为实例变量是完全错误的。 servlet的实例不属于单个请求。

如果您需要将请求或响应的元素提供给其他方法,请将它们传递给这些方法。您不需要它们作为实例变量。

尝试编写一个没有实例变量的非平凡servlet; servlet必须在某些时候(即服务)将控制权委托给某事物。你的意思是不使用非线程安全的实例变量。

当然这是一个问题。 servlet是一个单例。相同的servlet实例用于处理对此servlet的所有请求。并且请求当然是同时处理的。这意味着如果你这样做,thread1将使用通常由thread2处理的请求和响应。

根据定义,Servlet不是单身人士。 Servlet API不会将特定Servlet类的创建限制为单个实例。 Container通常会为部署描述符中的每个servlet声明创建一个servlet实例。单例是一种设计模式,它将其类的对象的创建限制为1且仅为1。

它们不是GoF模式意义上的单例,但它们是有效的,因为servlet规范要求容器只为每个servlet声明实例化一个实例。单例不仅仅是GoF设计模式。你曾经使用像Spring或Guice这样的依赖注入框架吗?在这种情况下从未见过单身人士?

是的,我有。我试图与GoFs对单身人士的定义联系起来。并加上1为您的详细说明:)

所以你选择了一个特定的singleton定义,并决定servlet没有遵循这个特定的定义,因此不是单身人士?这就像说免费啤酒不是免费的,因为它甚至没有开源许可证。

引用Servlet规范

"每个请求和响应对象仅在servlet的服务方法范围内有效,或者在过滤器的doFilter方法范围内有效。容器通常是回收的

请求对象以避免请求对象的性能开销

创建。开发人员必须意识到维护对请求对象的引用

不建议在上述范围之外,因为它可能具有不确定性

结果。"

这与OPs问题没有太大关系。如果他在doGet()末尾使实例变量无效,则请求和响应对象的范围不会扩展到服务方法之外,但他仍然会遇到很大问题。

似是而非。但仍然。如果规范保证保存对这些对象的引用的不确定结果,为什么要这样做呢?

它并不保证任何类型。您可以根据需要保存任意数量的引用,只要您不在服务方法范围之外使用这些引用即可。您只需要以线程安全的方式执行此操作。例如,许多框架在ThreadLocal变量中存储对请求的引用。

我学会了,谢谢。实际上,这变成了一个争论,我不想进入。我批评你和我的。感谢您的所有澄清。

我没那样接受它。我只想捍卫自己的观点,就是这样。

发生的事情是,您的servlet立即变为不可重入,并且在第一次由多个客户端同时调用时肯定会失败。你不能这样做。

这肯定会产生问题,任何实例变量都是共享的,因为servlet是单例,因此将覆盖并发请求和响应对象。

这是一个问题,永远不建议将HttpServletRequest request / HttpServletResponse响应声明为实例变量。实际上Servlet正在实现单线程模型,这意味着只创建了一个servlet实例。每个请求都有一个线程。因此,如果它们有很多请求,则thr必须是多个线程,并且每个线程共享相同的servlet实例,这将导致数据不匹配或数据不一致问题。线程将在相同的实例上工作。

单线程模型!= singleton servlet。单线程模型正是模型(没有人使用因为它效率低下),它保证只有一个线程使用给定的servlet。

不建议使用"单线程实现"。它被弃用了。

-1;这个答案没有提供任何价值。其他人已经说过它的部分错误。

java servlet是单例吗_关于java:为什么apache servlet是单例?相关推荐

  1. java web开源项目源码_适合Java新手的开源项目集合——在 GitHub 学编程

    作者:HelloGitHub-老荀 当今互联网份额最大的编程语言是哪一个?是 Java!这两年一直有听说 Java 要不行了.在走下坡路了.没错,Java 的确在走下坡路,未来的事情的确不好说,但是瘦 ...

  2. java制作一个简单的画板_【Java】Thymeleaf一个简单示例

    Thymeleaf简单介绍 Thymeleaf是用来开发Web和独立环境项目的服务器端的Java模版引擎 Spring官方支持的服务的渲染模板中,并不包含jsp.而是Thymeleaf和Freemar ...

  3. java下列语句正确的是_下列Java语句中,不正确的一项是( )。

    [多选题]装卸搬运机械具有( )功能 [判断题]char[] str="abcdefgh"; ( ) [单选题]7.关于内部类,下列说法不正确的是( ). [单选题]下列关于Jav ...

  4. java语言中声明布尔型_【Java初探02】——Java语言基础

    本篇博文就Java语言的一些基本元素进行一些记录和阐述,主要讲解一下Java语言的一些基本构成元素和Java的主类结构. Java语言基础的大致组成 java主类结构 基本的数据类型 变量与常量 运算 ...

  5. 蓝桥杯java能用编译器1吗_学java的你,这些英文单词都掌握了吗?

    1.Abstract class 抽象类:抽象类是不允许实例化的类,因此一般它需要被进行扩展继承. 2.Abstract method 抽象方法:抽象方法即不包含任何功能代码的方法. 3.Anonym ...

  6. java jre 与jdk的区别_学习java却不知道JRE和JDK的区别?看完这篇文章,让你受益匪浅...

    JRE和JDK的区别? 1.JRE是Java运行时环境 . 它是运行已编译的Java程序所需的所有程序的包,包括Java虚拟机(JVM),Java类库, java命令和其他基础结构. 但是,它不能用于 ...

  7. java应用程序如何编译运作_开发Java应用程序的基本步骤是: 1 编写源文件, 2.编译源文件, 3.运行程序。_学小易找答案...

    [判断题]Java源文件中只能有一个类. [简答题]任务32:开关电源PCB 设计.docx [多选题]企业的收入具体表现为一定期间: [简答题]任务33:CPLD逻辑电路自制元件与封装.docx [ ...

  8. java写入文件中文乱码问题_解决Java写入UTF-8文件中文乱码问题

    最近需要从Java中输出UTF-8编码的XML文件,遇到了两次中文乱码问题.一是奇数个汉字出现乱码,二是写入文件的实际编码与XML声明的编码不符.经过几番折腾,终于解决这两个问题,也对Java的字符编 ...

  9. 学java用什么写比较好_学习Java需要什么基础,初学Java如何写好代码

    原标题:学习Java需要什么基础,初学Java如何写好代码 初学Java的同学时常会遇到这样的情况,跟着入门教程看过一遍,但需要自己写代码的时候却无从下手:写代码的时候时常会遇到不懂的地方,如果停下来 ...

  10. java 必须try catch的异常_【java基础之异常】死了都要try,不淋漓尽致地catch我不痛快!...

    @ 1.异常 1.1 异常概念 异常 :简单说就是不正常运行,最终导致JVM的非正常停止. 在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象.Java处 ...

最新文章

  1. SQL Server中如何识别、查找未使用的索引(unused indexes)
  2. AutoX无人车完成1亿美元A轮融资,东风汽车领投,阿里旗下基金入股
  3. android+java.lang.VerifyError
  4. 全局变量-基本代码演练
  5. C++ 自定义string类 重载相关运算符
  6. 企业邮件系统搭建-关于不能往yahoo,sina,hotmail地址发邮件的问题一
  7. PHP SOCKET SERVER 二
  8. poj 2231 Moo Volume 暴力一定超时啊
  9. 静态代码块与构造函数的作用
  10. oracle函数 length rpad lpad
  11. 用代码来模拟铁路售票系统,实现通过四个售票点发售某日某次列车的100张车票,一个售票点用一个线程表示
  12. android usb触摸驱动,Linux/Android——usb触摸屏驱动 - usbtouchscreen
  13. 怎样维修无图纸电路板?
  14. python计算目标文件夹中各文件的GC含量
  15. win10 如何修改 C:\Users\用户名文件夹
  16. js判断图片加载完成后再执行代码
  17. 读书笔记 《拆掉思维里的墙》
  18. R语言igraph软件包方法
  19. 创立达摩院,马云是想当武林盟主吗?
  20. 笨方法学习Python 习题19 函数和变量 ---学习记录

热门文章

  1. c程序预处理器的设计与实现_C预处理器-能力问题与解答
  2. oracle认证都需要考哪几个方面,Oracle OCP认证要通过哪些考试
  3. 文件上传java逻辑_Java 文件上传 实例
  4. tcp 发送 最大数据量_网络基础知识夯实总结(三):TCP协议
  5. python复数的实部和虚部都是整数嘛_Python学习笔记:从入门到放弃(2)基本语法...
  6. 数据字典简单例子_Python学习100天-Day14(数据分析篇-pandas02)
  7. 计算机C语言课交作业怎么交,第一份c语言作业
  8. java 生产者消费者代码_Java生产者和消费者代码
  9. 求求你,别再用wait和notify了!
  10. Oracle笔记:数据库启动的三个阶段