這是自己做的一個小例子,儘管實現有些繁雜,但功能已經完全實現,如果大家看了之後有好的實現方式,請指正
jsp中有登錄的form表單:
<form id="userform" action="" method="post" name="testlogin">
<s:textfield id="name" name="user.name" label="用戶名"></s:textfield><br/>
<s:password id="password" name="user.password" label="密碼"></s:password><br/>
<input type="button" value="登錄" onclick="login();"/>
<input type="button" value="重置" onclick="reset();"/>
</form>
struts的Action
public class MainAction extends ActionSupport {
private User user;
private String msg;
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public String index(){
return SUCCESS;
}
public String login(){
System.out.println(user.getName());
return SUCCESS;
}
public String check(){
this.msg = "0";
if(user.getName().equals("abc")){
this.msg = "1";
}else{
this.msg = "0";
}
return SUCCESS;
}
}
struts.xml文件針對ajax請求的Action的配置
<package name="" extends="json-default" namespace="">
<action name="" class="" method="">
<result name="success" type="json"></result>
</action>
</namespace>
利用jquery實現ajax:
function login(){
var params = $('#userform').serialize();//利用jquery將表單序列化
//jquery發送ajax請求
$.ajax({
url: '',
type: 'post',
dataType: 'json',
data: params,
success: doCheckSuccess
});
}
function doCheckSuccess(data){
if(data.msg == 1){
document.testlogin.submit();//testlogin爲form的name屬性
}else{
alert("用戶名已存在");
}
}
整個請求過程大概如下:
1、首先按照url和請求方式將序列化好的數據發送至對應的action,被序列化的params是name=123&password=123這樣的
2、action在處理完成之後將msg以json的形式發送至客戶端,由客戶端的js驗證