json传数据到action时遇到的一些情况

遇到的问题:不知道如何接收json数据,不知道如何将json数据在前台转成键值对的形式,及不知道如何在用流接收到json数据后赋值给bean;


$("#form").serialize()可以获取到序列化的表单值字符串

通过$("#form").serializeArray()输出以数组形式序列化表单值
JSON.stringify($("#form").serializeObject()); 就可以得到Json内容噜。


contentType: "application/json; charset=utf-8",

这个类型是传json格式数据到后台

接受时用流来接收


contentType: "application/x-www-form-urlencoded",

这个类型是传键值对(a=b)格式数据到后台

用request.getParameter()方法来接收



$.param(item)  jQuery方法 把json的js对象转为"a=b&c=d"这种字符串的形式


用流来接收到json数据及如何赋值给bean

// StringBuffer sb = new StringBuffer();
// ServletInputStream in = request.getInputStream();
// BufferedReader br = new BufferedReader(new InputStreamReader(in, "utf-8"));
// String s = "";
// while((s=br.readLine())!=null){
// sb.append(s);
// }
username= new String(username.getBytes("iso-8859-1"),"utf-8");
// String str = sb.toString();
// br.close();
// String str1 = new String(str.getBytes("iso-8859-1"),"utf-8");
// System.out.println("AbstractServlet requestPOSTData str :" + str);
// System.out.println("AbstractServlet requestPOSTData str1 :" + str1);
// try {
// JSONObject map = new JSONObject();
// map = JSONObject.fromObject(str);
//
// ZnProject project = (ZnProject)JSONObject.toBean(map, ZnProject.class);
// project.setId(Integer.valueOf((String) map.get("id")));
//
// System.out.println(project);
projectManageService.update(model);
// } catch (Exception e) {
// System.out.println(e.toString());
// }



我认为的一种标准写法:

      1,首先引入struts2-json-plugin包

2,定义一个拦截器

<package name="json" namespace="/gry" extends=" struts-default, json-default">

<interceptors>
<interceptor-stack name="myInterceptorStack">
<interceptor-ref name="json">  
                <param name="contentType">application/json</param>  
            </interceptor-ref>
<interceptor-ref name="defaultStack"/>
</interceptor-stack>
</interceptors>

 
        <action name="main" class="com.zhuineng.test.TestAction" method="{1}">  
            <interceptor-ref name="myInterceptorStack"/>    
            <result type="json" />  
        </action>  
    </package>


3,jsp页面写正常的ajax

注意:data: JSON.stringify(data)  data为js对象,传递的格式大致为:

  1. var data = {  
  2.                     name: "john",  
  3.                     age: 30,  
  4.                     height: 1.78,  
  5.                     scores: [85, 90],  
  6.                     score_array: [85, 90],  
  7.                     array: [85,"Struts2"],  
  8.                     books_map: {  
  9.                         "struts2": 85  
  10.                     },  
  11.                     book: {  
  12.                         "name""Struts2",  
  13.                         "price": 85.3,  
  14.                         "sellers":[  
  15.                             "SA",  
  16.                             "SB"  
  17.                         ]  
  18.                     }  
  19.             };  

4,action接收的时候在action里边定义属性,提供set get方法,如果是类 需要先new出来

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值