本文主要探讨普通数据如何快速转换为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中的转换与传递方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。