当前位置: 首页 > news >正文

【Java】HttpServlet类简单方法和请求显示

1、HttpServlet类简介🍀

Servlet类中常见的三个类有:☑️HttpServlet类,☑️HttpServletRequest类,☑️HttpResponse类

🐬其中,HttpServlet首先必须读取Http请求的内容。Servlet容器负责创建HttpServlet对象,并把Http请求直接封装到HttpServlet对象中,大大简化了HttpServlet解析请求数据的工作量💪

🐬使用HttpServlet类时,需要继承这个类、重写里面的方法并把重写的代码插入到Tomcat的既定流程当中

创建HttpServlet的步骤——“四部曲”

1)扩展HttpServlet抽象类; 
2)覆盖HttpServlet的部分方法,如覆盖doGet()或doPost()方法; 
3)获取HTTP请求信息。通过HttpServletRequest对象来检索HTML表单所提交的数据或URL上的查询字符串; 
4)生成HTTP响应结果。通过HttpServletResponse对象生成响应结果,它有一个getWriter()方法,该方法返回一个PrintWriter对象。

2、HttpServlet类中的方法

(1)常见方法

HttpServlet类中常见的方法如下🌟

方法方法作用说明
initservlet 被实例化之后,自动执行的方法.用来进行初始化工作这三个方法都不需要手动调用。Tomcat会在合适的时机,自动调用这三个方法
destoryServlet 被销毁之前,自动执行的方法.用来进行释放资源的操作
service每次收到 http 请求,就会自动执行的方法.处理请求, 计算响应(服务器的主逻辑)
doGet用于获取服务器信息,并将其做为响应返回给客户端根据请求的方法,被service调用
doPost用于客户端把数据传送到服务器端,Post适合发送大量的数据。
doDelete/doPut/doOptions用来处理一个HTTP DELETE操作,这个操作允许客户端请求从服务器上删除URL/这个操作自动地决定支持哪一种HTTP方法/操作包含请求体的数据,Servlet应该按照他行事

(2)验证doGet、doPost、doDelete

·postman

什么是postman?

在开发APP接口的过程中,一般接口写完之后,后端开发都会模拟调用一下请求。在用Postman之前,对于一般的get请求基本都会用浏览器来简单模拟。

Postman是一款支持http协议的接口调试与测试工具,具有功能强大、使用简单且易用性好的特点🚀

postman下载地址

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;@WebServlet("/method")
public class MethodServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("doGet-sys");resp.getWriter().write("doGet");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("doPost-sys");resp.getWriter().write("doPost");}@Overrideprotected void doDelete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("doDelete-sys");resp.getWriter().write("doDelete");}
}

·验证doGet方法

 控制台打印

·验证doPost

 

·验证doDelete 

 

3、返回请求内容

用StringBuilder来存储返回的请求内容并打印 

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Enumeration;@WebServlet("/show")
public class ShowRequestServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {StringBuilder stringBuilder = new StringBuilder();stringBuilder.append(req.getProtocol());//返回协议名stringBuilder.append("</br>");stringBuilder.append(req.getMethod());//返回使用的方法stringBuilder.append("</br>");stringBuilder.append(req.getRequestURI());//返回发送请求的URIstringBuilder.append("</br>");stringBuilder.append(req.getContextPath());//返回Context路径stringBuilder.append("</br>");stringBuilder.append(req.getQueryString());//返回请求的queryEnumeration<String> headernames = req.getHeaderNames();while (headernames.hasMoreElements()){String key = headernames.nextElement();String value = req.getHeader(key);stringBuilder.append(key + ":" + value);//返回query中的key和value}resp.setContentType("text/html;charset=utf8");resp.getWriter().write(stringBuilder.toString());}
}

使用浏览器打开,得到下面结果👏

使用postman,得到相同结果 

相关文章:

  • 什么是OSPF?为什么需要OSPF?OSPF基础概念
  • USRP相关报错解决办法
  • 为什么 macOS 比 Windows 稳定?
  • TDengine启动和连接问题
  • uniapp嵌套webview,无法返回上一级?
  • MySQL死锁场景与应对方案
  • 51单片机中断
  • java大数据hadoop2.9.2 Linux安装mariadb和hive
  • Baichuan2百川模型部署的bug汇总
  • OpenCV-Python(49):图像去噪
  • MySQL存储过程和触发器
  • Windows高级调试(学习笔记)-第二章-调试器介绍
  • 基于JavaWeb+SSM+Vue停车场微信小程序系统的设计和实现
  • ChatGLM vs ChatGPT
  • SPI 动态服务发现机制
  • ES6指北【2】—— 箭头函数
  • CentOS 7 修改主机名
  • Invalidate和postInvalidate的区别
  • Lucene解析 - 基本概念
  • Otto开发初探——微服务依赖管理新利器
  • PaddlePaddle-GitHub的正确打开姿势
  • php的插入排序,通过双层for循环
  • STAR法则
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • 代理模式
  • 你不可错过的前端面试题(一)
  • 区块链共识机制优缺点对比都是什么
  • 深度解析利用ES6进行Promise封装总结
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • 微信小程序实战练习(仿五洲到家微信版)
  • 温故知新之javascript面向对象
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (done) 两个矩阵 “相似” 是什么意思?
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • (转)jQuery 基础
  • (转载)(官方)UE4--图像编程----着色器开发
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • .NET 中让 Task 支持带超时的异步等待
  • .Net下使用 Geb.Video.FFMPEG 操作视频文件
  • /dev下添加设备节点的方法步骤(通过device_create)
  • [2009][note]构成理想导体超材料的有源THz欺骗表面等离子激元开关——
  • [2016.7 Day.4] T1 游戏 [正解:二分图 偏解:奇葩贪心+模拟?(不知如何称呼不过居然比std还快)]
  • [AX]AX2012 SSRS报表Drill through action
  • [C#]OpenCvSharp结合yolov8-face实现L2CS-Net眼睛注视方向估计或者人脸朝向估计
  • [C++从入门到精通] 14.虚函数、纯虚函数和虚析构(virtual)
  • [CSAWQual 2019]Web_Unagi ---不会编程的崽
  • [Effective C++读书笔记]0012_复制对象时勿忘其每一部分
  • [hadoop读书笔记] 第十五章 sqoop1.4.6小实验 - 将mysq数据导入HBASE
  • [hdu4622 Reincarnation]后缀数组