这次呢,主要记录下账号密码的验证和显示。
本来页面和后台的交互应该挺简单,我用了struts2,多加了跳转调度,唉!问题就来了……
两种实现方法:
方法一:
1. Action部分:
public void login() throws IOException{
msg=null;
udao = new UserDao();
user = udao.getUserByName(name);
if(user==null){
msg="1";
}else if(user.getPsd().equals(password)){
msg="3";
}else
{
msg="2";
}
ServletActionContext.getResponse().getWriter().write(msg);
}
注意:void 没有返回值的哦、如果带返回值,再用struts跳转的话,用alert显示一下msg,你会发现alert的是整个html页面的代码……我都以为是MyEclipse出了问题。。。
2.页面部分:
$.ajax( {
url : "user!login.action",
data : {
"name": userName,
"password": password,
},
type : "post",
dataType : "text",
async:false,
beforeSend:function(){
$('#tip').text("正在登陆……");
},
error: function () {//请求失败处理函数
alert('请求失败');
return false;
},
success: function(msg){
if(msg == "1"){
$('#tip').text('该用户不存在!');
$("#name").focus();
return false;
}else if(msg == "2"){
$('#tip').text('密码错误!');
$("#password").focus();
return false;
}
else
form.submit();
}
});
dataType試過json,但是不行,每次都執行error,我用的是jquery-2.1.1,網上查了說是json的格式要求嚴格了,讓去json.org查看,菜鳥……不懂
方法二:
struts.xml:
<action name="login" class="user.action.UserAction">
<result type="json">
<param name="root">msg</param>
</result>
</action>
这样的话,就不要用ServletActionContext.getResponse().getWriter().write(msg);了,当初我两个方法用到一起了,结果发现网页alert的时候msg显示两遍。