您的位置:首页 > 编程语言 > Java开发

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

2017-03-16 10:13 363 查看



首先要搭建好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的异步刷新了,菜鸟所写,还望多多指教
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: