1.servlet是用Java编写的服务器端程序,服务器端程序,服务器端程序。

2.Servlet运行于支持Java的应用服务器中。spring mvc有自己的实现servlet

从原理上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。

3.

在 Web 应用程序中,一个 Servlet 在一个时刻可能被多个用户同时访问。这时 Web 容器将为每个用户创建一个线程来执行 Servlet。如果 Servlet 不涉及共享资源的问题,不必关心多线程问题。但如果 Servlet 需要共享资源,需要保证 Servlet 是线程安全的。
下面是编写线程安全的 Servlet 的一些建议:
(1)用方法的局部变量保存请求中的专有数据。对方法中定义的局部变量,进入方法的每个线程都有自己的一份方法变量拷贝。任何线程都不会修改其他线程的局部变量。如果要在不同的请求之间共享数据,应该使用会话来共享这类数据。
(2)只用 Servlet的成员变量来存放那些不会改变的数据。有些数据在 Servlet 生命周期中不发生任何变化,通常是在初始时确定的,这些数据可以使用成员变量保存,如数据库连接名称、其他资源的路径等。
(3)对可能被请求修改的成员变量同步。有时数据成员变量或者环境属性可能被请求修改。当访问这些数据时应该对它们同步,以避免多个线程同时修改这些数据。
(4)如果 Servlet 访问外部资源,那么需要同步访问这些资源。例如,假设 Servlet 要从文件中读写数据。当一个线程读写一个文件时,其他线程也可能正在读写这个文件。文件访问本身不是线程安全的,所以必须编写同步访问这些资源的代码。在编写线程安全的 Servlet 时,下面两种方法是不应该使用的:
(1)在 Servlet API 中提供了一个 SingleThreadModel 接口,实现这个接口的 Servlet 在被多个客户请求时一个时刻只有一个线程运行。这个接口已被标记不推荐使用。
(2)对 doGet() 或doPost() 方法同步。如果必须在 Servlet 中使用同步代码,应尽量在最小的代码块范围上进行同步。同步代码越小,Servlet 执行得才越好。[4] 

最新文章

  1. 浅谈一下关于使用css3来制作圆环进度条
  2. 利用反射,泛型,静态方法快速获取表单值到Model
  3. 把 表拷贝到test测试数据库
  4. 如何在Eclipse中配置Tomcat
  5. 最小生成树------Prim算法
  6. 【开源java游戏框架libgdx专题】-01-libgdx介绍
  7. Maven Jrebel 多模块热部署方案
  8. Javascript—①你好,世界!
  9. Java如何按空格读取内容
  10. [C++ Primer Plus] 第5章、循环和关系表达式(一)程序清单——指针自加减优先级
  11. Android 内存溢出解决方案(OOM) 整理总结<转>
  12. PHP + Nginx 在 Linux(centos7)系统下的环境搭建
  13. 在c语言中嵌入汇编语句,对于我来说相当难。
  14. Guava之FluentIterable使用示例
  15. 【Android】java.lang.RuntimeException: java.lang.Throwable: A WebView method was called on thread 'JavaBridge'.
  16. shell脚本中对简单实现对log的处理
  17. kafka学习之-配置详解
  18. 4、2支持向量机SVM算法实践
  19. C#使用DirectShow播放视频文件 [转]
  20. [转载]循规蹈矩:快速读懂SQL执行计划的套路与工具

热门文章

  1. Mac上搭建android环境:Android Studio+GreenVPN
  2. POJ3185 The Water Bowls 反转(开关)
  3. poj 2135 Farm Tour 【无向图最小费用最大流】
  4. ADODB.RecordSet常用方法查询
  5. Django学习案例一(blog):一. 创建project、app
  6. 11.javaweb国际化标签库
  7. 【从零开始】【Java】【3】改造成多模块项目
  8. C#的split函数分割
  9. CorelDRAW三十周年庆典暨2019新耀发布会,诚邀您的莅临!
  10. Dynamics CRM Online 快速的debug 方法