servlet概述

1 什么是servlet?

  Servlet 是基于 Java 技术的 web 组件,容器托管的,用于生成动态内容。像其他基于 Java 的组件技术一样,Servlet 也是基于平台无关的 Java 类格式,被编译为平台无关的字节码,可以被基于 Java 技术的 web server动态加载并运行。

 

  Servlet是一种容器,有时候也叫做 servlet 引擎,是 web server 为支持 servlet 功能扩展的部分。客户端通过 Servlet 容器实现的请求/应答模型与 Servlet 交互。

 

2 什么是servlet容器?

 

  Servlet 容器是 web server application server 的一部分,提供基于请求/响应发送模型的网络服务,解码基于 MIME 的请求,并且格式化基于 MIME 的响应。 Servlet 容器也包含了管理 Servlet 生命周期。
Servlet 容器可以嵌入到宿主的 web server 中,或者通过 Web Server 的本地扩展 API 单独作为附加组件安装。Servelt 容器也可能内嵌或安装到包含 web 功能的 application server 中。
  所有 Servlet 容器必须支持基于 HTTP 协议的请求/响应模型,比如像基于 HTTPSHTTP over SSL)协议的请求/应答模型可以选择性的支持。容器必须实现的 HTTP 协议版本包含 HTTP/1.0 HTTP/1.1。

 

因为容器或许支持 RFC2616 (HTTP/1.1)描述的缓存机制,缓存机制可能在将客户端请求交给 Servlet 处理之前修改它们,也可能在将 Servlet 生成的响应发送给客户端之前修改它们,或者可能根据 RFC2616 规范直接对请求作出响应而不交给 Servlet 进行处理。
Servlet 容器应该使 Servlet 执行在一个安全限制的环境中。在 Java 平台标准版(J2SE, v.1.3 或更高) 或者Java 平台企业版(Java EE, v.1.3 或更高) 的环境下,这些限制应该被放置在 Java 平台定义的安全许可架构中。

 

比如,高端的 application server 为了保证容器的其他组件不受到负面影响可能会限制 Thread 对象的创建。


注意:Java SE 6 是构建 Servlet 容器最低的 Java 平台版本 。

 

3 一个典型的事件序列
1、客户端(如 web 浏览器)发送一个 HTTP 请求到 web 服务器;
2Web 服务器接收到请求并且交给 servlet 容器处理, servlet 容器可以运行在与宿主 web 服务器同一个进程中,也可以是同一主机的不同进程,或者位于不同的主机的 web 服务器中,对请求进行处理。
3servlet 容器根据 servlet 配置选择相应的 servlet,并使用代表请求和响应对象的参数进行调用。
4servlet 通过请求对象得到远程用户, HTTP POST 参数和其他有关数据可能作为请求的一部分随请求一起发送过来。 Servlet 执行我们编写的任意的逻辑,然后动态产生响应内容发送回客户端。发送数据到客户端是通过响应对象完成的。
5、一旦 servlet 完成请求的处理, servlet 容器必须确保响应正确的刷出,并且将控制权还给宿主 Web 服务器。
4 servlet接口

 

  Servlet 接口是 Java Servlet API 的核心抽象。所有 Servlet 类必须直接或间接的实现该接口,或者更通常做法是通过继承一个实现了该接口的类从而复用许多共性功能。目前有 GenericServlet HttpServlet 这两个类实现了 Servlet 接口。

 

  大多数情况下,开发者只需要继承 HttpServlet 去实现自己的 Servlet 即可。

  Servlet 基础接口定义了用于客户端请求处理的 service 方法。当有请求到达时,该方法由 servlet 容器路由到一个 servlet 实例。
Web 应用程序的并发请求处理通常需要 Web 开发人员去设计适合多线程执行的 Servlet,从而保证 service方法能在一个特定时间点处理多线程并发执行。(注:即 Servlet 默认是线程不安全的,需要开发人员处理多线程问题)
通常 Web 容器对于并发请求将使用同一个 servlet 处理,并且在不同的线程中并发执行 service 方法。

posted @ 2019-03-26 20:09  Joker_zou  阅读(174)  评论(0编辑  收藏  举报