struts2.1.8+json+jquery1.3实现ajax
要加的struts包有:
commons-beanutils-1.7.0.jar
commons-chain-1.2.jar
commons-collections-3.2.jar
commons-digester-2.0.jar
commons-fileupload-1.2.1.jar
commons-io-1.3.2.jar
commons-lang-2.3.jar
commons-logging-1.0.4.jar
commons-validator-1.3.1.jar
ezmorph-1.0.3.jar(不这个会去一非常怪错误。不相信你可以试试)我认为应该无法实现java对象与json对象之间转化.
freemarker-2.3.15.jar
json-lib-2.1.jar
ognl-2.7.3.jar
struts2-json-plugin-2.1.8.1.jar
xwork-core-2.1.6.jar
struts2-core-2.1.8.1.jar
web.xml
Xml代码
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
strust.xml
Xml代码
<packagename="ajax"extends="json-default">
<actionname="ajaxLogin"class="org.test.action.AjaxLoginAction">
<!--返回类型为json在json-default中定义-->
<resulttype="json">
<!--root的值对应要返回的值的属性-->
<!--这里的result值即是对应action中的result-->
<paramname="root">result</param>
</result>
</action>
</package>
<packagename="ajax"extends="json-default">
<actionname="ajaxLogin"class="org.test.action.AjaxLoginAction">
<!--返回类型为json在json-default中定义-->
<resulttype="json">
<!--root的值对应要返回的值的属性-->
<!--这里的result值即是对应action中的result-->
<paramname="root">result</param>
</result>
</action>
</package>
action代码:
Java代码
privateStringresult;
//struts的属性驱动模式,自动填充页面的属性到这里
privateStringloginName;
privateStringpassword;
publicStringgetResult(){
returnresult;
}
publicvoidsetResult(Stringresult){
this.result=result;
}
publicStringgetLoginName(){
returnloginName;
}
publicvoidsetLoginName(StringloginName){
this.loginName=loginName;
}
publicStringgetPassword(){
returnpassword;
}
publicvoidsetPassword(Stringpassword){
this.password=password;
}
@Override
publicStringexecute(){
try{
System.out.println("------------");
//用一个Map做例子
Map<String,String>map=newHashMap<String,String>();
System.out.println(this.loginName);
//为map添加一条数据,记录一下页面传过来loginName
map.put("name",this.loginName);
map.put("password",this.password);
//将要返回的map对象进行json处理
JSONObjectjo=JSONObject.fromObject(map);
System.out.println("*********");
//调用json对象的toString方法转换为字符串然后赋值给result
this.result=jo.toString();
//可以测试一下result
System.out.println(this.result);
}catch(Exceptione){
System.out.println(e);
}
returnSUCCESS;
}
privateStringresult;
//struts的属性驱动模式,自动填充页面的属性到这里
privateStringloginName;
privateStringpassword;
publicStringgetResult(){
returnresult;
}
publicvoidsetResult(Stringresult){
this.result=result;
}
publicStringgetLoginName(){
returnloginName;
}
publicvoidsetLoginName(StringloginName){
this.loginName=loginName;
}
publicStringgetPassword(){
returnpassword;
}
publicvoidsetPassword(Stringpassword){
this.password=password;
}
@Override
publicStringexecute(){
try{
System.out.println("------------");
//用一个Map做例子
Map<String,String>map=newHashMap<String,String>();
System.out.println(this.loginName);
//为map添加一条数据,记录一下页面传过来loginName
map.put("name",this.loginName);
map.put("password",this.password);
//将要返回的map对象进行json处理
JSONObjectjo=JSONObject.fromObject(map);
System.out.println("*********");
//调用json对象的toString方法转换为字符串然后赋值给result
this.result=jo.toString();
//可以测试一下result
System.out.println(this.result);
}catch(Exceptione){
System.out.println(e);
}
returnSUCCESS;
}
index.jsp
Html代码
<%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%>
<%@taglibprefix="s"uri="/struts-tags"%>
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=UTF-8">
<scripttype="text/javascript"src="js/jquery-1.3.2.min.js"></script><scripttype="text/javascript">
$(document).ready(function(){
//使用Ajax的方式判断登录
$("#btn_login").click(function(){
varurl='ajaxLogin.action';
//获取表单值,并以json的数据形式保存到params中
varparams={
loginName:$("#loginName").val(),
password:$("#password").val()
//上行结尾决对不加逗号(,)。如果加了在IE6下就不能运行实现了。
}
alert(params.loginName);
//使用$.post方式
$.post(
url,//服务器要接受的url
params,//传递的参数
functioncbf(data){//服务器返回后执行的函数参数data保存的就是服务器发送到客户端的数据
//alert(data);
varmember=eval("("+data+")");//包数据解析为json格式
$('#result').html("欢迎您:"+member.name+"<br>您的密码是:"+member.password);
},
'json'//数据传递的类型json
);
});
});
</script>
</head>
<body>
<center>
<table>
<tr>
<td>
<span>用户名:</span>
</td>
<td>
<inputtype="text"id="loginName"name="loginName">
</td>
</tr>
<tr>
<td>
<span>密码:</span>
</td>
<td>
<inputtype="password"name="password"id="password">
</td>
</tr>
<tr>
<tdcolspan="2">
<inputtype="button"id="btn_login"value="Login"/>
</td>
</tr>
</table>
<p>
这里显示ajax信息:
<br/>
<spanid="result"></span>
</p>
</center>
</body>
</html>
相关推荐
结束数据方法的参数,该如何定义?-- 集合为自定义实体类中的结合属性,有几个实体类,改变下标就行了。<input id="add" type="button" value="新增visitor&quo