JAVA核心知识点--获取HttpServletRequest请求Body中的内容
在实际开发过程中,经常需要从 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中的内容相关推荐
- java获取当前日期的前一天日期,Java核心知识点
一.分布式架构学习路线图 据统计,人的阅读时间在20分钟以内是能够达到全身心投入的,顾文章单张篇幅以后会尽量缩短,但更新会尽量相应频繁一些. 二.计算机软件发展历史 首先我们了解下计算机软件的发展历史 ...
- Java核心知识点 --- 线程中如何创建锁和使用锁 Lock , 设计一个缓存系统
理论知识很枯燥,但这些都是基本功,学完可能会忘,但等用的时候,会发觉之前的学习是非常有意义的,学习线程就是这样子的. 1.如何创建锁? Lock lock = new ReentrantLock(); ...
- Java核心知识点学习----多线程中的阻塞队列,ArrayBlockingQueue介绍
1.什么是阻塞队列? 所谓队列,遵循的是先进先出原则(FIFO),阻塞队列,即是数据共享时,A在写数据时,B想读同一数据,那么就将发生阻塞了. 看一下线程的四种状态,首先是新创建一个线程,然后,通过s ...
- Spring拦截器获取request请求体中的json数据,并转换成Java对象的解决办法
1.要被拦截的Controller接口 我们需要一个更新用户信息接口,请求方式为POST,参数类型为对象类型(UserInfo),代码如下: @Resource private UserService ...
- 最全最新的的Java核心知识点整理!!! 【推荐】
前言: 想要文档版的小伙伴们可以私信我领取哦,更加清晰 一目了然 ~ Java核心知识点! 博客整理出来的稍微有点乱~ 目录 目录 -1 JVM - 19 2.1. 线程 - 20 2.2. JVM ...
- 牛逼了!8000页Java 核心知识点+面试题整理,超全!
今年金九银十要来了,很多小伙伴都在准备跳槽.小编为大家汇总了份Java核心知识点面试题和答案,基本上涵盖了所有后端技术栈,相信可以帮助大家拿到自己心仪的offer. 截了几张图,大家可以仔细查看左边的 ...
- 十年BAT架构履历,铁柱磨针成188页Java核心知识点
首先祝快乐,另外也希望这篇文章可以帮助到大家. Java核心知识点.覆盖了面试,JVM.锁.并发.Java反射.Spring原理.微服务.Zookeeper.数据库.数据结构等大量知识点.总计118页 ...
- avascript怎么获取指定url网页中的内容
目录 一.总结 一句话总结:推荐jquery中ajax,简单方便. 1.js能跨域操作么? 二.用php获取 三.jquery中ajax获取 四.通过node.js获取 回到顶部 > 一.总结 ...
- JAVA核心知识点--JDK1.8中的日期处理
目录 在Java 8中如何处理日期和时间 示例 1.在Java 8中获取今天的日期 示例 2.在Java 8中获取年.月.日信息 示例 3.在Java 8中处理特定日期 示例 4.在Java 8中判断 ...
- 北大青鸟java半年学费,Java核心知识点
开头 关于程序员,除了做项目.看视频来提高自身的技术之外,还有一种提升自己的专业技能就是:多!看!书!MySQL俨然已经成为了IT技术人员必须掌握的核心技能之一! <MySQL从入门到精通> ...
最新文章
- hibernate 三种查询方式源码跟踪及总结
- ssl初一组周六模拟赛【2018.4.21】
- [vue] vue的is这个特性你有用过吗?主要用在哪些方面?
- gcovr 安装_Kudu 1.8.0 编译安装配置
- 也说春运网络购票:12306的码农没有你想的那么弱 [转]
- 设计模式之三:装饰者模式(简单实现(星巴兹咖啡))
- python dateutil安装_Python时间处理-dateutil模块
- mysql联合查询 课程表_oracle 学生表,课程表,选课表. 三表联合查询
- ajax请求csv文件,使用Ajax读取csv /文本文件
- 【P4lang】P4数据平面编程实验basic_tunnel
- 《数字图像处理(第三版)》 第二章 数字图像基础 笔记1(视觉与电磁波谱)
- JavaScript_原型链继承
- K2P padavan固件下宽带与IPTV融合
- Enscape 设置预设功能能够在保存的设置之间切换
- Allegro通孔焊盘制作
- vue全局更新以及孙组件调用祖组件(利用provide和inject)
- border-radius的一种经典使用(上凸边框)
- online-section1-new
- 光纤传感器应力传感研究
- easyUI之增加删除与批量删除