最近刚研究到struts2框架,利用hibernate+struts2在做一个简单的登录功能,请求action做一个简单的跳转,觉得在登录失败的时候应该用ajax效果实现,不应该页面跳转。
找了几篇大神的文章浏览了一下,实现其实挺简单的。修改struts.xml是关键
js:
$(function(){
//当点击登录按钮的时候,触发该事件
$("#subBtn").click(function(){
//获取文本框的账号密码
var username=$("#username").val();
var password=$("#password").val();
//发出ajax请求
$.ajax({
url:"/sdibt_struts/login",
dataType:"json",
type:"post",
data:{"user.username":username,"user.password":password},
success:function(data){
if(data == "yes"){
window.location.href="/sdibt_struts/login_success.html";
}else{
$("#fail").html("<span style='color:red'>密码错误,请重新输入<span>");
}
}
})
});
})
struts.xml配置
<package name="user" namespace="/" extends="json-default">
namespace要为空,要继承json-default
返回的类型是json类型,root是LoginAction类中的属性
<!-- user功能 -->
<package name="user" namespace="/" extends="json-default">
<action name="login" class="sdibt.fly.action.LoginAction" method="login">
<result name="success" type="json">
<param name="root">message</param>
</result>
</action>
</package>
LoginAction
package sdibt.fly.action;
import sdibt.fly.entity.User;
import sdibt.fly.services.UserServices;
/**
* 登录相关的方法
* @author lxj
*
*/
public class LoginAction {
//services功能
private UserServices userServices = new UserServices();
private User user;
//返回ajax得到的参数
private String message;
/**
* 用户登录
* @return
*/
public String login(){
//调用services方法,查询用户是否存在
boolean isHave = userServices.login(user);
if(isHave){
message="yes";
}else{
message="no";
}
return "success";
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}