这几天在网上看到好几个朋友发帖问,struts2用response怎么将json值返回到页面javascript解析,这里介绍一个struts2与json整合后包的用法。
1.准备工作
①ajax使用Jquery:jquery-1.4.2.min.js
②struts2与json的依赖包:struts2-json-plugin-2.2.3.jar
PS:版本可自己控制!~
2.过程
①引入json依赖包
②编写action类
③配置struts.xml
④编写页面
⑤测试
3.实例
①action类,JsonAction注意包名
packagecom.zxt.action;
importcom.opensymphony.xwork2.ActionSupport;
/**
*
*@Title:JsonAction.java
*@Packagecom.zxt.action
*@Description:struts2+ajax+json用例
*@authorzxt
*@date2011-12-6上午10:38:51
*@versionV1.0
*/
publicclassJsonActionextendsActionSupport{
/**
*
*/
privatestaticfinallongserialVersionUID=7443363719737618408L;
/**
*姓名
*/
privateStringname;
/**
*身高
*/
privateStringinch;
/**
*ajax返回结果,也可是其他类型的,这里以String类型为例
*/
privateStringresult;
@Override
publicStringexecute()throwsException{
//TODOAuto-generatedmethodstub
if("张三".equals(name)){
result="身份验证通过,身高为"+inch;
}else
result="不是张三!";
returnSUCCESS;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicStringgetInch(){
returninch;
}
publicvoidsetInch(Stringinch){
this.inch=inch;
}
/**
*
*@Title:getResult
*@Description:json调取结果
*@param@return
*@returnString
*@throws
*/
publicStringgetResult(){
returnresult;
}
}
②struts配置。struts.xml
创建一个新的package,引入json-default
<packagename="ajax"extends="json-default">
<actionname="jsonAjax"class="com.zxt.action.JsonAction">
<!--将返回类型设置为json-->
<resulttype="json"></result>
</action>
</package>
③页面ajax写法,json.jsp
<%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%>
<%
Stringpath=request.getContextPath();
StringbasePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<basehref="<%=basePath%>">
<metahttp-equiv="Content-Type"content="text/html;charset=ISO-8859-1">
<title>测试</title>
<scripttype="text/javascript"src="include/js/jquery-1.4.2.min.js"></script>
<scripttype="text/javascript">
$(function(){
$("#tj").click(function(){
//提交的参数,name和inch是和strutsaction中对应的接收变量
varparams={
name:$("#xm").val(),
inch:$("#sg").val()
};
$.ajax({
type:"POST",
url:"jsonAjax.action",
data:params,
dataType:"text",//ajax返回值设置为text(json格式也可用它返回,可打印出结果,也可设置成json)
success:function(json){
varobj=$.parseJSON(json);//使用这个方法解析json
varstate_value=obj.result;//result是和action中定义的result变量的get方法对应的
alert(state_value);
},
error:function(json){
alert("json="+json);
returnfalse;
}
});
});
});
</script>
</head>
<body>
<span>姓名:</span><inputid="xm"type="text">
<br/>
<span>身高:</span><inputid="sg"type="text">
<br/>
<inputtype="button"value="提交"id="tj">
</body>
</html>
④启动站点,测试吧!~
按这个走完,一切ok。准备测试吧,看看它的强大效果!~O(∩_∩)O~
这只是最简单的一个例子(前后台交互),他能做的工作是非常多的,尽情发挥你的思想和才能吧!~
goodluck!
PS:
JQuery解析list的时候可参考,下面的小例子
vardata={"list":[{"id":1,"content":"测试信息1111"},{"id":2,"content":"测试信息2222"}]}
$.each(data.list,function(i,item){
alert(item.id);
alert(item.content);
});