当前位置: 首页 > news >正文

Servlet规范

一、Servlet 规范的提出与制定机构

Servlet 规范是 Java 企业级 Web 开发的核心标准,其制定与演进由以下主体主导:

  1. 起源与早期制定
    • 提出者:最早由 Sun Microsystems(太阳微系统) 的工程师 Pavni Diwanji 主导设计,James Gosling(Java 之父) 早期提出概念雏形。
    • 首个版本Servlet 1.01997 年 6 月 正式发布,随 Sun 的 Java Web Server(JWS) 一同推出,是首个官方实现。
  2. 标准化与社区化(JCP 主导)
    • Servlet 2.2(1999 年) 开始,规范纳入 J2EE(Java 2 Platform, Enterprise Edition) 体系,由 JCP(Java Community Process,Java 社区流程) 主导标准化制定。
    • JCP 通过 JSR(Java Specification Request,Java 规范请求) 流程迭代版本,核心 JSR 如下:
      • Servlet 2.3/2.4/2.5:JSR 53 / JSR 154
      • Servlet 3.0:JSR 315
      • Servlet 3.1:JSR 340
      • Servlet 4.0:JSR 369
  3. 当前归属(Jakarta EE)
    • 2017 年后,Java EE 移交 Eclipse 基金会,更名为 Jakarta EE,Servlet 规范随之更名为 Jakarta Servlet,由 Eclipse 社区维护,最新稳定版为 Jakarta Servlet 6.0

二、Servlet 规范的核心内容

Servlet 规范是一套 接口、生命周期、交互规则与扩展机制 的集合,定义了 Java Web 应用Servlet 容器(如 Tomcat、Jetty、WebLogic) 之间的契约,核心内容如下:

1. 核心 API 接口(必须实现)

规范定义了一组标准接口,开发者实现这些接口即可编写 Web 组件,容器负责实例化与调度:

  • Servlet 核心接口
    • javax.servlet.Servlet:基础接口,定义 init()service()destroy() 生命周期方法。
    • javax.servlet.http.HttpServlet:HTTP 专用实现,封装 doGet()doPost()doPut()doDelete() 等 HTTP 方法处理逻辑。
  • 请求与响应对象
    • ServletRequest / HttpServletRequest:封装客户端请求(URL、参数、Header、Cookie、Session 等)。
    • ServletResponse / HttpServletResponse:封装服务端响应(状态码、Header、输出流、Cookie 等)。
  • 上下文与会话
    • ServletContext:代表整个 Web 应用的全局上下文,用于应用级数据共享、资源访问。
    • HttpSession:代表用户会话,用于跨请求存储用户状态。

2. 生命周期管理(容器必须遵守)

规范严格定义 Servlet 实例的创建、初始化、服务与销毁流程:

  1. 加载与实例化:容器启动(load-on-startup)或首次请求时,加载 Servlet 类并创建 单例实例(默认)。
  2. 初始化(init():实例创建后调用 init(ServletConfig),仅执行一次,用于初始化资源。
  3. 请求服务(service():每次请求到达,容器调用 service(),多线程并发执行,必须保证线程安全
  4. 销毁(destroy():容器关闭或应用卸载时调用,仅执行一次,用于释放资源。

3. 部署与配置规范

定义 Web 应用的打包、部署描述符与组件注册规则:

  • 打包格式:Web 应用必须打包为 WAR(Web Application Archive) 文件,遵循固定目录结构(WEB-INF/classesWEB-INF/libWEB-INF/web.xml)。
  • 部署描述符WEB-INF/web.xml(或注解)是核心配置文件,用于:
    • 注册 Servlet、Filter、Listener。
    • 配置 URL 映射(<url-pattern>)。
    • 初始化参数(<init-param>)。
    • 会话、安全、错误页面等全局配置。
  • 注解支持(3.0+):引入 @WebServlet@WebFilter@WebListener 等注解,可完全替代 web.xml

4. 扩展机制(Filter & Listener)

规范提供两大扩展点,实现请求拦截与事件监听:

  • Filter(过滤器)
    • 接口:javax.servlet.Filter,定义 init()doFilter()destroy()
    • 作用:在请求到达 Servlet 前、响应返回客户端后,执行统一逻辑(编码转换、权限校验、日志、压缩等),可组成过滤链。
  • Listener(监听器)
    • 监听 Web 应用生命周期事件:ServletContextListener(应用启动/销毁)、HttpSessionListener(会话创建/销毁)、ServletRequestListener(请求创建/销毁)等。
    • 作用:实现全局初始化、会话管理、资源清理等。

5. 线程模型与并发规则

  • 默认模型单实例多线程——每个 Servlet 仅一个实例,容器用线程池并发调用 service()成员变量非线程安全
  • 废弃模型SingleThreadModel 接口(已废弃),容器创建实例池,但无法彻底解决线程安全问题,且开销大。

6. 高级特性(3.0+ 版本新增)

  • 异步处理(Async Servlet):支持异步请求处理,释放容器线程,提升高并发场景吞吐量。
  • 可插拔性(Web Fragments):第三方库可通过 META-INF/web-fragment.xml 自动注册组件,无需修改主 web.xml
  • 文件上传(Multipart):原生支持 multipart/form-data 类型的文件上传,简化开发。
  • 非阻塞 I/O(3.1+):支持 ServletInputStream/ServletOutputStream 的非阻塞读写,适配长连接、WebSocket 等场景。
  • HTTP/2 支持(4.0+):适配 HTTP/2 协议,提升传输性能。

7. 安全规范

定义 Web 应用的安全约束:

  • 基于角色的访问控制(<security-constraint>)。
  • 登录配置(<login-config>,支持 FORM、BASIC、DIGEST 等认证方式)。
  • 数据保密(HTTPS 强制)。
http://www.jsqmd.com/news/472282/

相关文章:

  • 用Python手把手实现模拟退火算法:从理论到代码实战(附完整示例)
  • Flight.js终极指南:轻量级JavaScript框架在现代开发中的核心价值
  • LTCC带通滤波器,专为做气象雷达产品的客户量身定制
  • 终极指南:Jasminum插件数据备份与恢复的5个简单步骤,确保研究成果安全无忧
  • GStreamer插件全解析:从gst-inspect实战到自定义多媒体流水线搭建
  • 为什么选择SURF?5大特性让Go网络请求绕过99%的反爬虫机制
  • 智能充气泵PCBA充气解决方案
  • 移动端自动化测试案例梳理终极指南:10个关键步骤提升测试效率
  • 2026年3月江苏变压器/配电箱/动力柜/JP柜/光伏预制舱厂家综合分析 - 2026年企业推荐榜
  • 腾讯云大模型安全平台深度解析:LLM-WAF、AISPM与天御AIGC如何构建AI安全防线
  • Typora图片加载失败排查指南:从路径偏好到文件状态
  • Flight组件安全终极指南:防止XSS攻击的10个关键策略
  • 2026大专国际经济与贸易毕业后适合进入哪些岗位?
  • 实测对比后一键生成论文工具千笔写作工具 VS speedai,专科生写论文更省心!
  • 从挂科到满绩:我用这3个方法吃透软件工程考点(附真题题库)
  • DVWA靶场实战:3种CSP绕过技巧全解析(附真实攻击案例)
  • Apache Airflow动态DAG生成:编程式工作流创建
  • 2026动作捕捉技术前沿:这些企业实力不容小觑,倾角传感器/惯性测量单元(IMU)/激光雷达,动作捕捉源头厂家口碑推荐榜 - 品牌推荐师
  • 2026大专大数据科学专业需要考证吗?
  • MLIR:统一编译生态的“方言”革命
  • OpenWRT下利用rp-pppoe-server实现IPv4/IPv6双栈PPPoE服务配置详解
  • 终极指南:LibreSprite架构解析——10个核心模块设计奥秘与实现细节
  • Processing移动端适配终极指南:从触摸事件到响应式设计的完整解决方案
  • Navicat密码安全揭秘:如何保护和解密你的数据库连接信息
  • Flax Engine图形渲染系统深度剖析:从PBR到全局光照的终极指南
  • 高德地图点标记避坑指南:从基础Marker到高级LabelMarker的完整配置流程
  • 馈线自动化(FA)如何重塑现代配电网?核心价值与技术路径全解析
  • Unity游戏框架的终极演进:GameFramework未来5年技术趋势深度解析
  • 推荐五家一站式出海营销服务商:2026年海外社媒与品牌营销推广精选指南 - 品牌2026
  • 终极TanStack Virtual测试指南:构建可靠虚拟化组件的完整策略