用户唯一性验证(ajax)

验证用户添加或者修改时用户名的唯一性:

验证时机:用户名改变时,表单提交时。

1.jsp页面:(前端)

  1 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  2 <html>
  3 <head>
  4     <%@include file="/common/header.jsp"%>
  5     <title>用户管理</title>
  6     <script type="text/javascript" src="${basePath }js/datepicker/WdatePicker.js"></script>
  7     <script type="text/javascript">
  8     var vResult = false;
  9         //校验帐号唯一
 10         function doVerify(){
 11             //1、获取帐号
 12             var account = $("#account").val();
 13             if(account != ""){
 14                 //2、校验 
 15                 $.ajax({
 16                     url:"${basePath}nsfw/user_verifyAccount.action",
 17                     data: {"user.account": account},
 18                     type: "post",
 19                     async: false,//非异步
 20                     success: function(msg){
 21                         if("true" != msg){
 22                             //帐号已经存在
 23                             alert("帐号已经存在。请使用其它帐号!");
 24                             //定焦
 25                             $("#account").focus();
 26                             vResult = false;
 27                         } else {
 28                             vResult = true;
 29                         }
 30                     }
 31                 });
 32             }
 33         }
 34         //提交表单
 35         function doSubmit(){
 36             var name = $("#name");
 37             if(name.val() == ""){
 38                 alert("用户名不能为空!");
 39                 name.focus();
 40                 return false;
 41             }
 42             var password = $("#password");
 43             if(password.val() == ""){
 44                 alert("密码不能为空!");
 45                 password.focus();
 46                 return false;
 47             }
 48             //帐号校验
 49             doVerify();
 50             if(vResult){
 51                 //提交表单
 52                 document.forms[0].submit();
 53             }
 54         }
 55     </script>
 56 </head>
 57 <body class="rightBody">
 58 <form id="form" name="form" action="${basePath }nsfw/user_add.action" method="post" enctype="multipart/form-data">
 59     <div class="p_d_1">
 60         <div class="p_d_1_1">
 61             <div class="content_info">
 62     <div class="c_crumbs"><div><b></b><strong>用户管理</strong>&nbsp;-&nbsp;新增用户</div></div>
 63     <div class="tableH2">新增用户</div>
 64     <table id="baseInfo" width="100%" align="center" class="list" border="0" cellpadding="0" cellspacing="0"  >
 65         <tr>
 66             <td class="tdBg" width="200px">所属部门:</td>
 67             <td><s:select name="user.dept" list="#{'部门A':'部门A','部门B':'部门B' }"/></td>
 68         </tr>
 69         <tr>
 70             <td class="tdBg" width="200px">头像:</td>
 71             <td>
 72                 <input type="file" name="headImg"/>
 73             </td>
 74         </tr>
 75         <tr>
 76             <td class="tdBg" width="200px">用户名:</td>
 77             <td><s:textfield id="name" name="user.name"/> </td>
 78         </tr>
 79         <tr>
 80             <td class="tdBg" width="200px">帐号:</td>
 81             <td><s:textfield id="account" name="user.account" onchange="doVerify()"/></td>
 82         </tr>
 83         <tr>
 84             <td class="tdBg" width="200px">密码:</td>
 85             <td><s:textfield id="password" name="user.password"/></td>
 86         </tr>
 87         <tr>
 88             <td class="tdBg" width="200px">性别:</td>
 89             <td><s:radio list="#{'true':'男','false':'女'}" name="user.gender"/></td>
 90         </tr>
 91         <tr>
 92             <td class="tdBg" width="200px">角色:</td>
 93             <td></td>
 94         </tr>
 95         <tr>
 96             <td class="tdBg" width="200px">电子邮箱:</td>
 97             <td><s:textfield name="user.email"/></td>
 98         </tr>
 99         <tr>
100             <td class="tdBg" width="200px">手机号:</td>
101             <td><s:textfield name="user.mobile"/></td>
102         </tr>
103         <tr>
104             <td class="tdBg" width="200px">生日:</td>
105             <td><s:textfield id="birthday" name="user.birthday" readonly="true" onfocus="WdatePicker({'skin':'whyGreen','dateFmt':'yyyy-MM-dd'});" /></td>
106         </tr>
107         <tr>
108             <td class="tdBg" width="200px">状态:</td>
109             <td><s:radio list="#{'1':'有效','0':'无效'}" name="user.state" value="1"/></td>
110         </tr>
111         <tr>
112             <td class="tdBg" width="200px">备注:</td>
113             <td><s:textarea name="user.memo" cols="75" rows="3"/></td>
114         </tr>
115     </table>
116     <div class="tc mt20">
117         <input type="button" class="btnB2" value="保存" onclick="doSubmit()" />
118         &nbsp;&nbsp;&nbsp;&nbsp;
119         <input type="button"  onclick="javascript:history.go(-1)" class="btnB2" value="返回" />
120     </div>
121     </div></div></div>
122 </form>
123 </body>
124 </html>

2.java代码:(action层):

 1 //校验用户帐号唯一
 2     public void verifyAccount(){
 3         try {
 4             //1、获取帐号
 5             if(user != null && StringUtils.isNotBlank(user.getAccount())){
 6                 //2、根据帐号到数据库中校验是否存在该帐号对应的用户
 7                 List<User> list = userService.findUserByAccountAndId(user.getId(), user.getAccount());
 8                 String strResult = "true";
 9                 if(list != null && list.size() > 0){
10                     //说明该帐号已经存在
11                     strResult = "false";
12                 }
13                 
14                 //输出
15                 HttpServletResponse response = ServletActionContext.getResponse();
16                 response.setContentType("text/html");
17                 ServletOutputStream outputStream = response.getOutputStream();
18                 outputStream.write(strResult.getBytes());
19                 outputStream.close(); 
20             }
21         } catch (Exception e) {
22             e.printStackTrace();
23         }
24     }

3.在daoimpl里面实现findUserByAccountAndId方法:

 1 public class UserDaoImpl extends BaseDaoImpl<User> implements UserDao {
 2 
 3     @Override
 4     public List<User> findUserByAccountAndId(String id, String account) {
 5         String hql = "FROM User WHERE account = ?";
 6         if(StringUtils.isNotBlank(id)){
 7             hql += " AND id!=?";
 8         }
 9         Query query = getSession().createQuery(hql);
10         query.setParameter(0, account);
11         if(StringUtils.isNotBlank(id)){
12             query.setParameter(1, id);
13         }
14         
15         return query.list();
16     }
17 
18 }

 

posted @ 2017-02-27 17:40  懒得像猪  阅读(3686)  评论(0编辑  收藏  举报