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数据的更多相关文章

  1. spring mvc接收ajax提交的JSON数据,并反序列化为对象

    需求:spring mvc接收ajax提交的JSON数据,并反序列化为对象,代码如下: 前台JS代码: //属性要与带转化的对象属性对应 var param={name:'语文',price:16}; ...

  2. flask接收post提交的json数据并保存至数据库

    定义数据模型 # 定义数据模型class User(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(d ...

  3. EasyUI Form提交后json数据IE上需要下载(转)

    EasyUI Form提交后json数据IE上需要下载(转)   在使用EasyUI的form中的submit方法时,返回json在IE中变成提示下载的问题,代码如下: $('#fileForm'). ...

  4. 使用ajax提交的json数据,产生筹码问题

    使用ajax提交的json数据,我们必须添加produces注解,如下所示.否则将会产生乱码 方法一:添加produces注解 @ApiOperation(value = "删除日志&quo ...

  5. 使用@RequestBody注解获取Ajax提交的json数据

    最近在学习有关springMVC的知识,今天学习如何使用@RequestBody注解来获取Ajax提交的json数据内容. Ajax部分代码如下: 1 $(function(){ 2 $(" ...

  6. jquery序列化from表单使用ajax提交返回json数据(使用struts2注解result type = json)

    1.action类引入struts2的"json-default"拦截器栈 @ParentPackage("json-default") //示例 @Paren ...

  7. struts2 的验证框架validation如何返回json数据 以方便ajax交互

    struts2 的验证框架validation简单,好用,但是input只能输出到jsp页面通过struts2的标签<s:fielderror  />才能取出,(EL应该也可以). 如果使 ...

  8. 服务端提供的JSON数据接口与用户端接收解析JSON数据

    JSON格式的服务接口:http://www.cnblogs.com/visec479/articles/4118338.html 首先来了解下JSON格式解析 json结构的格式就是若干个 键/值( ...

  9. jq向webApi提交post json数据

    在页面想webApi post json数据的时候,发现webapi不能直接以json的方式接受数据(注:我是没有发现一个很好的方式来post json数据的);但是可以以数据结构的方式传递: 如下: ...

随机推荐

  1. MATLAB作图方法与技巧(二)

    作为MATLAB作图方法与技巧(一)的补充 1.绘制二维散点图 ① scatter函数 scatter(x,y,s,c)函数绘制向量x和y的散点图,其中s代表点的大小,c代表点的形状,s和c缺省时为默 ...

  2. [libgdx游戏开发教程]使用Libgdx进行游戏开发(3)-给游戏添加一些控制功能

    每个游戏中都有一些只有程序员自己才知道的控制功能,比如增加金钱,满血复活,无视防御,不死等等. 都是为了方便自己调试而在测试阶段使用的功能. 正如上一章提到的:我们也需要加些只有程序员才知道的控制功能 ...

  3. usaco1.4.3等差数列

    为这道苟题鼓掌 题目: 一个等差数列是一个能表示成a, a+b, a+2b,…, a+nb (n=0,1,2,3,…)的数列.在这个问题中a是一个非负的整数,b是正整数.写一个程序来找出在双平方数集合 ...

  4. POJ1128 (TopSort)(递归)(回溯)

    Frame Stacking Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 5220   Accepted: 1809 De ...

  5. luogu P1026 统计单词个数

    题目链接 luogu P1026 统计单词个数 题解 贪心的预处理母本串从i到j的最大单词数 然后dp[i][j] 表示从前i个切了k次最优解 转移显然 代码 #include<cstdio&g ...

  6. 洛谷 P3803 多项式乘法

    题目背景 这是一道FFT模板题 题目描述 给定一个n次多项式F(x),和一个m次多项式G(x). 请求出F(x)和G(x)的卷积. 输入输出格式 输入格式: 第一行2个正整数n,m. 接下来一行n+1 ...

  7. [Contest20171102]简单数据结构题

    给一棵$n$个点的数,点权开始为$0$,有$q$次操作,每次操作选择一个点,把周围一圈点点权$+1$,在该操作后你需要输出当前周围一圈点点权的异或和. 由于输出量较大,设第$i$个询问输出为$ans_ ...

  8. 【块状树】【LCA】bzoj1787 [Ahoi2008]Meet 紧急集合

    分块LCA什么的,意外地快呢…… 就是对询问的3个点两两求LCA,若其中两组LCA相等,则答案为第三者. 然后用深度减一减什么的就求出距离了. #include<cstdio> #incl ...

  9. Jetty错误:java.lang.IllegalStateException: Form too large 270468>200000的问题解决

    说明: 1.200000单位为byte,并不是2MB,而是200KB,换算参考:https://calc.itzmx.com/ 2.这个是表单提交后长度超过了200KB造成的,除了表单Form,还有U ...

  10. 64945e3dtw1dii6vfdr19j.jpg(PNG 图像,1497x929 像素)

    64945e3dtw1dii6vfdr19j.jpg(PNG 图像,1497x929 像素)