Servlet常见接口功能介绍

1.init()接口

在Servlet实例化后,Servlet容器会调用init()方法来初始化该对象,主要是为了是Servelt对象在处理客户请求前可以完成一些初始化工作。如:建立数据库的连接,获取配置信息等。

init()方法在第一次创建的servlet时被调用,在后续每次用户请求时不在被调用。

2.Servlet()接口方法

Service()方法是执行实际任务的主要方法,Servlet容器(如:Tomcat)调用service()方法处理来自service()客户端的请求,并将格式化的响应协会到客户端,每次服务器接收到一个servlet请求时,服务器会生成一个新线程并调用服务。

一般service方法无需重写,其在HttpServlet中已经实现,根据请求方法名GET/POST调用doGet,doPos以及其他方法,也就是说service是用来转向的,故一般写servlet时只需要重写doget或dopost即可。

3.doGet和doPost()接口

根据HTTP的不同请求调用不同方法,如果HTTP得到一个来自URL的get请求,就会调用doGet()方法;如果得到的是一个POST请求,就会调用doPost()方法。

注意:在servlet中默认情况下,无论是get还是post提交都会经过service()方法来处理,然后转向到doGet或doPost方法。

4.destory()接口

当servlet容器检测到一个servlet对象应该从服务器中被移除时,会调用该对象的destroy()方法,以便Servlet对象释放它所使用的资源,保存数据到持久存储设备中,如将内存中的数据保存到数据库中、关闭数据库连接,停止后台线程等类似的清理功能。destory()方法,只会被调用一次。

5.getServletConfig()接口

getServletConfig()方法返回Servlet容器调用init()方法时传递给Servlet对象的ServletConfig对象,ServletConfig对象包含Servlet的初始化参数,研发人员可在Servlet配置文件web.xml中,使用<init-param>标签为servlet配置一些初始化参数。

6、getServletInfo()接口

getServletInfo()方法会返回一个Sring类型字符串,包括关于Servlet的信息。如:作者、版权等。

7、HttpRequestServlet()接口

在servlet API中,定义了一个HttpServletRequest类,它继承自ServletRequest类,HttpServletRequest对象专门用于封装HTTP请求信息,简称request对象。

8、HttpResponseServlet()接口

在Servlet API中,定义了一个HttpServletResponse类,继承SercletResponse类,HttpServletResponse对象专门用来封装HTTP响应信息,简称response对象。

Servlet容器会针对每次请求创建一个response对象,并把它作为参数传递给Servlet的service方法,Servlet处理请求后,会将响应信息封装到response对象中,并由容器解析后返回给客户端。

一个具体的Servlet项目中的实例代码如下:

package com.web.servlet;
​
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.rmi.server.ServerCloneException;
@WebServlet("/miracle")
public class IndexServlet implements Servlet {@Overridepublic void init(ServletConfig servletConfig) throws ServletException{ } //当Tomcat容器启动的时候,会自动进行初始化
​@Overridepublic ServletConfig getServletConfig() {return null;}
​@Overridepublic void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException { //throws ServletException表示抛出异常//这个方法用于处理用户请求String userName=servletRequest.getParameter("userName");  //获取浏览器用户输入的参数值servletResponse.setContentType("text/html;charset=utf-8"); //设置Servlet的编码类型是html,编码格式为utf-8,避免出现乱码PrintWriter writer =servletResponse.getWriter(); //获取io写入的方法if ("xt".equals((userName))){writer.println("可以访问");}else{writer.println("不可以访问");}writer.close();}
​@Overridepublic String getServletInfo() {return null;}
​@Overridepublic void destroy() {
​}
}

只要当我们看到这其中各种方法对应的功能是什么,即这篇文章的介绍效果达到。

如:看到 public void service()这个方法,我们知道这个方法是执行实际任务的,这个实例代码中service方法获取用户请求输入参数与xt比较,输出对应文字。

补充:Servlet处理HTTP请求流程

1、Servlet容器接收到来自客户端的HTTP请求后,容器会针对该请求分别创建一个HttpServletResquest对象和HttpServletReponse对象。

2、容器将HttpServletRequest对象和HttpServletReponse对象以参数的形式传入service()方法内,并调用方法。

3、在service()方法中Servlet通过HttpServletRequest对象获取客户端信息以及信息请求的相关信息。

4、对HTTP请求处理

5、请求处理完成后,将响应信息封装到HttpServletReponse对象。

6、Servlet容器将响应信息返回给客户端。

7、当Servlet容器将响应信息返回给客户端后,HttpServletRequest对象和HttpServletReponse对象被销毁。

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

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

相关文章

如何配置极狐GitLab Runner Cache 缓存

本文作者&#xff1a;徐晓伟 GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署极狐GitLab。 极狐GitLab Runner Cache 缓存 支…

第十五届蓝桥杯(Web 应用开发)模拟赛 3 期-大学组(被题目描述坑惨了)

目录 1.创意广告牌 2.原子化css 3.神秘咒语 4.朋友圈 5.美食蛋白揭秘 6.营业状态变更 7.小说阅读器 8.冰岛人 9.这是一个”浏览器“ 10.趣味加密解密 总结 1.创意广告牌 这个题目不多说了&#xff0c;只要知道这些css应该都能写出来&#xff0c;不会的平时多查查文…

C++第三弹---C++入门(下)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】 C入门 1、内联函数 1.1、概念 1.2、特性 2、auto关键字(C11) 2.1、类型别名思考 2.2、auto简介 2.3、auto的使用细则 2.3、auto不能推导的场景 …

【Axure视频教程】计算日期区间天数差

今天教大家怎么计算两个日期之间相差了多少天&#xff0c;本教程以输入框里填写日期区间为案例&#xff0c;输入日期后&#xff0c;点击等于按钮&#xff0c;就可以计算出两个日期之间相隔了多少天&#xff0c;如果开始日期大于结束日期&#xff0c;就会显示负多少天。具体效果…

探索Linux世界:基本指令(文件查看、时间相关、grep、打包压缩及相关知识)

今天继续介绍一些指令 文章目录 1.cat - 查看文件1.1输出重定向和追加重定向1.2指令echo 2.more 指令3.less - 逐页查看文本文件内容4.head- 显示文件开头部分内容5.tail - 显示文件末尾部分内容5.1输入重定向&#xff08;<&#xff09;5.2管道&#xff08;|&#xff09; 6.…

镭速教你如何解决大数据量串行处理的问题

大数据的高效处理成为企业发展的关键。然而&#xff0c;大数据量串行处理的问题常常困扰着许多企业&#xff0c;尤其是在数据传输方面。本文将探讨大数据量串行处理的常见问题&#xff0c;并介绍企业常用的处理方式&#xff0c;最后重点阐述镭速如何提供创新解决方案&#xff0…

吴恩达机器学习-未分级实验:过拟合(Overfitting)

解决过拟合 选择更多的数据选择特征&#xff08;特征选择&#xff09;减小参数大小&#xff08;归一化&#xff09; 目标 在本实验中&#xff0c;您将探索: 可能发生过拟合的情况一些解决方案 %matplotlib widget import matplotlib.pyplot as plt from ipywidgets import …

训练专门化的大型语言模型(LLM)现在更简单了

训练专门化的大型语言模型&#xff08;LLM&#xff09;现在更简单了 近年来&#xff0c;大型语言模型&#xff08;LLM&#xff09;的兴趣激增&#xff0c;但其训练需要昂贵的硬件和高级技术。幸运的是&#xff0c;通过先进的微调技术&#xff0c;如低秩适配&#xff08;LoRA&a…

無塵棉花棒:光電設備與光纖清潔的理想之選

在光電設備和光纖清潔用品的领域中&#xff0c;無塵棉花棒以其卓越的性能和特性&#xff0c;已然成為清潔設備端光纖插座的最佳選擇。它不仅具有出色的清潔效果&#xff0c;而且在使用過程中無棉絮、無矽&#xff0c;確保了清潔過程的高效和安全。 首先&#xff0c;無塵棉花棒…

Oracle数据库连接方式

在平时的开发和运维工作中经常会有连接数据库的需求&#xff0c;而连接Oracle数据库的方法有很多种&#xff0c;本文给大家介绍常用的3种方法。希望对大家有所帮助。 方法一&#xff1a;使用操作系统验证方式 $ sqlplus / as sysdba方法二&#xff1a;使用 easy connect 方式…

1261. 在受污染的二叉树中查找元素

1261. 在受污染的二叉树中查找元素 题目链接&#xff1a;1261. 在受污染的二叉树中查找元素 代码如下&#xff1a; /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(…

汽车行驶工况||汽车行驶工况构建|||工况导入AVL Cruise(附下载)

包含项目 NEDC——欧洲工况 CLTC-C——中国 CLTP-P——中国 JAP10——日本 等几十种工况&#xff0c;可导入其他工况至AVL cruise "在每一个级别的驾驶测试中&#xff0c;WLTP规程又设定了能够代表全球城市道路、高速公路、山路等路况条件下的测试规程。每个部分的测试时…

[数据湖iceberg]-hive集成数据湖读取数据的正确姿势

1 概述 Iceberg作为一种表格式管理规范&#xff0c;其数据分为元数据和表数据。元数据和表数据独立存储&#xff0c;元数据目前支持存储在本地文件系统、HMS、Hadoop、JDBC数据库、AWS Glue和自定义存储。表数据支持本地文件系统、HDFS、S3、MinIO、OBS、OSS等。元数据存储基于…

百度AI智能审核

一、介绍 百度内容审核平台&#xff08;Baidu Content Audit Platform&#xff09;是百度推出的一款用于进行内容审核的平台。该平台利用人工智能技术&#xff0c;对用户上传的各类内容进行审核和过滤&#xff0c;以实现内容的合规和安全&#xff0c;可以识别和过滤涉黄、涉政…

微信小程序云开发教程——墨刀原型工具入门(常用组件)

引言 作为一个小白&#xff0c;小北要怎么在短时间内快速学会微信小程序原型设计&#xff1f; “时间紧&#xff0c;任务重”&#xff0c;这意味着学习时必须把握微信小程序原型设计中的重点、难点&#xff0c;而非面面俱到。 要在短时间内理解、掌握一个工具的使用&#xf…

自己用的小笔记

1、由于服务器的环境老是坏掉&#xff0c;这里稍微记录一点。 cuda的下载地址&#xff1a; https://developer.nvidia.com/cuda-toolkit-archive 记得是驱动的问题&#xff0c;那么直接下载一个驱动放上去应该就可以 先离线下载吧&#xff0c;然后清理到老的&#xff0c;安装…

三款内衣洗衣机的性能较量:希亦、觉飞、鲸立谁的性能更胜一筹?

现在大多数的上班族&#xff0c;面临的都是早九晚六的工作&#xff0c;而且工作完下班回家还是面对各种各样的家务&#xff0c;特别是清洗需要换洗的洗衣&#xff0c;属实是有点辛苦了。可能很多人为了方便&#xff0c;每次洗衣服的都是把一堆衣服直接丢进洗衣机&#xff0c;直…

新手必看,不容错过的厨房装修设计趋势。福州中宅装饰,福州装修

厨房&#xff0c;这个家中最具烟火气息的地方&#xff0c;装修设计的重要性不言而喻。今天我们就来聊聊厨房装修设计的那些事儿&#xff0c;从传统到新趋势&#xff0c;让我们一起看看有哪些值得注意的地方。 传统篇 1. 地轨推拉门 在传统厨房装修中&#xff0c;地轨推拉门是…

【四】将vue部署到k8s中

准备dockerfile和jenkinsfile还有yml文件 因为我前三步将其他的都弄好了&#xff0c;我现在的目的只是为了简单部署上去&#xff0c;所以没做其他深入研究配置&#xff0c;我的简单代码&#xff1a;https://gitee.com/feiminjie/helloworldfront我准备的dockerfile # 使用官方…

Yakit爆破模块应用

yakit介绍 一款集成了各种渗透测试功能的集成软件。&#xff08;类似于burp&#xff0c;但我感觉他功能挺强大&#xff09; 爆破模块位置 按照下面图标点击 界面就是如下。 左侧可以选择爆破的类型&#xff0c;各种数据库http&#xff0c;ssh等都支持。 爆破参数 可以选择…