在实际开发过程中,经常需要从 HttpServletRequest 中读取HTTP请求的body内容,俗话说的好”好记性不如烂笔头“,特在此将其读取方法记录一下。

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServletRequest;public class HttpServletRequestReader
{// 字符串读取// 方法一public static String ReadAsChars(HttpServletRequest request){BufferedReader br = null;StringBuilder sb = new StringBuilder("");try{br = request.getReader();String str;while ((str = br.readLine()) != null){sb.append(str);}br.close();}catch (IOException e){e.printStackTrace();}finally{if (null != br){try{br.close();}catch (IOException e){e.printStackTrace();}}}return sb.toString();}// 方法二public static void ReadAsChars2(HttpServletRequest request){InputStream is = null;try{is = request.getInputStream();StringBuilder sb = new StringBuilder();byte[] b = new byte[4096];for (int n; (n = is.read(b)) != -1;){sb.append(new String(b, 0, n));}}catch (IOException e){e.printStackTrace();}finally{if (null != is){try{is.close();}catch (IOException e){e.printStackTrace();}}}}// 二进制读取public static byte[] readAsBytes(HttpServletRequest request){int len = request.getContentLength();byte[] buffer = new byte[len];ServletInputStream in = null;try{in = request.getInputStream();in.read(buffer, 0, len);in.close();}catch (IOException e){e.printStackTrace();}finally{if (null != in){try{in.close();}catch (IOException e){e.printStackTrace();}}}return buffer;}}

注意:HttpServletRequest 请求中的 body 内容仅能调用 request.getInputStream(), request.getReader()和request.getParameter("key") 方法读取一次,重复读取会报 java.io.IOException: Stream closed 异常。

JAVA核心知识点--获取HttpServletRequest请求Body中的内容相关推荐

  1. java获取当前日期的前一天日期,Java核心知识点

    一.分布式架构学习路线图 据统计,人的阅读时间在20分钟以内是能够达到全身心投入的,顾文章单张篇幅以后会尽量缩短,但更新会尽量相应频繁一些. 二.计算机软件发展历史 首先我们了解下计算机软件的发展历史 ...

  2. Java核心知识点 --- 线程中如何创建锁和使用锁 Lock , 设计一个缓存系统

    理论知识很枯燥,但这些都是基本功,学完可能会忘,但等用的时候,会发觉之前的学习是非常有意义的,学习线程就是这样子的. 1.如何创建锁? Lock lock = new ReentrantLock(); ...

  3. Java核心知识点学习----多线程中的阻塞队列,ArrayBlockingQueue介绍

    1.什么是阻塞队列? 所谓队列,遵循的是先进先出原则(FIFO),阻塞队列,即是数据共享时,A在写数据时,B想读同一数据,那么就将发生阻塞了. 看一下线程的四种状态,首先是新创建一个线程,然后,通过s ...

  4. Spring拦截器获取request请求体中的json数据,并转换成Java对象的解决办法

    1.要被拦截的Controller接口 我们需要一个更新用户信息接口,请求方式为POST,参数类型为对象类型(UserInfo),代码如下: @Resource private UserService ...

  5. 最全最新的的Java核心知识点整理!!! 【推荐】

    前言: 想要文档版的小伙伴们可以私信我领取哦,更加清晰 一目了然 ~ Java核心知识点! 博客整理出来的稍微有点乱~ 目录 目录 -1 JVM - 19 2.1. 线程 - 20 2.2. JVM ...

  6. 牛逼了!8000页Java 核心知识点+面试题整理,超全!

    今年金九银十要来了,很多小伙伴都在准备跳槽.小编为大家汇总了份Java核心知识点面试题和答案,基本上涵盖了所有后端技术栈,相信可以帮助大家拿到自己心仪的offer. 截了几张图,大家可以仔细查看左边的 ...

  7. 十年BAT架构履历,铁柱磨针成188页Java核心知识点

    首先祝快乐,另外也希望这篇文章可以帮助到大家. Java核心知识点.覆盖了面试,JVM.锁.并发.Java反射.Spring原理.微服务.Zookeeper.数据库.数据结构等大量知识点.总计118页 ...

  8. avascript怎么获取指定url网页中的内容

    目录 一.总结 一句话总结:推荐jquery中ajax,简单方便. 1.js能跨域操作么? 二.用php获取 三.jquery中ajax获取 四.通过node.js获取 回到顶部 >  一.总结 ...

  9. JAVA核心知识点--JDK1.8中的日期处理

    目录 在Java 8中如何处理日期和时间 示例 1.在Java 8中获取今天的日期 示例 2.在Java 8中获取年.月.日信息 示例 3.在Java 8中处理特定日期 示例 4.在Java 8中判断 ...

  10. 北大青鸟java半年学费,Java核心知识点

    开头 关于程序员,除了做项目.看视频来提高自身的技术之外,还有一种提升自己的专业技能就是:多!看!书!MySQL俨然已经成为了IT技术人员必须掌握的核心技能之一! <MySQL从入门到精通> ...

最新文章

  1. hibernate 三种查询方式源码跟踪及总结
  2. ssl初一组周六模拟赛【2018.4.21】
  3. [vue] vue的is这个特性你有用过吗?主要用在哪些方面?
  4. gcovr 安装_Kudu 1.8.0 编译安装配置
  5. 也说春运网络购票:12306的码农没有你想的那么弱 [转]
  6. 设计模式之三:装饰者模式(简单实现(星巴兹咖啡))
  7. python dateutil安装_Python时间处理-dateutil模块
  8. mysql联合查询 课程表_oracle 学生表,课程表,选课表. 三表联合查询
  9. ajax请求csv文件,使用Ajax读取csv /文本文件
  10. 【P4lang】P4数据平面编程实验basic_tunnel
  11. 《数字图像处理(第三版)》 第二章 数字图像基础 笔记1(视觉与电磁波谱)
  12. JavaScript_原型链继承
  13. K2P padavan固件下宽带与IPTV融合
  14. Enscape 设置预设功能能够在保存的设置之间切换
  15. Allegro通孔焊盘制作
  16. vue全局更新以及孙组件调用祖组件(利用provide和inject)
  17. border-radius的一种经典使用(上凸边框)
  18. online-section1-new
  19. 光纤传感器应力传感研究
  20. easyUI之增加删除与批量删除

热门文章

  1. 百度网盘文件真实地址解析
  2. autoit脚本实现电脑加域,退域,重加域
  3. React初识--必知必会的jsx核心语法
  4. 使用dkms将驱动加入内核模块
  5. oracle的五种元素,五种元素
  6. 什么是类?什么是对象?类与对象之间是什么关系?类的特性有哪些?
  7. 还在为满意的渐变色发愁吗?10+个网站帮你解决烦恼
  8. word文档图片画红线_word文档怎么画线条
  9. 究竟什么是电脑蠕虫病毒,电脑蠕虫病毒解析
  10. CharNet阅读笔记