java里的JSONObject作用是什么?什么时候用?

在项目中的action层 有时后会用到JsonObject来往页面传,这个跟request。setattribute有啥区别,或者struts2里的直接定义参数和对象 有啥区别?
补充问题:比如用的是Struts1   在Action类 一般都用request。setAttribute(list<T>)
                用的是Struts2  直接在Action类定义private List<T> list  页面直接可以接收到这个list
 
问题是:为啥有的项目里非要用JsonObject来
JSONObject json = JSONObject.fromObject(list);
System.out.println(json.toString()); //结果为:{"name":"hzucmj","age":22}??有啥区别


JsonObject 就是常说的 json。

是一种重要的数据传输对象。

其格式为{"key1":value1,"key2",value2....};key 必须是字符串。

很像map对不对,一个key,一个value。

因为ajax请求不刷新页面,但配合js可以实现局部刷新,因此json常常被用来作为异步请求的返回对象使用。

通过response.getWriter()获取PrintWriter pw,然后pw.print(json)。

如果没有设置response.setContentType("application/json; charset=utf-8"); 

则需要自己再js中进行解析。

举例说明:

1
2
3
4
5
6
7
8
9
10
11
response.setContentType( "application/json; charset=utf-8" ); 
PrintWriter pw =  response.getWriter();
Student s =  new  Student(。。。); //反正就是构造一个对象,有没有数据无所谓
JSONObjet json = JSONObjet .from(s); //将s转化成json对象。
pw .print(json);
pw .flush();
pw .close();
这样这个json对象就传到你发送请求的那个jsp上面。
而$.post(url,datas.function(data){})这里的data就是后台返回的值,也就是这里的json
只需要 var json = data; //就获取到了。
再取得原来Student的属性 var name = json.name(student 的name 属性);

比较request.setAttribute("key",value);

这个必须配合forwoar来转发跳转到需要这个value的jsp页面。页面刷新。

附:

maven管理json  的jar包

<dependency>
       <groupId>net.sf.json-lib</groupId>
       <artifactId>json-lib</artifactId>
       <version>2.4</version>
       <classifier>jdk15</classifier><!--如果出现导不了包,加上这句,具体原因参考https://blog.csdn.net/qqqqqq654/article/details/53425775-->

</dependency>



Java中交互方式分为同步和异步两种:

  1. 同步交互:指发送一个请求,需要等待返回,然后才能够发送下一个请求,有个等待过程;

  2. 异步交互:指发送一个请求,不需要等待返回,随时可以再发送下一个请求,即不需要等待。 区别:一个需要等待,一个不需要等待,在部分情况下,我们的项目开发中都会优先选择不需要等待的异步交互方式。

  3. 哪些情况建议使用同步交互呢?比如银行的转账系统,对数据库的保存操作等等,都会使用同步交互操作,其余情况都优先使用异步交互。(收藏自百度问题https://zhidao.baidu.com/question/2203418284898439108.html)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值