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

在项目中的action层 有时后会用到JsonObject来往页面传,这个跟request。setattribute有啥区别,或者struts2里的直接定义参数和对象 有啥区别?
补充问题:比如用的是Struts1   在Action类 一般都用request。setAttribute(list)
                用的是Struts2  直接在Action类定义private List 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包


       net.sf.json-lib
       json-lib
       2.4
       jdk15




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

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

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

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

你可能感兴趣的:(Java)