【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.rhkb.cn/news/265399.html

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

相关文章

源聚达电商:抖音上的店铺评分是真的吗

在数字时代的浪潮中,抖音不仅是年轻人展示才华的舞台,也成为了商家营销的新阵地。然而,随着商业活动的增多,一个值得探讨的问题浮现出来:抖音上的店铺评分是否真实可靠? 抖音店铺的评分系统,理论上是对商家…

环境分析检测小剂量移液用耐受硝酸盐酸PFA材质吸管特氟龙移液枪枪头

PFA枪头,为移液枪专业定制,广泛用于ICP-MS、ICP-OES等痕量分析以及同位素分析等实验室。地质、电子化学品、半导体分析测试、疾控中心、制药厂、环境检测中心等一些机构少量移液用。 规格参考:0.1-0.2ml、1ml、2ml、5ml、10ml等。 目前部分规格可适配普…

MiKTeX安装后,Latex编译后PDF无法预览,是灰色的

解决方式删掉编译器就可以, 即删掉MiKTeX MiKTeX安装后会将编译器默认修改为MiKTeX,这个时候会显示报错,简单粗暴的方式是删掉MiKTeX软件

Opencv实战(3)详解霍夫变换

霍夫变换 Opencv实战系列指路前文: Opencv(1)读取与图像操作 Opencv(2)绘图与图像操作 文章目录 霍夫变换1.霍夫线变换1.1 原理1.2 HoughLines() 2.霍夫圆变换2.1 原理2.2 HoughCircles() 最基本的霍夫变换是从黑白图像中检测直线(线段) 霍夫变换(Hough Transform…

流模型 Flow 超详解,基于 Flow 的生成式模型,从思路到基础到公式推导到模型理解与应用(Flow-based Generative Model)

参考文献: [1] Dinh L, Krueger D, Bengio Y. Nice: Non-linear independent components estimation[J]. arXiv preprint arXiv:1410.8516, 2014. [2] Dinh L, Sohl-Dickstein J, Bengio S. Density estimation using real nvp[J]. arXiv preprint arXiv:1605.08803…

java反射底层原理,java面试基本知识

正文 ZooKeeper 很流行,有个基本的疑问: ZooKeeper 是用来做什么的?之前没有ZK,为什么会诞生 ZK? OK,解答一下上面的疑问:(下面是凭直觉说的) ZooKeeper 是用于简化分…

【软件测试】--功能测试4-html介绍

1.1 前端三大核心 html:超文本标记语言&#xff0c;由一套标记标签组成 标签&#xff1a; 单标签&#xff1a;<标签名 /> 双标签:<标签名></标签名> 属性&#xff1a;描述某一特征 示例:<a 属性名"属性值"> 1.2 html骨架标签 <!DOC…

【HarmonyOS】鸿蒙开发之Video组件——第3.7章

Video组件内VideoOptions属性简介 src&#xff1a;设置视频地址。currentProgressRate&#xff1a;设置视频播放倍速&#xff0c;参数说明如下&#xff1a; number|string&#xff1a;只支持 0.75 &#xff0c; 1.0 &#xff0c; 1.25 &#xff0c; 1.75 &#xff0c; 2.0 。P…

ArcgisForJS如何将ArcGIS Server发布的点要素渲染为热力图?

文章目录 0.引言1.ArcGIS创建点要素2.ArcGIS Server发布点要素3.ArcgisForJS将ArcGIS创建的点要素渲染为热力图 0.引言 ArcGIS For JS 是一个强大的地理信息系统&#xff08;GIS&#xff09;工具&#xff0c;它允许开发者使用 JavaScript 语言来创建各种 GIS 应用。ArcGIS Ser…

【Node.js】自动生成 API 文档

目录 1、直接使用swagger-ui-express 2、配合swagger-jsdoc 如何在Node.js项目中使用 Swagger 来自动生成 API接口文档&#xff0c;使用生成方式有很多种。本文基于swagger-jsdocswagger-ui-express快速实现 1、直接使用swagger-ui-express // 方便来浏览和测试api npm i sw…

抖音视频评论批量采集软件|视频数据提取工具

开发背景&#xff1a; 随着抖音视频的流行和使用频率增加&#xff0c;用户对批量采集抖音视频评论的需求逐渐凸显。传统的下载方式效率低下&#xff0c;无法满足快速采集数据的要求。为了解决这一问题&#xff0c;我们开发了一款基于C#的抖音视频评论批量采集软件&#xff0c;旨…

Linux 文件操作

目录 C语言下的文件操作 Linux下的文件操作 文件描述符的前因后果 文件描述符的概念 文件描述符的分配规则 理解C语言的FILE结构体 Linux重定向 文件缓冲区 文件系统 文件系统的概念 ext2文件系统 对ext2的补充 虚拟文件系统的概念 软硬链接 C语言下的文件操作 …

windows安装部署node.js并搭建Vue项目

一、官网下载安装包 官网地址&#xff1a;https://nodejs.org/zh-cn/download/ 二、安装程序 1、安装过程 如果有C/C编程的需求&#xff0c;勾选一下下图所示的部分&#xff0c;没有的话除了选择一下node.js安装路径&#xff0c;直接一路next 2、测试安装是否成功 【winR】…

git忽略某些文件(夹)更改方法

概述 在项目中,常有需要忽略的文件、文件夹提交到代码仓库中,在此做个笔录。 一、在项目根目录内新建文本文件,并重命名为.gitignore,该文件语法如下 # 以#开始的行,被视为注释. # 忽略掉所有文件名是 a.txt的文件. a.txt # 忽略所有生成的 java文件, *.java # a.j…

什么是负载均衡集群?

目录 1、集群是什么&#xff1f; 2、负载均衡集群技术 3、负载均衡集群技术的实现 4、实现效果如图 5、负载均衡分类 6、四层负载均衡&#xff08;基于IP端口的负载均衡&#xff09; 7、七层的负载均衡&#xff08;基于虚拟的URL或主机IP的负载均衡) 8、四层负载与七层…

ETH网络中的账户

ETH网络中的账户 Externally owned accounts (EOA) - 外部账户 由用户控制&#xff0c;我们导入助记词创建的账户就属于此类账户。 Contract accounts (smart contracts) - 合约账户 合约账户由以太坊虚拟机执行的代码控制。它也被称为智能合约。合约帐户有相关的代码和数据存…

护眼台灯哪家的品牌最好?五款品质台灯专业推荐

随着现在越来越多小朋友近视&#xff0c;很多家长都开始十分注重孩子的视力健康。因此护眼台灯就逐渐成为家长帮孩子保护视力的首选。然而&#xff0c;随着受欢迎的程度逐渐提高&#xff0c;市面上也经常会出血一些不专业且品质底下的护眼台灯。这些产品普遍存在“照明不适、耐…

React UI框架Antd 以及 如何按需引入css样式配置(以及过程中各种错误处理方案)

一、react UI框架Antd使用 1.下载模块 npm install antd -S 2.引入antd的样式 import ../node_modules/antd/dist/reset.css; 3.局部使用antd组件 import {Button, Calendar} from antd; import {PieChartTwoTone} from ant-design/icons; {/* 组件汉化配置 */} import l…

Spring Boot到底是如何进行自动配置的?

【1】从 spring.factories 配置文件中加载 EnableAutoConfiguration 自动配置类&#xff09;,获取的自动配 置类如图所示。 【2】若 EnableAutoConfiguration 等注解标有要 exclude 的自动配置类&#xff0c;那么再将这个自动配置类 排除掉&#xff1b; 【3】排除掉要 exclude …

一款开源.NET WPF界面库介绍

一款开源.NET WPF界面库介绍 这是一个WPF版的Layui前端UI样式库&#xff0c;该控件库参考了Web版本的LayUI风格&#xff0c;利用该控件库可以完成现代化UI客户端程序&#xff0c;让你的客户端看起来更加简洁丰富又不失美感 如何使用 步骤一 : 添加LayUI.Wpf Nuget包; Inst…