html与java接口,JavaWeb学习——Servlet相关的接口和类

JavaWeb学习——Servlet相关的接口和类

摘要:本文主要学习了Servlet相关的接口和类。

Servlet的接口和类

三种方式

实现Servlet有三种方式:

实现javax.servlet.Servlet接口。

继承javax.servlet.GenericServlet类。

继承javax.servlet.http.HttpServlet类。

实现Servlet接口

Servlet接口是最基础的接口,如果要使用Servlet,就要实现这个接口,或者继承其他已经实现了这个接口的类。

创建一个类并实现Servlet接口:

1 public class TestServlet implements Servlet {

2 @Override

3 public ServletConfig getServletConfig() {

4 return null;

5 }

6

7 @Override

8 public String getServletInfo() {

9 return null;

10 }

11

12 @Override

13 public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {

14 System.out.println("service()方法被执行……");

15 }

16

17 @Override

18 public void init(ServletConfig config) throws ServletException {

19 System.out.println("init()方法被执行……");

20 }

21

22 @Override

23 public void destroy() {

24 System.out.println("destroy()方法被执行……");

25 }

26 }

继承GenericServlet类

GenericServlet类实现并重写了Servlet接口的一些方法,使得程序员在开发的时候只需要关注service()方法的实现就好。

创建一个类并继承GenericServlet类:

1 public class TestServlet extends GenericServlet {

2 @Override

3 public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {

4 System.out.println("service()方法被执行……");

5 }

6 }

继承HttpServlet类

HttpServlet类继承了GenericServlet类,是对HTTP请求的特殊支持,由于开发的项目一般遵循HTTP协议,所以经常使用的是HttpServlet类。

在HttpServlet的service(HttpServletRequest, HttpServletResponse)方法会去判断当前请求是GET还是POST,如果是GET请求,那么会去调用本类的doGet()方法,如果是POST请求会去调用doPost()方法,这说明在子类中去重写doGet()或doPost()方法即可。

创建一个类并继承HttpServlet类:

1 public class TestServlet extends HttpServlet {

2 @Override

3 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

4 super.doGet(req, resp);

5 }

6

7 @Override

8 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

9 super.doPost(req, resp);

10 }

11 }

其他的接口和类

ServletConfig接口

代表当前Servlet的配置信息,封装了ServletContext对象和配置参数信息。

可以通过Servlet里面的getServletConfig()方法获取:

1 public ServletConfig getServletConfig();

常用方法:

1 public String getServletName();// 获取当前Servlet的友好名称。

2 public ServletContext getServletContext();// 获取ServletContext对象。

3 public String getInitParameter(String name);// 获取初始化参数,初始化参数可以在web.xml配置文件的标签里的标签里设置。

4 public Enumeration getInitParameterNames();// 获取全部初始化参数,初始化参数同样需要在web.xml配置文件的标签里的标签里设置。

ServletContext接口

代表当前Web应用,服务器为每个Web应用程序都创建一个对应的ServletContext对象,被所有客户端共享。当Web应用启动时自动创建,当Web应用关闭和重新启动、服务器关闭时都会造成ServletContext销毁。

可以通过ServletConfig里面的getServletContext()方法获取:

1 public ServletContext getServletContext();

常用方法:

1 public String getServletContextName();// 获取当前项目的名称。

2 public String getServerInfo();// 返回Servlet容器名称和版本号。

3 public ServletContext getContext(String uripath);// 通过路径获取ServletContext对象。

4 public String getContextPath();// 获取服务器上当前项目的相对目录。比如:/HelloWorld。

5 public String getRealPath(String path);// 得到指定文件的真实路径,从应用程序根目录开始。比如:TestServlet得到的是盘符:\文件夹\工作空间\项目名称\WebContent\TestServlet。

6 public Set getResourcePaths(String path);// 得到指定相对路径下的文件夹名和文件名,从应用程序根目录开始,指定路径必须以/开头。比如:/得到的是应用程序根目录下的内容。

7 public URL getResource(String path) throws MalformedURLException;// 得到指定相对路径下的地址,从应用程序根目录开始。比如:/得到的是jndi:/域名/项目名/。

8 public InputStream getResourceAsStream(String path);// 将指定文件转化为流以便读取,从应用程序根目录开始。比如:index.html可以获取到应用程序根目录下的index.html并转为流。

9 public RequestDispatcher getRequestDispatcher(String path);// 创建跳转到指定路径的转发器,从应用程序根目录开始,指定路径必须以/开头。

10 public RequestDispatcher getNamedDispatcher(String name);// 创建跳转到指定Servlet名的转发器,不需要也不能以/开头。

11 public String getInitParameter(String name);// 获取指定的初始化参数,初始化参数需要在web.xml配置文件的标签里设置。

12 public Enumeration getInitParameterNames();// 获取所有指定的初始化参数,初始化参数也需要在web.xml配置文件的标签里设置。

13 public boolean setInitParameter(String name, String value);// 设置初始化参数,效果同在web.xml配置文件的标签里设置的一样。

14 public Object getAttribute(String name);// 通过属性名获取属性对象。

15 public Enumeration getAttributeNames();// 获取全部属性名。

16 public void setAttribute(String name, Object object);// 设置属性名和属性对象。

17 public void removeAttribute(String name);// 通过属性名删除属性对象。

RequestDispatcher接口

RequestDispatcher实例对象是由Servlet引擎创建的,用于包装一个要被其他资源调用的资源,并可以通过其中的方法将客户端的请求转发给所包装的资源。

RequestDispatcher接口中定义了两个方法:forward()方法和include()方法。forward()和include()方法接收的两个参数,必须是传递给当前Servlet的service()方法的ServletRequest和ServletResponse对象,或者是对它们进行了包装的ServletRequestWrapper和ServletResponseWrapper对象。

可以通过ServletContext对象的getRequestDispatcher()方法和getNamedDispatcher()方法获取:

1 public RequestDispatcher getRequestDispatcher(String path);

2 public RequestDispatcher getNamedDispatcher(String name);

请求转发:

1 // 该方法用于将请求从一个Servlet传递到服务器上另外的Servlet、Jsp页面或者Html文件,由当前的Servlet发送给另一个Servlet,该方法必须在响应被提交给客户端之前调用。

2 // 在当前的Servlet中可以给请求设置属性,设置的响应头信息不回被忽略,但是设置的响应体信息可能会被忽略。

3 public void forward(ServletRequest request, ServletResponse response) throws ServletException, IOException;

请求包含:

1 // 该方法用于在响应中包含Servlet、Jsp页面或者Html文件,由当前的Servlet发送给客户端,必须要在当前Servlet中设置编码格式。

2 // 当前Servlet和要包含的资源都可以设置响应体,按先后顺序输出到客户端。

3 public void include(ServletRequest request, ServletResponse response) throws ServletException, IOException;

请求转发与请求包含比较:

请求转发大多是应用在Servlet中,转发目标大多是Jsp页面。

请求包含大多是应用在Jsp页面中,完成多页面的合并。

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

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

相关文章

delphi7 获取dll的类_跟我学Java内存管理----JMM精华终章(类加载器)

1 类加载器1.1 类的加载过程当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化。(1)加载就是指将class文件读入内存,并为之创建一个Class对象。任何类被使用…

php autoload静态,Composer 中自动加载 autoload_static 问题

看来不是我一个人遇到这个问题。IDE 报语法错误,$loader 在别的类里面使用了私有成员。但是这个代码可以运行。先说一下为什么会有autoload_static.php 这个文件,代码里面其实有说明。$useStaticLoader PHP_VERSION_ID > 50600 && !defined(…

huffman树_笃学不倦|c语言构造哈夫曼树哈夫曼编码

艾薇巴蒂!许久不见甚是想念,想必这”涨姿势”的时刻大家已经期待许久了!今天我们要共同学习的是c语言构造哈夫曼树-哈夫曼编码构造哈夫曼树首先,我们需要了解哈夫曼树是什么:相关知识点路径: 路径是指从一个…

推荐系统相关科技论文写作建议

如何写标题 1、用一句话概括你所做的工作; 2、字数忌长(尽可能不要超过20单词,40-60 字符比较合适); 3、考虑搜索引擎的影响,包含关键词。 4、例子 例子1:Enhancing slope one recommendation…

php 检查类,检查类是否已定义 - PHP 7 中文文档

(PHP 4, PHP 5, PHP 7)class_exists – 检查类是否已定义说明class_exists( string $class_name[, bool $autoload true] ) : bool检查指定的类是否已定义。参数class_name类名。名字的匹配是不分区大小写的。autoload是否默认调用 [__autoload](php7/language.oop5.autoload)…

python人工智能入门纳米学位_学习笔记(一) - 机器学习纳米学位

不久前我在Udacity报名了数据分析和机器学习两门纳米课程。之所以对这个感兴趣是因为关注人工智能方面的资讯有一段时间了,觉得这是未来的趋势,希望今后能够在这方面有所成绩。选择纳米课程是因为我觉得它与Udacity的免费教程有些区别:有专业…

睡眠音频分割及识别问题(一)

问题描述 通过手机App的录音功能,获得用户一整夜的睡眠音频,对睡眠音频进行分割,并对睡眠阶段进行判定。 (1)假设条件一:用户在相对安静的环境下进行睡眠,背景音可能会出现风声、雨声、汽车噪音…

discuz和php的关系,UCenter和Discuz!的关系

在论坛上经常见到一些站长朋友问:我论坛升级后,登录不上去了,提示密码不对;头像不显示了,显示叉烧包;注册、登录不了,提示内部错误等等。这些问题都有个共同点,就是Discuz!论坛本身和…

睡眠音频分割及识别问题(四)--YAMNet简介

简介 YAMNet模型是在 AudioSet 数据集(一个大型音频、视频数据集)上训练的音频事件分类器。 模型输入 该模型接收包含任意长度波形的float32一维张量或 NumPy数组,且满足范围[-1.0, 1.0]内的单声道16kHz样本。在内部,该算法将波…

oracle运行环境配置,oracle 环境配置开机自启动

环境:centos 6.5 oracle 11g自启动之前问题虚拟机里的oracle环境,每次重启完系统,用plsql developer连接,先是报错:无TNS监听程序解决方法是切换到系统的oracle用户,执行lsnrctl start,但是执行之前,因为O…

睡眠音频分割及识别问题(二)

输入 通过手机麦克风录制的任意长度睡眠声音。 输出 睡眠阶段曲线,该曲线可以反映出深度睡眠,浅度睡眠、REM睡眠、清醒各个阶段。 研究的核心问题 1、录制策略 (1)每隔10分钟录制一段睡眠音; 2、采用什么策略来…

睡眠音频分割及识别问题(三)

文献一:PANNs: Large-Scale Pretrained Audio Neural Networks for Audio Pattern Recognition [摘要] 音频模式识别是机器学习领域的一个重要研究课题,包括音频标注、声场景分类、音乐分类、语音情感分类和声音事件检测等多项任务。最近,神…

对应oracle生成java对象,Java学习笔记(十三)——通过Netbeans开发环境生成oracle数据库中表的对应hibernate映射文件...

【前面的话】身体慢慢已经快好了,感觉真好,哈哈。这篇文章要通过Hibernate对数据库进行操作,而Netbeans可以直接通过数据库逆向生成对应的映射文件。基础文章,选择性阅读。【步骤】1、 在netbeans中选择服务,点击数据库…

qt如何实现backspace的功能_如何实现知识星球列表拖拽功能

本 篇讲解一下如何实现在知识星球中星球列表的拖拽,各位可能都知道,我创建了一个星球【Hi Android】,所以最近使用这个软件比较多,之前也写过关于这个软件如何生成分享卡的文章,就是那篇文章有小伙伴建议我写一个星球的…

睡眠音频分割及识别问题(五)--YAMNet进一步分析

简介 YAMNet 是一个经过预训练的深度网络,可基于 AudioSet-YouTube 语料库 预测 521 种音频事件类别,并采用Mobilenet_v1深度可分离卷积架构。 输入 模型训练所使用的音频特征计算方式如下: 所有音频均重采样为 16 kHz 单声道。 通过长度…

vb.net调用oracle存储过程,vbnet2008连接oracle增删改查学习笔记(经典crud_含存储过程).doc...

vbnet2008连接oracle增删改查学习笔记(经典crud_含存储过程).doc 我的VBNETORACLE增删改查学习笔记(本源码在VBNET2008下测试通过)学习VBNET有一段时间了,之前一直学习VB60。过度到NET后发现与之前所学习的有了相当大的变化。于是将编程经常用到的增删改查代码提炼出…

睡眠音频分割及识别问题(六)--输入输出及方案讨论

简介 2021年7月13日,我和我的三个研究生一起拜访了玉米树,和王总等一起针对睡眠音频分割及识别问题进行了深入的讨论,达成了如下共识。 输入 由于保存整个晚上的睡眠音频所需要的存储空间过大,目前拟采用每隔30分钟&#xff08…

python文件独特行数_python——文件和数据格式化练习题:文件独特行数

描述 统计附件文件中与其他任何其他行都不同的行的数量,即独特行的数量。 问题分析 这道题是python123课程里面的一道题,我先说一下我的分析过程: 要实现问题找到不同行数,那就要用每一行分别和出它以外剩余所有行比较&#xff0c…

睡眠音频分割及识别问题(七)--接口输入输出讨论

简介 关于接口输入输出的讨论。 输入 1、音频文件路径,类型为:字符串; 2、预测多标签类型的排名,前n名,类型为:整型。 处理 1、将输入的音频分割为多个以1s为时间单位的音频片段; 2、利用P…

dhcp工具_网络分析之DHCP服务闯入QinQ二层隧道引发故障

一、Wireshark显示过滤器和QinQ二层隧道简述1.本段主要简述什么是Wireshark显示过滤器。显示过滤器是在现有的数据包中通过过滤条件,筛选想要查看的对象,不会丢失数据包,只是为了增强用户阅读而将一部分数据包隐藏起来。在“应用显…