获取post中的请求参数1
获取 POST 请求中的参数(1)
POST 请求的参数一般通过 body 传递给服务器. body 中的数据格式有很多种.
如果是采用 form 表单的形式, 可以通过 getParameter 获取参数的值.
创建类PostParameter
//post通过body传参(配和post_text.html)
@WebServlet("/postparameter")
public class PostParameter extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//防止返回的结果乱码resp.setContentType("text/html;charSet=utf-8");//得到请求参数的值String post = req.getParameter("s");//返回结果resp.getWriter().println("post传参结果:" + post);}
}
创建post_text.html
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>使用post——get得参数</title>
</head>
<body><form action="postparameter" method="post"><div style="margin-top:50px;margin-left:40%;"><h1 style="padding-left:50px;">post传参</h1>参数:<input type="text" name="s"><input type="submit" value=" 提 交 "></div>
</form></body>
</html>
结果:可以看到传入的数据
获取 POST 请求中的参数(2)
1.如果 POST 请求中的 body 是按照 JSON 的格式来传递, 那么通过 getParameter 就获取不到参数的值了!!!
类还是上面的PostParameter,但这里没有创建前端html文件,而是使用postman这个软件充当前端去发送请求;如上图所示,传入结果为123;
我们执行的结果却是:null
前端是把数据传给了后端的,但是后端拿不到数据
2.所以当POST 请求中的 body 是按照 JSON 的格式来传递,得使用 InputStream 来获取
创建类PostparameterJson
@WebServlet("/PostparameterJson")
public class PostparameterJson extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//设置返回值类型和编码resp.setContentType("text/html;charSet=utf-8");//1.得到数据流ServletInputStream inputStream=req.getInputStream();//2.找一个容器用来存储流byte [] bytes=new byte[req.getContentLength()];inputStream.read(bytes);//3.将数组转换成字符串String s=new String(bytes,"utf-8");//4.返回结果resp.getWriter().println("post得到的参数:" +s);}
}
还是用postman 当前端
可以看到此时就可以得到数据(黄色框)了
但服务器拿到的 JSON 数据仍然是一个整体的 String 类型({“s”:123}), 如果要想获取到 s的具体值, 还需要搭配 JSON 库进一步解析.
获取 POST 请求中的参数(3)
引入 Jackson 这个库, 进行 JSON 解析.
- 在https://mvnrepository.com/中央仓库中搜索 Jackson, 选择 JackSon Databind
2.把中央仓库中的依赖配置添加到 pom.xml 中:
<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.12.3</version>
</dependency>
如图演示:
当红色字体变成黑色字体,即导入成功;
3.在 PostParameterJson 类中修改代码
增加了注释5和6(json字符串转对象)
@WebServlet("/PostparameterJson")
public class PostparameterJson extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//设置返回值类型和编码resp.setContentType("text/html;charSet=utf-8");//1.得到数据流ServletInputStream inputStream=req.getInputStream();//2.找一个容器用来存储流byte [] bytes=new byte[req.getContentLength()];inputStream.read(bytes);//3.将数组转换成字符串或者是对象(这里是转成字符串)String s=new String(bytes,"utf-8");//4.返回结果1resp.getWriter().println("post得到的参数:" +s);// 5.字符串转换成对象(或字典)ObjectMapper objectMapper = new ObjectMapper();HashMap<String, String> map = objectMapper.readValue(s, HashMap.class);//6.返回结果2resp.getWriter().println("导入 Jackson后post得到的参数:" + map.get("s"));}
}
结果:
此时就直接得到了具体的参数值
对于 json 字符串和j对象的互相转换:
- 这里引用了lombok去简化student对象的属性设置:
1.在pom.xml中引入lombok库
2.在idea中安装lombok插件
@Dataclass Student{String id;String name;String password;
}public class Json_String_Object {public static void main(String[] args) throws JsonProcessingException {//1.创建一个 json 操作对象ObjectMapper objectMapper=new ObjectMapper();//2.1将student对象转换成 json 字符串Student student = new Student();student.setId("1");student.setName("Java");student.setPassword("123");String result = objectMapper.writeValueAsString(student);System.out.println(result);//2.2.将 json 字符串转换对象String jsonStr = "{\"id\":2,\"name\":\"lisi\",\"password\":\"456\"}";Student lisi = objectMapper.readValue(jsonStr, Student.class);//输出整个对象System.out.println(lisi);//只输出对象的某个参数值System.out.println("id:"+lisi.id );}}
2.1将student对象转换成 json 字符串的结果:
2.2.将 json 字符串转换student对象的结果:
上面字符串转换对象时,使用的是Hashmap;因为那是时并没有新创建类,所以用了hashmap
获取post中的请求参数1相关推荐
- 获取referer中的请求参数_Servlet获取AJAX POST请求中参数以form data和request payload形式传输的方法...
本文实例讲述了Servlet获取AJAX POST请求中参数以form data和request payload形式传输的方法.分享给大家供大家参考,具体如下: HTTP请求中,如果是get请求,那么 ...
- 获取referer中的请求参数_http请求的referer属性
HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理.比如从我主页上链 ...
- 获取referer中的请求参数_javaweb之request获取referer请求头实现防盗链
在开发web程序的时候,有时我们需要得到用户是从什么页面连过来的,这就用到了referer. 它是http协议,所以任何能开发web程序的语言都可以实现,比如jsp中是: request.getHea ...
- 获取referer中的请求参数_Http请求头中的referer
Referer是 HTTP请求header 的一部分,当浏览器(或者模拟浏览器行为)向web 服务器发送请求的时候,头信息里有包含 Referer.比如我在www.google.com 里有一个www ...
- js处理url中的请求参数(编码/解码)
在处理 a 链接跳转其他页面时,总会遇到需要传递一些当前页面的信息到其他页面,然后其他页面利用这些信息进行相关操作.利用 get 请求或 hash 传递是常见的方式. 首先,需要对传递的参数进行编码, ...
- python excel token_python+excel接口自动化获取token并作为请求参数进行传参操作
1.登录接口登录后返回对应token封装: import json import requests from util.operation_json import OperationJson from ...
- Netty之获取FullHttpRequest中的请求参数信息(x-www-form-urlencoded协议)
获取FullHttpRequest中的请求参数信息 FullHttpRequest HTTP请求行 HTTP请求头 HTTP请求参数 FullHttpRequest 使用Netty开发一个HTTP服务 ...
- 获取request中的查询参数
//获取request中的查询参数public static Map<String, Object> getRequestParamsByMap(HttpServletRequest re ...
- JavaScript获取地址栏中的链接参数
2019独角兽企业重金招聘Python工程师标准>>> JavaScript获取地址栏中的链接参数 <script type="text/javascript&quo ...
最新文章
- 盘点一下数据库的误操作有哪些后悔药?
- md加密 16位 32位
- python怎么安装第三方库-vs2017怎么安装python第三方包
- Python 的装饰器执行顺序问题(二)
- 链表相关的算法题大汇总 — 数据结构之链表奇思妙想
- 平安 开源 数据库 实践_刻意的实践-成为开源
- 电话拦截以及电话拦截后的提示音
- Unity实现Text BestFit文本超框时再缩小字体
- 笔记本电脑怎么录制视频
- 笔记本电脑触控板突然失灵的解决办法
- 初来乍到,springboot入门项目
- 【控制系统的微分方程】
- css 手抓,CSS 像素画 - 手和箭头
- Qt5学习 模仿qq音乐播放器样式(1)
- 【数据可视化从入门到精通】指南-发展史-数据可视化应用场景-发展前景-技术选型①
- 达人评测 rtx3050ti和gtx1650ti哪个好 3050ti和1650ti对比差多少
- Python学习手册--第六部分(类)
- 广西财经学院计算机科学与技术,广西财经学院计算机科学与技术专业2015年在河南理科高考录取最低分数线...
- Microsoft Lookback Adapter添加并设置回环网卡(转)
- 上海疯狂神途 适用于android设备,上海疯狂神途官网版
热门文章
- 新春思考:如何用区块链与投证保护“一杯严选”「见茶卸甲」级好茶
- 【python】批量实现modis数据的辐射定标,大气校正及地形校正
- 系统dsn无法显示mysql_odbc系统DSN添加里面没有access 只有sql,这个怎么办,怎么解决?谢谢!...
- sql按客户号累计求和并且排序
- YOLOv5 5.0版本检测FPS
- Flink状态一致性检查点
- PKPM学习:板生成的问题
- 99条为人处事经典法则剩下的一条由你自己来感悟
- PDCCH-based WUS signal
- 小时代的成功可复制:郭敬明和他的大数据