如何通过ServletInputStream读取http请求传入的数据

目录
  • 通过ServletInputStream读取http请求传入的数据
    • 1. 使用ServletInputStream获取传入的数据
    • 2. 通过ServletInputStream获取的是String类型
  • ServletInputStream类
    • ServletInputStream类提供流从请求对象读取二进制数据

通过ServletInputStream读取http请求传入的数据

问题提出:使用nodejs的http向java web发送请求,java后台未收到数据。

1. 使用ServletInputStream获取传入的数据

/**
 * 增加数据
 * @param module
 * @param function
 * @param system
 * @param platform
 * @param time
 * @param status
 * @return ModelAndView
 * @throws IOException
 */
@RequestMapping("/insertOne")
public ModelAndView insertOne(HttpServletRequest req) throws IOException {
	ServletInputStream ris = req.getInputStream();
	StringBuilder content = new StringBuilder();
	byte[] b = new byte[1024];
	int lens = -1;
	while ((lens = ris.read(b)) > 0) {
		content.append(new String(b, 0, lens));
	}
	String strcont = content.toString();// 内容
	JSONObject jsonObj = JSONObject.fromObject(strcont);

	DBObject obj = new BasicDBObject();
	obj.put("module", jsonObj.getString("module"));
	obj.put("function", jsonObj.getString("function"));
	obj.put("system", jsonObj.getString("system"));
	obj.put("platform", jsonObj.getString("platform"));
	obj.put("time", jsonObj.getString("time"));
	obj.put("status", jsonObj.getString("status"));

	Map<String, Object> map = new HashMap<String, Object>();
	int len = ((DBManager) conn).insertOne(obj);
	map.put("status", (len == 0)?("SUCCESS"):("ERROR"));
	return MVC.toString(map);
}

2. 通过ServletInputStream获取的是String类型

使用时需要转化成JSON

JSONObject jsonObj = JSONObject.fromObject(strcont);
System.out.println(jsonObj.getString("module"));

需要的jar包:

ServletInputStream类

ServletInputStream类提供流从请求对象读取二进制数据

如图像等。这是一个抽象类。

ServletRequest接口的getInputStream()方法返回ServletInputStream类的实例。

所以可以得到:

ServletInputStream sin=request.getInputStream();

Java

  • ServletInputStream类的方法
  • ServletInputStream类中只定义了一种方法

int readLine(byte[] b, int off, int len) - 它读取输入流。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 使用ServletInputStream()输入流读取图片方式

    目录 问题描述 项目结构 问题原因 解决方法 总结回顾 问题描述 最近遇到需要用到上传图片到服务器上,学习了一下原生servlet中的form上传图片保存到指定目录的情况 思路:前端提交–servlet获取inputstream–输出到本地 获取输入流后输出到本地一直打不开提示损坏/0kb.从网上看到有说需要apache的两个包io和fileupload包.我想的是不借助第三方工具包处理(tomcat也是第三方呵呵,纯的应该是利用socket吧) 项目结构 如图所示:并未使用其余组件,创建了一个

  • 解决spring 处理request.getInputStream()输入流只能读取一次问题

    一般我们会在InterceptorAdapter拦截器中对请求进行验证 正常普通接口请求,request.getParameter()可以获取,能多次读取 如果我们的接口是用@RequestBody来接受数据,那么我们在拦截器中 需要读取request的输入流 ,因为 ServletRequest中getReader()和getInputStream()只能调用一次 这样就会导致controller 无法拿到数据. 解决方法 : 1.自定义一个类 BodyReaderHttpServletReq

  • 为了多次读取ServletInputStream引发的一系列问题

    目录 多次读取ServletInputStream引发的问题 因为服务器和app之间传输方式是JSON 于是写了下面的filter来让ServletInputStream来多次读取 解决思路:自己解决 ServletInputStream重复读取问题 直接贴代码了,亲测能用 多次读取ServletInputStream引发的问题 因为服务器和app之间传输方式是JSON 格式如下 { head:null body:null token:xxxxxxxxxxxxxxxxxxxxx } 所以想在服务

  • 如何通过ServletInputStream读取http请求传入的数据

    目录 通过ServletInputStream读取http请求传入的数据 1. 使用ServletInputStream获取传入的数据 2. 通过ServletInputStream获取的是String类型 ServletInputStream类 ServletInputStream类提供流从请求对象读取二进制数据 通过ServletInputStream读取http请求传入的数据 问题提出:使用nodejs的http向java web发送请求,java后台未收到数据. 1. 使用Servlet

  • java读取http请求中的body实例代码

    在http请求中,有Header和Body之分,读取header使用request.getHeader("..."); 读取Body使用request.getReader(),但getReader获取的是BufferedReader,需要把它转换成字符串, 下面是转换的方法. public static String getBodyString(BufferedReader br) { String inputLine; String str = ""; try {

  • jQuery实现分页功能(含ajax请求、后台数据、附完整demo)

    需求分析 1)需要首页,末页功能 2)有点击查看上一页,下一页功能 3)页码到当前可视页码最后一页刷新页面 实现思路 也是分为三部分处理 1)点击首页,末页直接显示第一页或者最后一页内容,当前页面为第1页或者最后一页.隐藏首页或者末页按钮.demo 显示截图 首页状态 和 末页状态代码执行结果截图 2)点击可视页码截图 3)点击上一页或者下一页,,需要刷新页码状态时截图,昨天表示当前页码为7,右图是点击上一页,刷新页码时的状态 代码参数说明 <script src="js/jquery-1

  • python3 读取Excel表格中的数据

    需要先安装openpyxl库 通过pip命令安装: pip install openpyxl 源码如下: #!/usr/bin/python3 #-*- coding:utf-8 -*- import openpyxl def getCell(wb, sheetname, column): #指定读取哪个Sheet(每个excel表格默认有三个Sheet:Sheet1,Sheet2,Sheet3) table = wb[sheetname] #读取哪一列数据 cell = table[colum

  • python NumPy读取和保存点云数据实现

    目录 前言 loadtxt函数的用法 基本用法 指定每一列的数据类型 结合生成器使用 tofile和fromfile函数 前言 最近在学习点云处理的时候用到了Modelnet40数据集,该数据集总共有40个类别,每个样本的点云数据存放在一个TXT文件中,每行的前3个数据代表一个点的xyz坐标.我需要把TXT文件中的每个点读取出来,然后用Open3D进行显示. 怎么把数据从TXT文件中读取出来呢?NumPy提供了一个功能非常强大的函数loadtxt可以非常简单地实现这个功能.来看一下代码: imp

  • Python如何用NumPy读取和保存点云数据

    目录 前言 loadtxt函数的用法 基本用法 指定每一列的数据类型 结合生成器使用 tofile和fromfile函数 前言 最近在学习点云处理的时候用到了Modelnet40数据集,该数据集总共有40个类别,每个样本的点云数据存放在一个TXT文件中,每行的前3个数据代表一个点的xyz坐标.我需要把TXT文件中的每个点读取出来,然后用Open3D进行显示.怎么把数据从TXT文件中读取出来呢?NumPy提供了一个功能非常强大的函数loadtxt可以非常简单地实现这个功能.来看一下代码: impo

  • SpringBoot @PostMapping接收HTTP请求的流数据问题

    目录 @PostMapping接收HTTP请求的流数据 关于@PostMapping注解解析 总结 @PostMapping接收HTTP请求的流数据 @PostMapping("/test") public String pushMessage(@RequestBody byte[] data) throws Exception { String json = URLDecoder.decode(new String(data, DEFAULT_CHARSET), DEFAULT_CH

  • SpringMVC环境下实现的Ajax异步请求JSON格式数据

    一 环境搭建 首先是常规的spring mvc环境搭建,不用多说,需要注意的是,这里需要引入jackson相关jar包,然后在spring配置文件"springmvc-servlet.xml"中添加json解析相关配置,我这里的完整代码如下: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schem

  • ajax请求之返回数据的顺序问题分析

    本文实例分析了ajax请求之返回数据的顺序问题.分享给大家供大家参考,具体如下: ajax请求一个url,php后端处理后,数组为如下格式: 复制代码 代码如下: $a = array( '-1'=> 10 ,'-3' => 2, '0' => '5' ,'-2' => 4); 然后使用php的asort函数对数组按照value进行升序排序后,如下: 复制代码 代码如下: $a = array('-3' => 2, '-2' => 4,'0' => '5', '-

  • js读取并解析JSON类型数据的方法

    本文实例讲述了js读取并解析JSON类型数据的方法.分享给大家供大家参考,具体如下: 一.什么是JSON? JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式,同时,JSON是 JavaScript 原生格式. 非常适合于服务器与 JavaScript 的交互 二.为什么使用JSON而不是XML 他们都是这样说的:尽管有许多宣传关于 XML 如何拥有跨平台,跨语言的优势,然而,除非应用于 Web Ser

随机推荐