1. 当前所在位置:
  2. 首页
  3. 星力捕鱼

JSONObject作用是什么?什么时候用?

2019-01-18 admin
在项目中的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中交互方式分为同步和异步两种:
 
同步交互:指发送一个请求,需要等待返回,然后才能够发送下一个请求,有个等待过程;
 
异步交互:指发送一个请求,不需要等待返回,随时可以再发送下一个请求,即不需要等待。 区别:一个需要等待,一个不需要等待,在部分情况下,我们的项目开发中都会优先选择不需要等待的异步交互方式。
 
哪些情况建议使用同步交互呢?比如银行的转账系统,对数据库的保存操作等等,都会使用同步交互操作,其余情况都优先使用异步交互。
--------------------- 
作者:Jdli 
来源:CSDN 
原文:https://blog.csdn.net/qq_19810699/article/details/80006850 
版权声明:本文为博主原创文章,转载请附上博文链接!
捕鱼驾到