本文主要探讨普通数据如何快速转换为Json数据,一共讨论2种方法:
首相准备页面和实体类:
页面:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
<body> <div id= "topLoginDiv" > 用户名: <input name= "user.name" id= "loginName" /> 密码: <input name= "user.password" id= "loginPassword" /> <label class = "ui-green" > <input type= "button" name= "loginButton" value= "登录" onclick= "doLogin();" /> </label> </div> <div id= "demo" ></div> </body> |
实体类:
1
2
3
4
5
6
7
8
9
10
|
package bean; public class User { private int id; private String userName; private String password; ......省略Get和Set方法 } |
方法一:使用JSON转换包进行JSON数据的转换
第一步,引入相关相关包
第二步:页面提交及回调函数处理结果。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<script type= "text/javascript" > function doLogin(){ var name = $( '#loginName' ).val(); var password = $( '#loginPassword' ).val(); var data1 ={ 'user.userName' :name, 'user.password' :password}; $.getJSON( 'user_login.action' ,data1,function(data){ //此处须用$.getJSON来处理JSON数据 if (data.flag){ $( '#topLoginDiv' ).html( "" ); $( '#demo' ).html( "当前用户:" +data.user.userName+ " " +data.msg); } else { $( '#demo' ).html(data.msg); } }); } </script> |
第三步:Struts2跳转到Action中进行JSON的转换《关键步骤》
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
private User user= new User(); private boolean flag; private String msg; ......省略Get和Set方法 public String login() throws IOException{ if (user.getUserName().equals( "admin" )&&user.getPassword().equals( "123456" )){ msg= "登陆成功" ; flag= true ; } else { msg= "登录失败,用户名或密码错误!" ; flag= false ; } Map<String,Object> list = new HashMap<String,Object>(); //此处的Map不用get和Set方法 list.put( "flag" , flag); list.put( "msg" ,msg); if (flag){ list.put( "user" ,user); } ServletActionContext.getResponse().setCharacterEncoding( "UTF-8" ); ServletActionContext.getResponse().getWriter().print(JSONObject.fromObject(list)); return null ; //此处返回值为NULL,不需要再回到ACTION配置中进行处理 } |
方法二:使用Struts2配置Action进行JSON数据的转换
第一步:引入包
此种方法只需要在使用Struts2所需包的基础上引入下面这一个包即可:
第二步:页面提交及回调函数处理结果。参考方法一中的第二步。
第三步:配置Action
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
< package name= "json_default" namespace= "/" extends = "json-default" > //注意此处的extends配置 <action name= "user_*" class = "Action.userAction" method= "{1}" > <result type= "json" > //此处指明类型 <!-- 参数root指定要序列化得根对象 --> <!-- 默认将序列化当前Action中所有有返回值的getter方法的值 --> <param name= "root" >list</param> <!-- 参数includeProperties指定要序列化根对象中的哪些属性,多个属性以逗号隔开--> <param name= "includeProperties" >msg,flag,user,user.userName</param> <!-- 参数excludeProperties指定要从根对象中排除的属性,排除属性将不被序列化--> <param name= "excludeProperties" >user.password</param> <!-- 参数excludeNullProperties指定是否序列化值为空的属性--> <param name= "excludeNullProperties" > true </param> </result> </action> </ package > |
第四步:Struts2跳转到Action中进行JSON的转换《关键步骤》
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
private User user= new User(); private boolean flag; private String msg; private Map<String,Object> list= null ; //需要为MAP准备get和Set方法 ..................省略Get和Set方法 public String login() throws IOException{ if (user.getUserName().equals( "admin" )&&user.getPassword().equals( "123456" )){ msg= "登陆成功" ; flag= true ; } else { msg= "登录失败,用户名或密码错误!" ; flag= false ; } list= new HashMap<String,Object>(); list.put( "flag" , flag); list.put( "msg" ,msg); if (flag){ list.put( "user" ,user); } return "success" ; //返回值为success确保能跳进Action配置文件进行数据转换 |
以上这篇Json在Struts中的转换与传递方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。