功能:根据用户输入的用户名和密码,自动读取该账户的状态(锁定或开放),若是开放则允许登录,否则不允许登录
Jsp:
<s:form id="theform" action="user_login" method="post" namespace="/"
theme="simple">
<p class="main">
<label>用户名: </label> <input id="userid" name="uname" type="text" value="" />
<label>密码:</label> <input id="passid" name="upass" type="password" onblur="judgeLogin()"/>
</p>
<p class="space">
<input id="id" type="submit" value="登录" class="login"
style="cursor: pointer;" onclick="judgeLogin()"/>
<script>
<!--避免用户多次点击-->
$("form").submit(function() {
$("#id").val("正在处理...");
$("#id").attr("disabled", "disabled");
});
</script>
</p>
</s:form>
Js代码片段:
function judgeLogin(){
if($("#userid").val()==""){
alert("请输入用户名");
event.preventDefault(); // 兼容标准浏览器
// window.event.returnValue = false; // 兼容IE6~8
// alert(window.event.returnValue.ToString());
}
else if($("#passid").val()==""){
alert("请输入密码");
event.preventDefault(); // 兼容标准浏览器
window.event.returnValue = false; // 兼容IE6~8
}
else{
$.ajax({
type: 'Post',
url: 'judgeUserLock.action',//此处的Action要与struts.xml中的action的name对应
data: { 'UserId': $("#userid").val(), 'PassId': $("#passid").val() },
dataType: 'json',
async:false,
success: function (r) {
// alert(r.result);
if (r.result == "false") {
alert("该账号已被锁定!");
event.preventDefault(); // 兼容标准浏览器(不知什么原因,此处的事件阻止语句不起作用,窘迫)
window.event.returnValue = false; // 兼容IE6~8
}
},
error: function (err) {
alert("登陆失败,请检查账号密码");
}
});
}
}
Action代码片段
public class LoginLockAction extends ActionSupport implements ModelDriven<User> {
private String UserId;
private String PassId;
private String result;
//使用模型驱动,提供封装好的User对象并实例化
private User user = new User();
/*
* (non-Javadoc)
*
* @see com.opensymphony.xwork2.ModelDriven#getModel()
*/
public User getModel() {
// TODO Auto-generated method stub
return user;
}
/*
* 注入UserSerivce
*/
private UserService userService;
public void setUserService(UserService userService) {
this.userService = userService;
}
/*
* AJAX接受前台传送的数据,要设置同Ajax中相同的属性名UserId、PassId
*/
public void setUserId(String userId) {
UserId = userId;
}
public void setPassId(String passId) {
PassId = passId;
}
public String getResult() {
return result;
}
public void setResult(String result) {
this.result = result;
}
public String execute() throws Exception {
user.setUname(UserId);
user.setUpass(PassId);
this.result = userService.checkLock(user);
System.out.println("this.result的值为:" + this.result);
return "success";
}
}
Service代码片段:
注意要在application中注入UserDao
/*
* 判断前台ajax传过数据是否合法
*/
public String checkLock(User user) {
System.out.println("flag值为:" + userDao.checkLock(user));
if (userDao.checkLock(user).equals("1")) { // 字符串比较用equal比较值,==比较引用
// System.out.println("userDao.checkLock:" + userDao.checkLock(user));
return "false";
} else
return "true";
}
Dao类
/**
* @param user
* @return
* 根据用户名和密码查询其状态flag
*/
@SuppressWarnings("unchecked")
public String checkLock(User user) {
// TODO Auto-generated method stub
String hql = "select flag from User where uname=? and upass=?";
Session session = getSessionFactory().getCurrentSession();
Query query = session.createQuery(hql);
query.setString(0, user.getUname());
query.setString(1, user.getUpass());
List<String> list = query.list();
if (list.size() > 0) {
return list.get(0);
} else
return null;
}
Struts-xml配置
<!-- ajax异步验证 -->
<package name="SSHAjax" extends="json-default">
<!-- 此处的name必须和前台ajax的url值一致 -->
<action name="judgeUserLock" class="me.zhshiqi.action.LoginLockAction">
<result name="success" type="json"></result>
</action>
</package>