struts2 接口如何接收客户端提交的json数据
1.情景还原
使用struts2写的接口(服务端),要求对方(客户端)以json格式传输数据,但是使用request.getParameter()获取不到
2.问题剖析
application/x- www-form-urlencoded是Post请求默认的请求体内容类型,也是form表单默认的类型,可以使用request.getParameter()方法来获取请求参数值;
但是,当请求内容不是该类型时,就不能使用request.getParameter()方法来获取请求参数值了,具体如下:
当请求体内容为application/json类型时,需使用request.getReader()方法来获取请求内容值(字符流),经测试也可以使用字节流来获取;
当请求体内容为multipart/form-data类型时,需使用request.getInputStream()方法来获取请求内容值(字节流)。
3.解决方案
所需jar包
struts2-core-2.3.34.jar;
导入
import java.io.BufferedReader;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;
/**
* 获取接口传递的JSON数据
* @explain
* @param request HttpServletRequest对象
* @return JSON格式数据
*/
public static JSONObject getJsonReqData () {
// 获取Request对象
HttpServletRequest request = ServletActionContext.getRequest();
StringBuffer sb = new StringBuffer();
try {
// json格式字符串
String jsonStr = "";
// 获取application/json格式数据,返回字符流
BufferedReader reader = request.getReader();
// 对字符流进行解析
while ((jsonStr = reader.readLine()) != null) {
sb.append(jsonStr);
}
} catch (IOException e) {
e.printStackTrace();
} // 将json字符串(jsonStr)-->json对象(JSONObject)
JSONObject jo = JSONObject.fromObject(sb.toString());
return jo;
}
struts2 接口如何接收客户端提交的json数据的更多相关文章
- spring mvc接收ajax提交的JSON数据,并反序列化为对象
需求:spring mvc接收ajax提交的JSON数据,并反序列化为对象,代码如下: 前台JS代码: //属性要与带转化的对象属性对应 var param={name:'语文',price:16}; ...
- flask接收post提交的json数据并保存至数据库
定义数据模型 # 定义数据模型class User(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(d ...
- EasyUI Form提交后json数据IE上需要下载(转)
EasyUI Form提交后json数据IE上需要下载(转) 在使用EasyUI的form中的submit方法时,返回json在IE中变成提示下载的问题,代码如下: $('#fileForm'). ...
- 使用ajax提交的json数据,产生筹码问题
使用ajax提交的json数据,我们必须添加produces注解,如下所示.否则将会产生乱码 方法一:添加produces注解 @ApiOperation(value = "删除日志&quo ...
- 使用@RequestBody注解获取Ajax提交的json数据
最近在学习有关springMVC的知识,今天学习如何使用@RequestBody注解来获取Ajax提交的json数据内容. Ajax部分代码如下: 1 $(function(){ 2 $(" ...
- jquery序列化from表单使用ajax提交返回json数据(使用struts2注解result type = json)
1.action类引入struts2的"json-default"拦截器栈 @ParentPackage("json-default") //示例 @Paren ...
- struts2 的验证框架validation如何返回json数据 以方便ajax交互
struts2 的验证框架validation简单,好用,但是input只能输出到jsp页面通过struts2的标签<s:fielderror />才能取出,(EL应该也可以). 如果使 ...
- 服务端提供的JSON数据接口与用户端接收解析JSON数据
JSON格式的服务接口:http://www.cnblogs.com/visec479/articles/4118338.html 首先来了解下JSON格式解析 json结构的格式就是若干个 键/值( ...
- jq向webApi提交post json数据
在页面想webApi post json数据的时候,发现webapi不能直接以json的方式接受数据(注:我是没有发现一个很好的方式来post json数据的);但是可以以数据结构的方式传递: 如下: ...
随机推荐
- TS 数据流分析学习
TS 流.包结构以及同步 1. TS 流: 可以将TS流理解为一种单一码流.混合码流. 单一码流:TS流的基本组成单位是长度为188字节的TS包. 混合码流:TS流有多种数据组成,一个TS包中的数据可 ...
- AC日记——[JSOI2007]建筑抢修 bzoj 1029
1029 思路: 贪心,而且,stl水过: 然而神特么输出que.size()就错! 代码: #include <queue> #include <cstdio> #inclu ...
- Python:文件操作技巧(File operation)(转)
Python:文件操作技巧(File operation) 读写文件 # ! /usr/bin/python # -*- coding: utf8 -*- spath = " D:/dow ...
- JS—正则表达式
正则表达式的元字符是包含特殊含义的字符,它们有一些特殊的功能,可以控制匹配模式的方式,反斜杠后的元字符失去其特殊含义. 单个字符和数字 .表示匹配除换行符外的单个字符,两个.就表示匹配两个字符 var ...
- centos6.5 卸载adobeflash
# rpm -e flash-plugin # rpm -qa | grep ^flash-plugin
- HDU 6216 A Cubic number and A Cubic Number【数学思维+枚举/二分】
Problem Description A cubic number is the result of using a whole number in a multiplication three t ...
- 【kruscal】【最小生成树】【离线】洛谷 P2266 爱的距离
建图:每个点向它四周的点连边权为两点点权的差的绝对值的边. 由于有多个需要“施法”的点,所以相当于对每个这样的点,询问与它的距离在T以内的最长边的最小值,即多次询问. 最长边最小之类的,肯定是最小生成 ...
- linux安装dubbo
(1)下载dubbo-admin-2.4.1.war包 https://github.com/alibaba/dubbo.git 1.打开cmd 2.cd到dubbo的根目录下,我的dubbo根目录 ...
- STL之vector4
描述 将一个n行m列矩阵元素输入存储后并输出. 部分代码已经给出,请补充完整,提交时请勿包含已经给出的代码. int main() { vector< vector<int> > ...
- Problem I: 零起点学算法30——输出四位完全平方数
#include<stdio.h> int main() { int a,b,c,d,s,i; ;i<;i++){ s=i*i; a=s/; b=s%/; c=s%/; d=s%; ...