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] 

转载于:https://www.cnblogs.com/panxuejun/p/6849214.html

servlet3.0理解相关推荐

  1. 【SpringBoot】SpringBoot拦截器实战和 Servlet3.0自定义Filter、Listener

    =================6.SpringBoot拦截器实战和 Servlet3.0自定义Filter.Listener ============ 1.深入SpringBoot2.x过滤器Fi ...

  2. 在tomcat上全手工部署Servlet3.0

    从头写java文件的方式,编译成CLASS文件,加强对SERVLET容器的理解. 稍后试试JAR和WAR包. 文件内容(跟以前用IDE的一样): HelloServlet.java: package ...

  3. 十八、泛型 l 注解 l Servlet3.0 l 动态代理 l 类加载器基础加强

    l 泛型 l 注解 l Servlet3.0 l 动态代理 l 类加载器 泛型 1 回顾泛型类 泛型类:具有一个或多个泛型变量的类被称之为泛型类. public class A<T> { ...

  4. (转)Servlet3.0下@WebFilter注解配置Filter

    Servlet3.0下@WebFilter注解配置Filter Filter(过滤器)主要对请求到达前进行处理,也可以在请求结束后进行处理,类似于链式.一个请求可以被多个过滤器拦截到,会依次进入各个F ...

  5. Servlet3.0 Test

    1. Servlet3.0 Test and Annotation used 你可以从tomcat7中lib文件夹中找到servlet-api.jar package com.goodfan.serv ...

  6. Servlet3.0 版本问题,以及Servlet3.0中Annotation的使用

    今天看到书上对于Servlet3.0的讲解,结合自身遇到的问题总结如下: 1.首先确定你使用的Servlet 的版本,查看版本的方式有两种: A  -在tomcat安装文件下\lib下的servlet ...

  7. 如何将低版本的myeclipse改造成可以使用servlet3.0的神器

    2019独角兽企业重金招聘Python工程师标准>>> 开发servlet3.0使用的环境一般为: IDE:MyEclipse 10+ JDK:JDK 1.6+ tomcat:tom ...

  8. Java自学手记——servlet3.0新特性

    servlet3.0出来已经很久了,但市场上尚未普遍应用,servlet3.0有三个比较重要的新特性:使用注解来代替配置文件,异步处理以及上传组件支持. 支持servlet3.0的要求:MyEclip ...

  9. Servlet3.0 multipart 文件上传技术

    Servlet3.0 javaConfig配置 传统的servlet都是在web.xml中配置,从Servlet 3.0开始提供了ServletContainerInitializer接口,允许使用代 ...

最新文章

  1. 电脑安装python步骤-python3.8下载及安装步骤详解
  2. 【C 语言】数据类型本质 ( 数据类型别名 | typedef 关键字 | 为复杂数据类型设置别名 | 为简单数据类型设置别名 )
  3. Oracle_11g_R2安装手册(图文教程)
  4. python requests 示例_Python Requests模块的简单示例
  5. 组态王中时间存access怎么存,组态王通过Access数据库起始截止日期查询方法
  6. 关键路径问题--完美版
  7. 暴力枚举也不能没有底线(洛谷P1003题题解,Java语言描述)
  8. 找到符合条件的索引_高频面试题:MySQL联合索引的最左前缀匹配原则
  9. 【英语学习】【Level 08】U03 My Choice L1 Good books are like good friends
  10. 小企业电脑如何组网_(完整版)中小型企业组网方案
  11. 怎样对齐文体框和图像按钮
  12. IBM存储扩展柜磁盘在线扩容(一)
  13. sop8封装尺寸图_IC封装原理及功能特性汇总
  14. excel撤销工作保护(忘记密码)
  15. native工具备份mysql数据库_Navicat Premium实现mysql数据库备份/还原
  16. Gmail终于对中文用户开放注册! update:2008.5.6
  17. MPLS 网络技术 — 组网方案
  18. 小学生必积累的名人名言汇总100条
  19. PostGIS的安装与初步使用
  20. 1002-过河卒-洛谷-luogu-动态规划dp

热门文章

  1. CentOS 7的安装
  2. spring boot 教程(二)模板依赖
  3. mysql数据库 安装后 闪_MYSQL数据库Mysql数据库安装完成后需要进行的6个后续操作...
  4. 指纹对比软件_杰恩世软件平台钢片AOI检测应用
  5. php脚本判断页面刷新,javascript判断网页是关闭还是刷新
  6. 评分卡模型开发(二)--用户数据异常值处理
  7. 计算机学硕考研复试编程能力,苏州大学计算机学硕专业考研复试真题
  8. 嵌入式系统——指令平均时钟数和运算速度MIPS计算
  9. odbc mysql server_使用MySQL ODBC进行MySQL和SQL Server转换
  10. Mysql自增id用完怎么办?