一、了解 Servlet 及 Servlet 容器

本文介绍了Servlet的基本概念,包括其作为JavaWeb组件的作用、Servlet容器的功能和工作原理,以及Servlet与CGI、Web框架和JavaEE的关系。重点提到了ServletAPI版本兼容性和注解处理。
摘要由CSDN通过智能技术生成

一、概述

1.1 什么是 Servlet

Servlet 是一个基于 Java 技术的 Web 组件,它被容器(Container)管理,并可以生成动态的内容。Servlet 本质上是 Java Class,这些 Class 可以被基于 Java 的 Web 服务器动态的加载和运行。容器(Container,也被称为 Servlet 引擎)是提供 Servlet 功能的 Web 服务器扩展。Servlet 通过一个被 Servlet 容器实现的 request / response 规范来与 Web 客户端交互。

1.2 什么是 Servlet 容器(Container)

Web 服务器(或者应用服务器)通过发送和响应请求、解码基于 MIME 的请求、格式化基于 MIME 的响应来提供网络服务,Servlet 容器就是它们的其中一个部分。Servlet 容器还包含并且管理 Servlet 的整个生命周期。

关于 MIME 的知识请参考:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Basics_of_HTTP/MIME_types

Servlet 容器可以构建到主机的 Web 服务器中,也可以作为一个附加的组件通过服务器的本地扩展 API 和服务器相连接。Servlet 还可以内置或者安装到启用 Web 功能的应用服务器中。

Servlet 容器必须至少支持 http 协议,对于基于 http 协议的其他协议(例如:https)可以选择支持或不支持。

1.3 例子说明

下面是一个典型的事件的序列:

  1. 客户端(例如:浏览器)连接到 Web 服务器并发送一个 HTTP 请求。

  2. 请求被 Web 服务器接收并由 Servlet 容器处理。对于处理请求的 Servlet 容器来说,它可以在与 Web 服务器相同的进程中运行,或者在与 Web 服务器同一个主机上的不同进程中运行,也可以在其他主机上运行,不妨碍处理客户端发送过来的请求。

  3. Servlet 容器将会根据其配置来决定调用哪一个 Servlet 来处理请求并相应内容。

  4. Servlet 使用请求对象来找出以下内容:

    • 客户端用户是谁
    • POST 请求的参数是什么
    • 其他相关的数据

    Servlet 执行代码编写的任何逻辑,并生成响应数据,通过 Response 对象发送回客户端。

  5. 一旦 Servlet 将 Request 处理完成,Servlet 容器在确保 Response 内容在适当的时候输出到响应流后,就会将控制权给回到 Web 服务器。

1.4 比较 Servlet 和其他技术

在功能上来说,Servlet 提供了比 CGI 程序更高级别的抽象,但是比 Web 框架(如 JavaServer Faces)提供的抽象级别要低。

与其他的服务器扩展机制相比,Servlet 有以下优势:

  • Servlet 大部分情况下比 CGI 脚本更快,因为它们使用不同的进程模型。
  • Servlet 使用的是被 Web 服务器支持的标准 API。
  • Servlet 有 Java 编程语言的所有优势,包括易用性开发和平台无关性(跨平台)。
  • Servlet 可以访问可用于 Java 平台的大量的 API。

1.5 Servlet 与 Java 平台企业版的关系

Java Servlet API 4.0 是 Java EE 中必需的 API。为了在 Java EE 环境中运行,Servlet 容器以及部署到其中的 Servlet 必须满足在 Java EE 中描述的额外的要求。

1.6 与 Java Servlet API 2.5 的兼容性

1.6.1 处理注解

在 Servlet 规范 2.5 版本中,在部署时 metadata-complete 仅影响注解的扫描。2.5 版本的 Servlet 规范中没有 web-fragments 的概念。到了 3.0 及之后的版本中,有了 web-fragments 的概念,metadata-complete 就影响指定的部署信息和 Web 片段的扫描。描述符的版本一定__不__要影响容器扫描注解。大多数容器的实现必须扫描在配置中支持的注解,除非额外指定 metadata-complete


本篇完。

Servlet 规范一开始读起来有些概念没有接触过就不理解,等以后多读几次再回来完善。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值