在servlet、filter等中获取POST请求的参数

  1. form表单形式提交post方式,可以直接从 request 的 getParameterMap 方法中获取到参数
  2. JSON形式提交post方式,则必须从 request 的 输入流 中解析获取参数,使用apache commons io 解析

maven配置

      <!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency> <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency> <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.50</version>
</dependency>

获取POST请求中的参数

    /**
* @author tianwyam
* @description 从POST请求中获取参数
* @param request
* @return
* @throws Exception
*/
public static Map<String, Object> getParam4Post(HttpServletRequest request) throws Exception {

     // 返回参数
Map<String, Object> params = new HashMap<>(); // 获取内容格式
String contentType = request.getContentType();
if (contentType != null && !contentType.equals("")) {
contentType = contentType.split(";")[0];
} // form表单格式 表单形式可以从 ParameterMap中获取
if ("appliction/x-www-form-urlencoded".equalsIgnoreCase(contentType)) {
// 获取参数
Map<String, String[]> parameterMap = request.getParameterMap();
if (parameterMap != null) {
for (Map.Entry<String, String[]> entry : parameterMap.entrySet()) {
params.put(entry.getKey(), entry.getValue()[0]);
}
}
} // json格式 json格式需要从request的输入流中解析获取
if ("application/json".equalsIgnoreCase(contentType)) {
// 使用 commons-io中 IOUtils 类快速获取输入流内容
String paramJson = IOUtils.toString(request.getInputStream(), "UTF-8");
Map parseObject = JSON.parseObject(paramJson, Map.class);
params.putAll(parseObject);
} return params ;
}

最新文章

  1. 理解CSS外边距margin
  2. 4.修改更新源sources.list,提高软件下载安装速度(提供Kali 2.0 更新源)
  3. LTE Module User Documentation(翻译2)——配置LTE MAC 调度器
  4. bootstrap-datepicker 插件修改为默认中文
  5. SGU 390-Tickets(数位dp)
  6. [置顶] poj1416数字切割解题报告
  7. XPath与多线程爬虫
  8. [转]OpenSolaris 2009.06, dev setup
  9. JSDOM优化
  10. SQL Server数据库可能遇到的报错
  11. TCP多线程聊天室
  12. 申港集中运营平台Linux测试环境架构搭建
  13. (转) AdversarialNetsPapers
  14. beta2
  15. Office在线预览及PDF在线预览的实现方式
  16. C#委托和事件的使用的意义
  17. 【Python】Java程序员学习Python(四)— 内置方法和内置变量
  18. Spring源码分析之IOC容器(一)
  19. Hibernate(八)多对多映射
  20. C# Winform选项卡集成窗体

热门文章

  1. 灰度变换,gama变换,对数,反对数变换
  2. GC 老年代 新生代
  3. 在eclipse中查找一个类中的方法在其他哪个类中被调用了
  4. $\LaTeX$数学公式大全
  5. iReport 3.7.6 jasperreport 生成PDF汉字不显示问题的解决
  6. 2018-2019-2 20165330《网络对抗技术》Exp7 网络欺诈防范
  7. 腾讯云安装mysql数据库
  8. Kotlin函数中默认参数
  9. mybatis多对多映射【学生与课程】
  10. Python3+RobotFramewok 快速入门(二)