Servlet中常用的三大API

news2025/1/23 22:31:44

HttpServlet

我们写 Servlet 代码的时候,首先第一步就是先创建类,继承自 HttpServlet,并重写其中的某些方法。我们实际开发的时候主要重写 doXXX 方法,很少会重写 init / destory / service。

因为这一些方法的调用时机,称为“Servlet生命周期”。Servlet生命周期可被定义为从创建直到毁灭的整个过程。具体的可以看该文章:Servlet生命周期icon-default.png?t=N7T8http://t.csdnimg.cn/duZTC

通过Ajax来构造一个请求

我们先在WEBAPP目录下新建一个html文件。至于为什么要在这个目录下,这是tomcat规定的。不同的服务器有不同的规定。

先在html中引入一个jquery cdn的min版本的链接,再写ajax的部分。重新运行服务器就可以在控制台中看到这是一个get方法,并且通过修改type的值来修改运用的方法。

同时url就代表着路径,在这里是相对路径,也就是

这里同时也可以用绝对路径来表示。

HttpServletRequest

当 Tomcat 通过 Socket API 读取 HTTP 请求(字符串),并且按照 HTTP 协议的格式把字符串解析成 HttpServletRequest 对象。

通过stringBuilder来把结果的字符串拼接起来,可以看到每个方法的具体结果。

并且最后的querystring可以直接添加上去。

前端给后端传参

1.GET query string

在前端给后端传两个数字,一个是同学的studentid,一个是classid。

通过req.getParameter,query string键值对会自动被tomcat处理成形如Map这样的结构,后续就可以随时通过key来获取value了。

2.POST form

对于前端是form表单这样格式的数据,后端还是使用getParameter来获取。

 在前端完成代码,抓包看看具体的样子,并且在浏览器中输入10和20:

raw中清楚地看到form表单形成的样子。

在后端代码中与前端代码形成关联,通过req.getParameter来获取到具体的信息,这样后端就获取到了前端的信息。

form表单的信息传到tomcat服务器,tomcat构造req和resp对象,form表单中解析出来的值就存在于req对象中,通过getParameter拿到其中的值,再通过resp空对象编写响应,写回到tomcat,tomcat发响应给浏览器显示出来。

3.POST json

json是一种非常主流的数据格式,也是键值对结构。前端可以使用ajax的方式来构造出这个内容,更简单的方法就是使用postman直接构造~

例如,现在想要组织一个body:

{

classId:20,

studentId:10

}

可以使用postman直接构造出来相关的请求。

后端:

@WebServlet("/postParameter")
public class Myservlet_demo1 extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        int length = req.getContentLength();//定义需要从前端获取到多少字节的数据
        byte[] buffer = new byte[length];   //存到这样一个大小的数组中

        InputStream inputStream = req.getInputStream();//通过inputStream来获取到req的内容
        inputStream.read(buffer);                      //再通过read写到数组中

        String body = new String(buffer,0,length,"utf8");
        System.out.println("body = " + body);
        resp.getWriter().write(body);                  //最后再把这个构成String,打印出来

    }
}

最后打印出来,这样就拿到了前端的一段数据。

但是当前通过json传数据,服务器这边只是把整个body读出来,并没有按照键值对的方式来处理。使用第三方库如jackson就可以支持解析body的内容。

在maven仓库中找到Jackson

 把这个xml片段粘贴到pom.xml中就可以引入这个依赖。

此时用objectMapper.readValue就可以从body中读取出json的字符串。

根据第二个参数类对象创建Student实例,然后解析上述的json格式的字符串,处理成map键值对结构。遍历所有的键值对,看看键的名字和Student实例的哪个属性名字匹配就把对应的value设置到该属性中。最后返回该Student实例。

本质上来说,三种方式前端给后端传参数都是一样的,以前通过get和form表单的写法很多,现在通过json格式的更常见。

HttpServletResponse

核心方法:

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

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

相关文章

【链表OJ—链表的回文结构】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:…

Apache DolphinScheduler 3.1.9 版本发布:提升系统的稳定性和性能

🚀我们很高兴宣布,Apache DolphinScheduler 的最新版本 3.1.9 已正式发布!此版本在 3.1.8 的基础上进行了关键的 bug 修复和文档更新,共计修复了 14 个 bug 和改进了 3 个文档。 主要更新亮点 本次更新重点解决了以下几个关键问题…

《PCI Express体系结构导读》随记 —— 第I篇 第1章 PCI总线的基本知识(19)

接前一篇文章:《PCI Express体系结构导读》随记 —— 第I篇 第1章 PCI总线的基本知识(18) 1.4 PCI总线的中断机制 1.4.3 中断请求的同步 在PCI总线中,INTx信号是一个异步信号。所谓异步是指INTx信号的传递并不与PCI总线的数据传送…

SpringBoot 医药咨询系统

概述 智慧医药系统(smart-medicine)是一个基于 SpringBoot 开发的Web 项目。整体页面简约大气,增加了AI医生问诊功能,功能设计的较为简单。 开源地址 https://gitcode.net/NVG_Haru/Java_04 界面预览 功能介绍 游客功能介绍 …

现实世界中的人工智能:工业制造的 4 个成功案例研究

现实世界中的人工智能:工业制造的 4 个成功案例研究 从抓鸡翅到建立整个虚拟工厂,各种规模的制造商都利用人工智能以更快的速度、更低的成本和更低的风险生产更多的产品。 我们能否让工厂变得足够聪明,在发生故障之前告诉我们?我…

C语言实现关键字匹配算法(复制即用)

文章目录 前言功能要求运行截图全部代码 前言 无套路,均已上机通过,求个关注求个赞,提供答疑解惑服务。 功能要求 一份C源代码存储在一个文本文件中,请统计该文件中关键字出现的频度,并按此频度对关键字进行排序。要…

Kafka安装及简单使用介绍

🍓 简介:java系列技术分享(👉持续更新中…🔥) 🍓 初衷:一起学习、一起进步、坚持不懈 🍓 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正🙏 🍓 希望这篇文章对你有所帮助,欢…

政务大数据能力平台建设方案:文件全文30页,附下载

关键词:智慧政务解决方案,智慧政务建设,智慧政务服务平台,智慧政务大数据,数字政务一体化平台。大数据,政务大数据建设 一、智慧政务建设需求 1、政务服务需求:智慧政务建设需要满足人民群众的…

Jenkins 系列:Jenkins 安装(Windows、Mac、Centos)和简介

文章目录 简介发展历史应用场景 Jenkins 安装部署先决条件硬件要求软件包下载war 包部署linux 系统部署mac 系统部署windows 系统部署安装后基本配置解锁自定义 jenkins 插件创建用户配置更新站点 配置文件 简介 Jenkins前身是 Hudson,使用 java 语言开发的自动化发…

基于SpringBoot实现的前后端分离电影评分项目,功能:注册登录、浏览影片、热门影片、搜索、评分、片单、聊天、动态

一、项目介绍 本项目主要基于SpringBoot、Mybatis-plus、MySQL、Redis实现的影片评分项目。 本系统是前后端分离的,分别由三个子项目构成:java服务端、用户前端、管理员管理前端 关键词:springboot java vue mysql reids websocket 毕业设计…

【Leetcode】1154. 一年中的第几天

文章目录 题目思路代码 题目 1154. 一年中的第几天链接 思路 题目要求是给定一个字符串 date,它代表一个日期,采用标准的 YYYY-MM-DD 格式。需要计算这个日期是当年的第几天。 首先,我们可以通过字符串的索引来提取年、月和日的数值&…

python的pywebio库给孩子做加减法数学题

效果展示 程序执行后,打开浏览器,展示一些100以内的加减法混合运算的数学题并输入答案后判断对错,这样倒是省了买教材的钱了。 在题目下方的框中,输入答案,然后点击提交后, 会输出结果 pywebio库介绍 安装…

Resnet BatchNormalization 迁移学习

时间:2015 网络中的亮点: 超深的网络结构(突破1000层)提出residual模块使用Batch Normalization加速训练(丢弃dropout) 层数越深效果越好? 是什么样的原因导致更深的网络导致的训练效果更差呢…

计算机组成原理复习7

内存管理 文章目录 内存管理存储器概述存储器的分类按在计算机中的作用(层次)分类按存储介质分类按存取方式分类按信息的可保存性分类 存储器的性能指标存储容量单位成本存储速度:数据传输率数据的宽度/存储周期 存储器的层次化结构多级存储系…

【实用工具】vim常用命令

快速移动(上下左右箭头可替代) 左移 h 右移 l 下移 j 上移 K在本行操作 0 移动到本行行首 ^ 移动到本行的第一个不是 blank 字符 $ 移动到本行行尾 w 光标移动到下一个单词的开头 e 光标移动到下一个单词的结尾跨行移动光标 nG 光标定位到第n行的行首 gg 光标定位到第一行的…

SPI机制原理+使用

一、概述 SPI全称(Service Provider Interface),是JDK内置的一种服务提供发现机制;SPI机制提供了组件发现和注册方式,可以为应用程序提供灵活的插件机制, 主要原理:接口 反射 配置文件。 二、…

Visual Studio 2015 中 SDL2 开发环境的搭建

Visual Studio 2015 中 SDL2 开发环境的搭建 Visual Studio 2015 中 SDL2 开发环境的搭建新建控制台工程拷贝并配置 SDL2 开发文件拷贝 SDL2 开发文件配置 SDL2 开发文件 测试SDL2 开发文件的下载链接 Visual Studio 2015 中 SDL2 开发环境的搭建 新建控制台工程 新建 Win32 …

学习使用echats实现双刻度echarts双Y轴,左右Y轴数据的方法

学习使用echats实现双刻度echarts双Y轴&#xff0c;左右Y轴数据的方法 代码效果图 代码 <!--此示例下载自 https://echarts.apache.org/examples/zh/editor.html?cline-stack&langjs --> <!DOCTYPE html> <html lang"en" style"height: 10…

工业机器人与计算机技术:驱动现代工业变革

工业机器人与计算机技术&#xff1a;驱动现代工业变革 随着科技的飞速发展&#xff0c;工业机器人与计算机技术已经成为现代工业制造的核心驱动力。这两者之间的联系日益紧密&#xff0c;共同推动着工业生产的自动化、智能化和高效化。 一、工业机器人&#xff1a;从机械手臂…

以太坊代币标准解读及相关Dapp的搭建

文章目录 什么是以太坊代币标准1、什么是以太坊2、以太坊代币标准 同质化代币 Dapp 搭建1、MetaMask 的安装2、Ganache 的安装3、实现 ERC-20 代币协议4、前端页面的编写5、部署流程及操作演示 什么是以太坊代币标准 1、什么是以太坊 以太坊&#xff08;Ethereum&#xff09;是…