Servlet — 线程安全问题
Servlet可以同时处理多个请求,但servlet是单例的,不管发生多少次请求,只会创建一次servlet实例。
那么多个请求之间共用同一个Servlet实例,就需要考虑线程安全问题。
用户相关的信息,绝对不能用用成员变量,建议使用局部变量
// 成员变量String loginname = "";protected void service(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {//响应出去的代码是什么类型response.setContentType("text/html");//内容响应到浏览器使用utf-8编码response.setCharacterEncoding("UTF-8");PrintWriter out = response.getWriter();loginname = request.getParameter("loginname");// 睡眠10秒try {Thread.sleep(10000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();} out.println("欢迎["+loginname+"]登录");out.flush();out.close();}
造成这样的原因就是因为:
我们使用了成员变量
String loginname = “”;
所以说新来的用户又把之前的用户ID给覆盖掉了,代码如下:
PrintWriter out = response.getWriter();
oginname = request.getParameter(“loginname”);
Servlet — 线程安全问题相关推荐
- Servlet功能实现和执行过程、servlet的生命周期、Servlet线程安全问题、Servlet的三种映射方式、ServletConfig、ServletContext
1. 什么是Servlet? Servlet是SUN公司提供的一套规范,名称就叫Servlet规范,它也是JavaEE规范之一. 第一:Servlet是一个运行在web服务端的java小程序 第二:它 ...
- IT兄弟连 JavaWeb教程 Servlet线程安全问题
2019独角兽企业重金招聘Python工程师标准>>> 在Internet中,一个Web应用可能被来自西面八方的客户并发访问(即同时访问),而且有可能这些客户并发访问的是Web应用中 ...
- javaweb学习总结二十三(servlet开发之线程安全问题)
一:servlet线程安全问题发生的条件 如果多个客户端访问同一个servlet时,发生线程安全问题,那么它们访问的是相同的资源.如果访问 的不是相同资源,则不存在线程安全问题. 实例1:不会产生线程 ...
- servlet单实例多线程 ---线程安全问题是由实例变量造成的,只要在Servlet里面的任何方法里面都不使用实例变量,那么该Servlet就是线程安全的。(所有建议不要在servlet中定义成员变
Servlet 单例多线程 Servlet如何处理多个请求访问? Servlet容器默认是采用单实例多线程的方式处理多个请求的: 1.当web服务器启动的时候(或客户端发送请求到服务器时),Servl ...
- 关于java Servlet,Struts,springMVC 的线程安全问题
2019独角兽企业重金招聘Python工程师标准>>> 现在主流的java的前端框架有:struts1,struts2,springmvc 还有最根本的servlet; 前些天一个朋 ...
- Servlet的生命周期和线程安全问题
目录 Servlet简介 Servlet 架构图 Servlet 任务 Servlet的生命周期 init() 方法 service() 方法 doGet() 方法 doPost() 方法 destr ...
- Servlet的线程安全问题
文章目录 Servlet的线程安全问题 引入 Servlet的多线程机制 如何修复 1.实现 SingleThreadModel 接口 2.避免使用成员变量 3.同步对共享数据的操作 思考与小结 参考 ...
- Servlet 的线程安全问题
Servlet 的线程安全问题 在 Servlet 中使用的是多线程方式来执行 service()方法处理请求,所以我们在使用 Servlet 时需要考虑到线程安全问题,在多线程中对于对象中的成员变量 ...
- struts2学习笔记--线程安全问题小结
在说struts2的线程安全之前,先说一下,什么是线程安全?这是一个网友讲的, 如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码.如果每次运行结果和单线程运行的结果是一样 ...
- 深入研究Servlet线程安全性问题
摘 要:介绍了Servlet多线程机制,通过一个实例并结合Java 的内存模型说明引起Servlet线程不安全的原因,给出了保证Servlet线程安全的三种解决方案,并说明三种方案在实际开发中的取舍. ...
最新文章
- vs2017引入mysql_windows+vs2017+C语言 引入mysql.h对MYSQL数据库的操作
- 为.Net程序集添加资源
- Li‘s 影像组学视频学习笔记(28)-ROI/病灶体积的计算、Li‘s have a solution and plan.
- 如何将 Linux 系统转移至 LVM 卷
- 收藏 | 使用 Mask-RCNN 在实例分割应用中克服过拟合
- 阿里重启维护Dubbo了
- php截取字符串,无乱码
- mysql学习day03——02
- php单独使用blade模板引擎,laravel 基础教程 —— Blade 模板引擎
- PHP编写添加学生信息,添加学生信息并显示(示例代码)
- SYN flooding
- 12:Linux日常运维技巧-1
- 如何使用HTML5+CSS3绘制一个QQ 企鹅Logo
- swing重写右上角叉号
- shell 获取当月最后一天的方法
- 火狐浏览器Firefox上DownThemAll插件
- 寂静和静寂_静寂的意思
- H.265屏幕编码技术
- 聊聊编程语言学习之路
- 世界杯的历史也是一部科技史