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>
结果如下:
【当你用心写完每一篇博客之后,你会发现它比你用代码实现功能更有成就感!】