关于Struts2和ajax的登录验证问题



首先要搭建好SSH环境,这就不说了,需要注意的就是要导入json所需要的包

然后在相应的Action中写一个登录验证的方法:

public class UserAction extends ActionSupport{
	@Resource(name="userService")
	private UserService userService;
	private User user;
	private String username;  
    private String password;  
    private String result; 
	public User getUser() {
		return user;
	}
	public void setUser(User user) {
		this.user = user;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getResult() {
		return result;
	}
	public void setResult(String result) {
		this.result = result;
	}
public String jsonLogin(){
		System.out.println(1111);
		System.out.println(username);
		try {  
            List<User> userList = userService.getUserByLoginid(username);  
            if (userList.isEmpty()) {  
                super.addActionError(super.getText("login.message.failed"));  
                result = "false";  
            } else {  
                user = userList.get(0);  
                if (password.equals(user.getPassword())) { 
                	HttpServletRequest request=ServletActionContext.getRequest();
            		HttpSession session=request.getSession();
            		session.setAttribute("username", username);
                    result ="true";  
                } else {  
                    //super.addActionError(super.getText("login.message.failed"));  
                    result ="false";  
                }  
            }  
        } catch (Exception e) {  
            // TODO: handle exception  
            e.printStackTrace();  
        }  
        return SUCCESS;  
	}

然后在stuuct2的配置文件中配置一下:
<package name="ajax" extends="json-default">
    	    <action name="jsonLogin" class="cn.wei.farm.action.UserAction" method="jsonLogin">  
            <result type="json"></result>  
        </action> 
    	</package>

红色的部分需要注意一定要设置为json的,不然前台无法获取json的数据

最后就是jsp页面的部分了:

<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  <title>Login Form</title>
  <script type="text/javascript" src="js/jquery-2.1.4.min.js"></script>  
  <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.10.0/jquery.validate.min.js"></script>  
  <link rel="stylesheet" href="css/style.css">
</head>
<body>

  <section class="container">
    <div class="login">
      <h1>用户登录</h1>
      <form method="post" role="form" id="login" action="">
        <p><input type="text" id="username" name="username" value="" placeholder="帐号"></p>
        <p><input type="password" id="password" name="password" value="" placeholder="密码"></p>
        <p class="remember_me">
          <label>
            <input type="checkbox" name="remember_me" id="remember_me">
            记住密码
          </label>
        </p>
        <p class="submit"><input type="submit" name="commit" value="登录"></p>
      </form>
    </div> 
    <div class="login-help">
      <p>忘记密码? <a href="index.html">点击修改</a>.</p>
    </div>
  </section>
  <script type="text/javascript">  
    jQuery(document).ready(function($){  
        $("form#login").validate({  
            errorClass: "error",  
            errorElement: "div",  
            errorPlacement: function(error, element) {  
                element.after(error);  
            },  
            rules: {  
                username: { required: true, minlength: 2},  
                password: { required: true, minlength: 2}  
            },  
            messages: {  
                username: { required: "用户名不能为空", minlength: $.validator.format("不得少于{0}字符.")},  
                password: { required: "密码不能为空", minlength: $.validator.format("不得少于{0}字符.")}  
            },  
            submitHandler: function(form)  
            {  
  
                $.ajax({  
                    url: "jsonLogin.action",  
                    method: 'POST',  
                    dataType: 'text',  
                    data: {  
                        do_login: true,  
                        username: $(form).find('#username').val(),  
                        password: $(form).find('#password').val()  
                    },  
                    success: function (json) {  
                        var obj = $.parseJSON(json);  //使用这个方法解析json  
                        var state_value = obj.result;  //result是和action中定义的result变量的get方法对应的  
                        if(state_value=="true"){  
                        	window.parent.location.href="index.html";  
                        }else{  
                            alert("用户名或密码错误,请重新输入!");  
                        }  
                    },  
                    error: function (json) {  
                        alert("json=" + json);  
                        return false;  
                    }  
                });  
  
            }  
        });  
    });  
</script>  
</body>
</html>
大概这样就能实现ajax的异步刷新了,菜鸟所写,还望多多指教


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值