客户端往服务端发送json格式数据,服务端处理json数据(简单json格式)
先说下需求:写一个接口,接收数据格式是json。
如果使用springMVC实现,非常简单,方法中使用@RequestBody接收参数 即可,如下:
- <span style="white-space:pre"> </span>@ResponseBody
- @RequestMapping(value = "/create" , method = RequestMethod.POST)
- public XXX xxx(@RequestBody String json) {
- xxxxxx
- }
如果对springMVC实现比较感兴趣,自己去百度,网上一堆资料。
下面我介绍下使用struts2实现,这方面我找了很多资料,网上资料很杂,自己总结后并且实现了功能。
其实一开始自己的没弄明白原理,找的资料都是如何从页面传递json到后台,这并不是我想要的。
我们开发接口是供别人调用的,别人在他们项目中直接访问你的接口url并通过post请求传递json数据。我们接口中是要接收json数据并进行解析,可是json是一个整体,如何接收,没有key..使用谷歌的模拟post请求工具插件Advanced RestClient调试后发现,json数据其实是在post请求体中,类似于form表单,只不过json的httppost.setHeader("Content-Type","application/json"),而form表单为httppost.setHeader("Content-Type","application/x-www-form-urlencoded");所以可以获取post请求体中的内容再进行解析。代码如下:
- <span style="white-space:pre"> </span>//获取请求体中的数据
- public String getStrResponse(){
- ActionContext ctx = ActionContext.getContext();
- HttpServletRequest request = (HttpServletRequest)ctx.get(ServletActionContext.HTTP_REQUEST);
- InputStream inputStream;
- String strResponse = "";
- try {
- inputStream = request.getInputStream();
- String strMessage = "";
- BufferedReader reader;
- reader = new BufferedReader(new InputStreamReader(inputStream,"utf-8"));
- while ((strMessage = reader.readLine()) != null) {
- strResponse += strMessage;
- }
- reader.close();
- inputStream.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- return strResponse;
- }
- <span style="white-space:pre"> </span>/*XXXX任务接口*/
- public String XXXTask(){
- //获取请求体中内容,转换为json
- JSONObject jsonRequest = JSONObject.fromObject(this.getStrResponse());
- //获取json中参数
- String accountId1=jsonRequest.getString("account_id");
- Long accountId=Long.parseLong(accountId1);
- String verifyContent=jsonRequest.getString("verify_content");
- String verifyType=jsonRequest.getString("verify_type");
- log.info("获得请求参数[account_id:"+accountId+",verify_content:"+verifyContent+",verify_type:"+verifyType+"]");
- if("N".equalsIgnoreCase(verifyType)){
- verifyType = "1";
- }else if("A".equalsIgnoreCase(verifyType)){
- verifyType = "2";
- }else if("P".equalsIgnoreCase(verifyType)){
- verifyType = "3";
- }
- //下面为具体业务处理
- xxxxxxxxx
- try {
- xxxxxxxxxxxx
- resMap.put(Fields.ERROR_NO_KEY, 0);
- resMap.put(Fields.ERROR_INFO_KEY, "提交xxxx审核成功");
- log.info("提交xxxx审核成功");
- } catch (Exception e) {
- e.printStackTrace();
- resMap.put(Fields.ERROR_NO_KEY, -1);
- resMap.put(Fields.ERROR_INFO_KEY, "提交xxxx审核失败");
- log.error("提交xxxx审核失败");
- }
- return SUCCESS;
- }
测试 发送参数如下:
{
"account_id": "6",
"verify_content": "资料修改6",
"verify_type": "N"
}
成功接收参数。此时接口完成。
http://blog.csdn.net/devin_ran/article/details/53639205
相关推荐
后端使用struts2框架,前端使用ajax两者相互交互,传递json格式数据
androind http 请求 struts2 action 返回 json 数据 例子
该资源是使用struts2框架进行操作,返回json格式数据,前台通过ajax提交内容。
http://blog.csdn.net/gxy1317/article/details/52409360
struts2返回json数据用query在页面接收
通过struts2返回json数据类型很好的文档里面有例子说明的
当自己做出来时,感觉挺简单的,但想起自己刚开始做不会那会儿,真的挺悲哀的啊,在网上也搜了半天也没搜出个123,最终经过苦战终于做出来的,文档中重要部分都标红提示了,在此分享给童鞋们
Struts2 与Jquery Ajax的json数据交换的典型范例
Struts2+Json+Android简单实现,StrutsJson为服务端代码,JSONDemo为Android端代码
使用Struts2和jQuery EasyUI实现简单CRUD系统,从零开始,从基础的ajax与Struts2的使用json格式进行交互开始。
本压缩包里面含了在Struts2中使用JSON数据格式来传递数据时,所需要的全部jar包,支持struts2.18版本及以上,具有很好的兼容性。
如果是作为客户端的HTTP+JSON接口工程,没有JSP等view视图的情况下,使用Jersery框架开发绝对是第一选择。而在基于Spring3 MVC的架构下,对HTTP+JSON的返回类型也有很好的支持。...2.使用Struts2对JSON的扩展。
使用Struts2和jQuery EasyUI实现简单CRUD系统,从零开始,从基础的EasyUI与Struts2的使用json格式进行交互开始。
struts2-json-plugin,Struts JSON插件
利用AJAX传递JSON数组,后台struts2的action接收。 详细代码简单易懂。
struts2返回json数据类型
Struts2的开发文档,学习Struts2时可以用来查阅API相关接口说明,便于分析框架原理
Struts2_JSON_Demo
使用Struts2自带的json包返回json数据
struts2+json+jquery实现ajax数据的存取