获取 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 解析.

  1. 在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相关推荐

  1. 获取referer中的请求参数_Servlet获取AJAX POST请求中参数以form data和request payload形式传输的方法...

    本文实例讲述了Servlet获取AJAX POST请求中参数以form data和request payload形式传输的方法.分享给大家供大家参考,具体如下: HTTP请求中,如果是get请求,那么 ...

  2. 获取referer中的请求参数_http请求的referer属性

    HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理.比如从我主页上链 ...

  3. 获取referer中的请求参数_javaweb之request获取referer请求头实现防盗链

    在开发web程序的时候,有时我们需要得到用户是从什么页面连过来的,这就用到了referer. 它是http协议,所以任何能开发web程序的语言都可以实现,比如jsp中是: request.getHea ...

  4. 获取referer中的请求参数_Http请求头中的referer

    Referer是 HTTP请求header 的一部分,当浏览器(或者模拟浏览器行为)向web 服务器发送请求的时候,头信息里有包含 Referer.比如我在www.google.com 里有一个www ...

  5. js处理url中的请求参数(编码/解码)

    在处理 a 链接跳转其他页面时,总会遇到需要传递一些当前页面的信息到其他页面,然后其他页面利用这些信息进行相关操作.利用 get 请求或 hash 传递是常见的方式. 首先,需要对传递的参数进行编码, ...

  6. python excel token_python+excel接口自动化获取token并作为请求参数进行传参操作

    1.登录接口登录后返回对应token封装: import json import requests from util.operation_json import OperationJson from ...

  7. Netty之获取FullHttpRequest中的请求参数信息(x-www-form-urlencoded协议)

    获取FullHttpRequest中的请求参数信息 FullHttpRequest HTTP请求行 HTTP请求头 HTTP请求参数 FullHttpRequest 使用Netty开发一个HTTP服务 ...

  8. 获取request中的查询参数

    //获取request中的查询参数public static Map<String, Object> getRequestParamsByMap(HttpServletRequest re ...

  9. JavaScript获取地址栏中的链接参数

    2019独角兽企业重金招聘Python工程师标准>>> JavaScript获取地址栏中的链接参数 <script type="text/javascript&quo ...

最新文章

  1. 盘点一下数据库的误操作有哪些后悔药?
  2. md加密 16位 32位
  3. python怎么安装第三方库-vs2017怎么安装python第三方包
  4. Python 的装饰器执行顺序问题(二)
  5. 链表相关的算法题大汇总 — 数据结构之链表奇思妙想
  6. 平安 开源 数据库 实践_刻意的实践-成为开源
  7. 电话拦截以及电话拦截后的提示音
  8. Unity实现Text BestFit文本超框时再缩小字体
  9. 笔记本电脑怎么录制视频
  10. 笔记本电脑触控板突然失灵的解决办法
  11. 初来乍到,springboot入门项目
  12. 【控制系统的微分方程】
  13. css 手抓,CSS 像素画 - 手和箭头
  14. Qt5学习 模仿qq音乐播放器样式(1)
  15. 【数据可视化从入门到精通】指南-发展史-数据可视化应用场景-发展前景-技术选型①
  16. 达人评测 rtx3050ti和gtx1650ti哪个好 3050ti和1650ti对比差多少
  17. Python学习手册--第六部分(类)
  18. 广西财经学院计算机科学与技术,广西财经学院计算机科学与技术专业2015年在河南理科高考录取最低分数线...
  19. Microsoft Lookback Adapter添加并设置回环网卡(转)
  20. 上海疯狂神途 适用于android设备,上海疯狂神途官网版

热门文章

  1. 新春思考:如何用区块链与投证保护“一杯严选”「见茶卸甲」级好茶
  2. 【python】批量实现modis数据的辐射定标,大气校正及地形校正
  3. 系统dsn无法显示mysql_odbc系统DSN添加里面没有access 只有sql,这个怎么办,怎么解决?谢谢!...
  4. sql按客户号累计求和并且排序
  5. YOLOv5 5.0版本检测FPS
  6. Flink状态一致性检查点
  7. PKPM学习:板生成的问题
  8. 99条为人处事经典法则剩下的一条由你自己来感悟
  9. PDCCH-based WUS signal
  10. 小时代的成功可复制:郭敬明和他的大数据