Struts的JSON机制

  

  需要加入jar包

 

 

 

 Struts的JSON帮助我们自动将对象解析为JSON对象,不用我门借助第三方进行JSON的解析

 

。具体的使用机制如下:

1.Action类

 

package StrutsJSON;

import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import com.opensymphony.xwork2.Action;

import freemarker.template.utility.NormalizeNewlines;


public class JSONtest {
    
    private Map<String,Object> map;
    private String name;
    private String password;
    List<User> list ;
    
    
    

    public List<User> getList() {
        return list;
    }

    public void setList(List<User> list) {
        this.list = list;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public Map<String, Object> getMap() {
        return map;
    }

    public void setMap(Map<String, Object> map) {
        this.map = map;
    }

    public String execute(){
        System.out.println(11);
        System.out.println(name+"  "+password);
        map = new LinkedHashMap<String,Object>();
//        测试布尔类型
        map.put("boob", 222);
//        测试集合类型
        list = new ArrayList<>();
        list.add(new User("qlq", "123456"));
        list.add(new User("qz", "78910"));
        map.put("list", list);
//        测试字符串类型
        map.put("str", "20");
        this.setMap(map);
//        测试对象
        map.put("obj", new User("wlw", "22222"));
        return Action.SUCCESS;
    }
}

 

 

 

 

xml配置(注意package继承json-default,json-default已经继承struts-default)

 

 

 

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE struts PUBLIC
 3     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 4     "http://struts.apache.org/dtds/struts-2.3.dtd">
 5 
 6 <struts>
 7 
 8     <constant name="struts.devMode" value="true"></constant>
 9     
10     <package name="test" extends="json-default">
11     
12         <action name="jsontest" class="StrutsJSON.JSONtest">
13             <result type="json">
14                 <param name="root">map</param>
15             </result>
16         </action>
17             
18         
19     </package>
20     
21     
22  
23   
24 </struts>

 

 

 

2.HTML通过ajax请求JSON数据

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4 <meta charset="UTF-8">
 5 <title>测试JSON的页面</title>
 6 <script type="text/javascript" src="js/jquery-1.8.3.min.js"></script>
 7 <script type="text/javascript">
 8     function fun1() {
 9         alert("开始请求数据");
10         $.get("jsontest.action", //请求地址
11         //"name=qlq&password=qlq",   //请求参数
12         {
13             "name" : "qlq",
14             "password" : "nicai"
15         }, //请求传递的参数,也可以是JSON
16         function(data) { //data表示传递回来的数据,只有在成功的时候才有
17              alert(data); 
18         }, "text" //表示返回内容的格式,json会将传回来的自动解析成json对象
19         );
20     }
21 </script>
22 </head>
23 <body>
24 
25     <input type="button" value="请求JSON数据" onclick="fun1()">
26 
27 
28 </body>
29 </html>

 

首先测试的是返回的数据格式,打印结果如下

 

 

将上面ajax请求返回数据格式改为json后再进行测试,

修改后HTML代码:

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4 <meta charset="UTF-8">
 5 <title>测试JSON的页面</title>
 6 <script type="text/javascript" src="js/jquery-1.8.3.min.js"></script>
 7 <script type="text/javascript">
 8     function fun1() {
 9         alert("开始请求数据");
10         $.get("jsontest.action", //请求地址
11         //"name=qlq&password=qlq",   //请求参数
12         {
13             "name" : "qlq",
14             "password" : "nicai"
15         }, //请求传递的参数,也可以是JSON
16         function(data) { //data表示传递回来的数据,只有在成功的时候才有
17             /* 测试json数组 */
18              alert(data.list[0].name+"  "+data.list[0].password); 
19         /* 测试json对象与单个属性 */
20              alert(data.obj.name+"  "+data.str); 
21         }, "json" //表示返回内容的格式,json会将传回来的自动解析成json对象
22         );
23     }
24 </script>
25 </head>
26 <body>
27 
28     <input type="button" value="请求JSON数据" onclick="fun1()">
29 
30 
31 </body>
32 </html>

 

结果如下:

                                    

 

posted @ 2017-07-15 21:49  QiaoZhi  阅读(325)  评论(0编辑  收藏  举报