JAVA Servlet API简介及接口与类的用法

本章介绍了Java Servlet API中的主要的接口与类的用法,并且介绍了它们的生命周期。表4-1 对接口与类的作用与生命周期作了归纳。这些接口与类的生命周期都由Servlet容器来控制,容器会在特定的时刻创建或销毁它们的实例。
表4-1 Servlet API中的主要的接口与类的作用和生命周期
接 口 与 类 作 用 生 命 周 期
Servlet 接口
GenericServlet 抽象类
HttpServlet 抽象类
(1)负责响应客户请求
(2)GenericServlet 是Servlet 接口的通用实现;而HttpServlet 提供了与HTTP

协议相关的实现
(1)对于多数Servlet,只有当客户端首次请求访问时,才会被容器初始化;对于少数被设置为在Web应用启动时就被初始化的Servlet,将在Web应用启动时
就被容器初始化
(2)当Web 应用被终止时,所有运行中的Servlet 都被销毁

ServletRequest 接口
HttpServletRequest 接口
(1)表示客户请求
(2)HttpServletRequest接口表示HTTP请求
(1)容器每次接收到来自客户端的要求访问特定Servlet 的请求,就会创建一个ServletRequest 对象,并把它传给客户所请求的Servlet
(2)当服务器端响应请求完毕,容器就会销毁ServletRequest 对象

 

接 口 与 类 作 用 生 命 周 期
ServletResponse 接口
HttpServletResponse 接口
(1)Servlet 通过ServletResponse 接口来生成响应结果
(2)Servlet 通过HttpServletResponse

接口来生成HTTP 响应结果


(1)容器每次接收到来自客户端的要求访问特定Servlet 的请求,就会创建一个ServletResponse 对象,并把它传给客户所请求的Servlet
(2)当服务器端响应请求完毕,容器就会销毁ServletResponse 对象

ServletConfig接口 包含了Servlet 的初始化参数信息,并且与当前Web应用的ServletContext对象关联
(1)当容器初始化一个Servlet 时,先创建一个ServletConfig 对象,使Servlet对象与这个ServletConfig对象关联
(2)当容器销毁Servlet 对象时,也会销毁与它关联的ServletConfig对象


ServletContext 接口 这是容器为每个Web 应用进行分配的大管家。Servlet 通过它来存取Web 应用范围内的共享数据,还可以通过它来访问Servlet 容器的各种资源
(1)当容器启动一个Web 应用时,会为它创建一个ServletContext 对象
(2)当容器终止一个Web 应用时,会销毁它的ServletContext 对象在Servlet接口中定义了3 个与生命周期相关的方法。


l init():当容器初始化Servlet时调用该方法。
l service():当客户端请求访问Servlet时,容器调用该方法。
l destroy():当容器销毁Servlet时调用该方法。
以本章4.1.7 节的例程4-4 的HelloServlet 类为例,在编写用于响应HTTP 请求的
Servlet时,通常涉及下列4 个步骤。
(1)扩展HttpServlet抽象类。
(2)覆盖HttpServlet的部分方法,如覆盖doGet()或doPost()方法。
(3)读取HTTP 请求信息,例如通过HttpServletRequest 对象来读取请求参数。
在HttpServletRequest中提供了以下用于检索参数信息的方法。
l getParameter(String name):返回与参数名name 对应的参数值。
l getParameterNames():返回一个Enumeration对象,它包含了所有的参数名信息。
l getParameterValues():返回一个Enumeration对象,它包含了所有的参数值信息。
(4)生成HTTP 响应结果。通过HttpServletResponse 对象可以生成响应结果,
HttpServletResponse 对象有一个getWriter()方法,该方法返回一个PrintWriter 对象。使
用PrintWriter 的print()或println()方法可以向客户端发送字符串数据流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/351860.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring框架的事务管理的基本概念

1. 事务:指的是逻辑上一组操作,组成这个事务的各个执行单元,要么一起成功,要么一起失败! 2. 事务的特性* 原子性* 一致性* 隔离性* 持久性3. 如果不考虑隔离性,引发安全性问题* 读问题:* 脏读:* 不可重复读:* 虚读:* 写问题:* 丢失…

python rest 框架_python-更新用户REST框架Django

我需要在REST框架中更新我的用户views.pyclass UserUpdate(APIView):permission_classes (permissions.IsAuthenticated,)def post(self,request):userUser.objects.get(idrequest.user.id)try:user_serializerUserSerializer(request.user,datarequest.data, partialTrue)if …

matlab将满足某一条件的矩阵元素置零

想把矩阵中小于100的元素置零&#xff0c;有两种方法&#xff1a; 方法一&#xff1a;S(S<100)0; 方法二&#xff1a;S(find(S<100))0; 原理&#xff1a; A [ 1 2; 3 4]; B (A>2) %找到大于2 的位置索引 B 0 0 1 1 %形成布尔矩阵 A(B)0 %将对…

linux nona怎么用_nano命令_Linux nano 命令用法详解:字符终端文本编辑器

nano是一个字符终端的文本编辑器&#xff0c;有点像DOS下的editor程序。它比vi/vim要简单得多&#xff0c;比较适合Linux初学者使用。某些Linux发行版的默认编辑器就是nano。nano命令可以打开指定文件进行编辑&#xff0c;默认情况下它会自动断行&#xff0c;即在一行中输入过长…

4g内存 堆内存分配多少_我需要多少内存

4g内存 堆内存分配多少什么是保留堆&#xff1f; 我需要多少内存&#xff1f; 在构建解决方案&#xff0c;创建数据结构或选择算法时&#xff0c;您可能会问自己&#xff08;或其他人&#xff09;这个问题。 如果此图包含1,000,000条边并且我使用HashMap进行存储&#xff0c;此…

centos下网络配置方法(网关、dns、ip地址配置)

centos网络配置实例 1&#xff0c;配置DNS vi /etc/resolv.conf 加入: 复制代码代码如下:nameserver 192.168.0.1 nameserver 8.8.8.8nameserver 8.8.4.42&#xff0c;配置网关&#xff1a; vi /etc/sysconfig/network 加入&#xff1a; GATEWAY192.168.0.1 完整的如下&#xf…

matlab的repmat函数

B repmat(A,m,n) 1.作用&#xff1a;将矩阵A的内容堆叠在mxn大小的矩阵B中 2.应用&#xff1a; Brepmat([1 2;3 4],3,2) B 1 2 1 2 3 4 3 4 1 2 1 2 3 4 3 4 1 2 1 2 3 4 …

Alias Method解决随机类型概率问题(别名算法)

举个例子&#xff0c;游戏中玩家推倒了一个boss&#xff0c;会按如下概率掉落物品&#xff1a;10%掉武器 20%掉饰品 30%掉戒指 40%掉披风。现在要给出下一个掉落的物品类型&#xff0c;或者说一个掉落的随机序列&#xff0c;要求符合上述概率。 一般人会想到的两种解法 第一种算…

centos mysql php tomcat_Linux 安装JDK Tomcat MySQL的教程(使用Mac远程访问)

一 环境阿里云服务器: CentOS 7.4 64位(基于RedHat)本机: macOS High Sierra二 压缩包三 文件传输输入SFTP命令连接 -> 输入实例登录密码sftp root公网IP上传put 本地文件 服务器路径下载get 服务器文件 本地路径四 远程访问输入SSH命令连接 ->输入实例登录密码ssh root公…

Java时间和日期指南

长期以来&#xff0c;正确处理日期&#xff0c;时间&#xff0c;时区&#xff0c;夏时制&#xff0c;and年等一直是我的烦恼。 本文并不是一个全面的指南时域&#xff0c;请参阅日期和时间在Java中 -更详细&#xff0c;但略有下降&#xff0c;ekhem&#xff0c;日期。 它仍然是…

Java项目打war包的方法

最近好忙好忙&#xff0c;整理下心情给大家分享下自己在工作中遇到的一点小技巧&#xff0c;希望给遇到同样麻烦的同学一点帮助。 我们知道Java项目打war包可以在Eclipse和MyEclipse工具中自动打包&#xff0c;就是右键&#xff0c;然后导出war包就可以了&#xff0c;可是我发现…

matlab 的cat函数

cat&#xff1a;用来联结数组 1、用法&#xff1a;C cat(dim, A, B) 按dim来联结A和B两个数组。 C cat(dim, A1, A2, A3, ...) 按dim联结所有输入的数组。 2、举例 acat(3,A,B) 左括号后的3表示构造出的矩阵维数&#xff1b;在新的矩阵中第1、2维就是A和B这两个矩…

charles抓取手机APP,配置正确却抓不到数据

1、确保电脑的防火墙是关闭状态 2、如果还是不行的话&#xff0c;把手机wifi断掉后重新连接 转载于:https://www.cnblogs.com/ding-daisy/p/10141843.html

composer查看当前镜像取消_国内全量镜像大全

# 国内全量镜像大全**配置文件.gitignore **json{"name": "topthink/think","description": "the new thinkphp framework","type": "project","keywords": ["framework","thinkphp&quo…

利用C语言创建和使用DLL文件

有感于讲C语言的DLL文件的文章很少&#xff0c;自己查了半天&#xff0c;写了这么个非常简单的教程。自己也是摸C语言不久&#xff0c;依然感觉处于编程苦手的阶段。1&#xff09;为什么使用DLL文件C语言复用代码有很多的形式&#xff0c;利用动态链接库&#xff08;DLL&#x…

vba判断文件编码格式_如何在VBA判断EXCEL或WORD文件已经打开,并用代码关闭

谢谢寻欢&#xff0c;原来核心就是GETOBJECT&#xff0c;特帖帮助内容&#xff0c;与大家分享&#xff1a;GetObject 函数示例该示例使用 GetObject 函数来获取对指定的 Microsoft Excel 的工作表 (MyXL) 的引用。它使用工作表的 Application 属性来显示或关闭 Microsoft Excel…

spring-service.xml 模板

ssm模板<?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xmlns:context"http://www.springframework.org/…

配置编译win7+VS2017+opencv4.0.1+contrib4.0.1

一、注意 1、opencv个各个版本并不是支持所有的VS版本&#xff0c;如opencv4.0.1支持vc14和vc15&#xff0c;而VS2013是vc12&#xff0c;配置起来会出错。 VS是一个集成开发环境&#xff0c;有不同的版本如VS2013&#xff0c;VS2015; vc是一个c的编译器&#xff0c;也有不同的…

scrapy立面parse_立面设计模式–设计观点

scrapy立面parse在上一篇文章中&#xff0c;我们描述了适配器设计模式 。 在今天的文章中&#xff0c;我们将介绍另一种类似的“四结构帮派”模式 。 顾名思义&#xff0c;结构模式用于从许多不同的对象形成更大的对象结构。 外观模式就是这样一种模式&#xff0c;它为系统内的…

[C++]在Visual Studio 2010中使用Google Test - 配置

我主要是想使用单元测试&#xff0c;VS2010是有自己的单元测试的&#xff0c;虽然我不抵触Microsoft的东西&#xff0c;但是自己做的非工业级的东西&#xff0c;去用Microsoft的解决方案是找罪受~所以使用了Google的测试方案。主要查阅了国外的一篇资料&#xff0c;虽然那位写得…