import com.google.gson.Gson;
import org.apache.struts2.ServletActionContext; import javax.servlet.ServletRequest;
import java.io.*; /**
* Created by sky.tian on 2015/1/12.
*/
public class Test { private static final int DEFAULT_BUFFER_SIZE = 1024 * 4; private static final Gson gson = new Gson(); public <T> T parseRequestBody(Class<T> type) throws IOException {
ServletRequest request = ServletActionContext.getRequest();
InputStream inputStream = request.getInputStream();
String json = getRequestBodyJson(inputStream);
return gson.fromJson(json, type);
} /**
* 得到HTTP请求body中的JSON字符串
* @param inputStream
* @return
* @throws IOException
*/
private String getRequestBodyJson(InputStream inputStream) throws IOException {
Reader input = new InputStreamReader(inputStream);
Writer output = new StringWriter();
char[] buffer = new char[DEFAULT_BUFFER_SIZE];
int n = 0;
while(-1 != (n = input.read(buffer))) {
output.write(buffer, 0, n);
}
return output.toString();
} }

用户向一个Struts2 Action发送一个HTTP请求,比如URL是/user/create,方法是POST,用户的数据放在HTTP的RequestBody之中。

如何把HTTP body中的内容拿出来还原成Action所需的对象呢?以上代码就可以了。使用了GSON库。

最新文章

  1. 【记录】ASP.NET MVC RegisterBundles
  2. C/C++编程语言学习资料尽收眼底 电子书+视频教程
  3. 2.1 python使用MongoDB 示例代码
  4. OpenLayers2.13.1知识整理
  5. vue学习笔记
  6. grep命令学习
  7. linux下vi命令修改文件及保存的使用方法
  8. 解读jQuery中extend函数
  9. ReactNative ScrollView或ListView头部莫名其妙多了20px
  10. uC/OS-II应用程序代码
  11. JAVA环境安装
  12. 可否控制&lt;link type=text/css rel=stylesheet href=style.css&gt;
  13. sql server 各种函数
  14. 【转】ubuntu下putty的复制粘贴 -- 不错
  15. Windows Auzre 微软的云计算产品的后台操作界面
  16. Linux 启动过程的详细解释
  17. 使用cordova开发app
  18. (NO.00001)iOS游戏SpeedBoy Lite成形记(二十八):增加排行榜功能
  19. Vue 2.0 路由全局守卫
  20. 基于Spring Boot框架开发的一个Mock

热门文章

  1. 三、Linux下mysql的完整安装
  2. Dark 类与对象
  3. leetcode 29两数相除
  4. np.unique()对一维和二维数组去重
  5. JavaWeb实现文件上传下载功能实例解析 (好用)
  6. Linux安装和配置java
  7. loadrunner 场景设计-手工场景方案(Schedule)设计 Part 2
  8. 基于 Node.js 的服务器自动化部署搭建实录
  9. java:LeakFilling(Spring)
  10. 【ABAP系列】SAP ABAP 动态指针