【JavaEE】_前端POST请求借助form表单向后端传参

目录

1. 前端POST请求借助form表单向后端传参

2. 关于parameter方法获取参数的优先性问题


前端向后端传参通常有三种方法:

第一种:使用GET请求的query string部分向后端传参:

本专栏中已经详述了前端使用GET请求的query string向后端传参的方法,

文章详情如下:

【JavaEE】_前端使用GET请求的queryString向后端传参-CSDN博客

第二种:使用POST请求的body部分向后端传参,并且body格式为form表单;

本篇介绍第二种方法;

1. 前端POST请求借助form表单向后端传参

对于POST请求,可以通过body部分来传递参数;

对于通过form表单的方式将POST请求的参数传递给后端来说,body部分的格式就是query string的格式,即form表单

此时请求报头部分有:Content-Type : application / x - www - form - urlencoded

现约定:前端构造这样的请求:

POST / postParameterContent-Type:x-www-form-urlencodedusername=zhangsan&password=123

服务器端.java文件如下:

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("/postParameter")
public class PostParameterServlet extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String username = req.getParameter("username");String password = req.getParameter("password");System.out.println("username=" + username);System.out.println("password=" + password);resp.getWriter().write("ok");}
}

 使用Postman按上述约定构造请求:

同时也可以打卡headers部分,postman已经帮我们设置好了:

发送请求后,可以看到客户端收到的响应如下:

查看服务器日志:

即服务器成功接收了客户端请求的body部分的参数;

2. 关于parameter方法获取参数的优先性问题

在本专栏介绍HTTP请求方法时已经提过:

POST请求通常没有query string部分,所以使用body部分传参;

而GET请求通常使用query string部分传参。

现假设某一POST请求既有query string部分,又有body部分,讨论其传参优先性问题:

.java文件如下:

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("/postParameter")
public class PostParameterServlet extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String username = req.getParameter("username");String password = req.getParameter("password");System.out.println("username=" + username);System.out.println("password=" + password);resp.getWriter().write("ok");}
}

使用Postman发送一个既含有query string也含有body的POST请求:

点击发送后,查看服务器端日志:

可见这两部分同时存在时,query string优先级相对更高;

但请注意,这种写法并非是标准行为,servlet并未承诺这种情况谁更优先,很有可能在其他版本的servlet上就会不符合上述验证。

并且,如果换成其他语言的其他框架,同样地,其运行结果不可预期;

在构造HTTP请求时,请尽量符合主流的习惯写法;

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

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

相关文章

在本地运行 LLMs 的 6 种方法

商业人工智能和大型语言模型 (LLM) 有一个很大的缺点:隐私。在处理敏感数据或专有数据时,我们无法从这些工具中获益。因此,我们需要了解如何在本地运行私人 LLM。开源模型提供了一种解决方案,但它们也有自己的挑战和优势。 设定期…

网安入门18-XSS(靶场实战)

HTML实体化编码 为了避免 XSS 攻击&#xff0c;会将<>编码为<与>&#xff0c;这些就是 HTML 实体编码。 编码前编码后不可分的空格 < (小于符号)< > (大于符号)> & (与符号)&amp;″ (双引号)&quot;’ (单引号)&apos;© (版权符…

计算机网络—ENSP常用指令

system-view ——用用户模式切换到系统配置模式 display this ——显示当前位置的设置信息&#xff0c;很方便了解系统设置 display 端口 ——显示端口的相关信息 shutdown ——当进入了一个端口后&#xff0c;使用shutdown可以关闭该端口 undo 命令 ——执行与命令相反的操作&…

微服务-商城订单服务项目

文章目录 一、需求二、分析三、设计四、编码4.1 商品服务4.2 订单服务4.3 分布式事务4.4 订单超时 商品、购物车 商品服务&#xff1a; 1.全品类购物平台 SPU:Standard Product Unit 标准化产品单元。是商品信息聚合的最小单位。是一组可复用、易检索的标准化信息的集合&#x…

[Flutter]设置应用包名、名称、版本号、最低支持版本、Icon、启动页以及环境判断、平台判断和打包

一、设置应用包名 在Flutter开发中&#xff0c;修改应用程序的包名&#xff08;也称作Application ID&#xff09;涉及几个步骤&#xff0c;因为包名是在项目的Android和iOS平台代码中分别配置的。请按照以下步骤操作&#xff1a; 1.Android Flutter工程中全局搜索替换包名 …

【Django】model模型—字段关联关系:多对多

多对多 例子&#xff1a;如果 Pizza 含有多种 Topping &#xff08;配料&#xff09; – 也就是一种 Topping 可能存在于多个 Pizza 中&#xff0c;并且每个 Pizza 含有多种 Topping。 from django.db import models# 配料 class Topping(models.Model):# ...passclass Pizza…

企业网络布局的新宠——SD-WAN

在数字化转型的浪潮下&#xff0c;企业对网络的需求日益复杂和多样化。面对分支机构间的协作需求和不断增长的网络流量&#xff0c;企业亟需一种更加高效、灵活且成本可控的组网方案。SD-WAN&#xff08;软件定义广域网络&#xff09;正是在这样的背景下应运而生&#xff0c;成…

【漏洞复现】大华智慧园区综合管理平台信息泄露漏洞

Nx01 产品简介 大华智慧园区综合管理平台是一款综合管理平台&#xff0c;具备园区运营、资源调配和智能服务等功能。该平台旨在协助优化园区资源分配&#xff0c;满足多元化的管理需求&#xff0c;同时通过提供智能服务&#xff0c;增强使用体验。 Nx02 漏洞描述 大华智慧园区…

FLIP27-Source

1.官方设计 1.1.分配读取拆分 Source通常有两个核心的部件&#xff1a;当前的Source接口就是用来创建SplitEnumerator和Reader的工厂类 SplitEnumerator: 分片发现和分配&#xff08;分片即文件、分区等&#xff09;&#xff0c;目前只运行一次&#xff08;应该可以重复调用…

主题公园保管资产难?三防加固平板对此说不!

主题公园是一个活跃&#xff0c;快节奏的环境&#xff0c;主题公园最重要的资产之一是他们的表演者和每天制作的节目。但是检查道具以及寻找服装的去向是一项艰巨的任务&#xff1b;如果没有适当的系统和流程&#xff0c;可能会导致资产损失和材料放错位置&#xff0c;最终导致…

【大厂AI课学习笔记NO.51】2.3深度学习开发任务实例(4)计算机视觉实际应用的特点

今天考试通过腾讯云人工智能从业者TCA级别的认证了&#xff01; 还是很开心的&#xff0c;也看不到什么更好的方向&#xff0c;把一切能利用的时间用来学习&#xff0c;总是对的。 我把自己考试通过的学习笔记&#xff0c;都分享到这里了&#xff0c;另外还有一个比较全的思维…

51单片机 wifi连接

一、基本概念 ESP8266是一款集成了WiFi功能的高性能芯片&#xff0c;广泛应用于物联网设备、智能家居、传感器网络等领域。以下是ESP8266的详细讲解&#xff1a; 1. 功能特点&#xff1a;ESP8266集成了TCP/IP协议栈&#xff0c;支持STA&#xff08;Station&#xff09;和AP&am…

15. QML中一些相关的图形效果汇总

1.说明 本篇博客主要记录一些在QML中&#xff0c;对图片进行操作的一些控件 2.示例代码 博客中用到的两张图片分别如下所示&#xff1a; 2.1 混合效果 效果展示&#xff1a; 相关代码&#xff1a; import QtQuick 2.2 import QtQuick.Window 2.1 import QtQuick.Cont…

npm install卡在sill idealTree buildDeps没有反应,安装失灵

我的是 这通常是由于证书颁发机构&#xff08;CA&#xff09;的证书已经过期&#xff0c;或者服务器上的证书没有及时更新。 更换 npm 仓库源&#xff1a;如果你正在使用淘宝的 npm 镜像&#xff08;registry.npm.taobao.org&#xff09;&#xff0c;可以尝试更换为官方的 npm…

Golang Defer 执行顺序

Golang Defer 执行顺序 1. defer的执行顺序 多个defer出现的时候&#xff0c;它是一个“栈”的关系&#xff0c;也就是先进后出。一个函数中&#xff0c;写在前面的defer会比写在后面的defer调用的晚。 代码示例&#xff1a; func TestDefer01(t *testing.T) {defer func1(…

手写JavaScript中的Promise.all方法(JS中Promise.all的执行过程)

简介&#xff1a; Promise.all是JavaScript中一种用于处理多个Promise对象的方法&#xff0c;该方法接收一个数组作为参数&#xff0c;并返回一个新的Promise对象。 这个新的对象会在所有Promise对象都成功解析后解析&#xff0c;解析的结果是一个数组&#xff0c;包含了所有P…

Groovy(第一节)关于 Groovy

目录 什么是 Groovy? Groovy 快捷方式 Groovy 的新增特性 关于闭包 动态的 Groovy

论文阅读:SOLOv2: Dynamic, Faster and Stronger

目录 概要 Motivation 整体架构流程 技术细节 小结 论文地址&#xff1a;[2003.10152] SOLOv2: Dynamic and Fast Instance Segmentation (arxiv.org) 代码地址&#xff1a;GitHub - WXinlong/SOLO: SOLO and SOLOv2 for instance segmentation, ECCV 2020 & NeurIPS…

< JavaScript技巧:如何优雅的使用 【正则】校验 >

文章目录 &#x1f449; 一、正则表达式的概念&#x1f449; 二、常见使用正则表达式的方法① RegExp 对象方法1. 创建 RegExp 对象的语法2. RegExp对象方法① compile(value)② exec(value)③ test(value)③ reg.toString() ② 支持正则表达式的 String 对象的方法1. search()…

飞天使-学以致用-devops知识点1-安装gitlabharbor

文章目录 rpm 安装gitlab页面配置配置secretsecret 查看信息-chatgpt回复 为项目配置webhook,等jenkins部署完毕后在配置卸载 harbor配置secret所有k8s集群节点安装信任 http rpm 安装gitlab # 下载安装包 wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitla…