日期:2014-05-17  浏览次数:20644 次

验证用户名重复注册的问题
     目前有个项目,使用的是SSI,前端显示使用的Jquery的validate进行验证,目前网站需要做一个防止重复的用户名注册,但是由于对Jquery不是很了解,请教下各位如何有效的防止避免重复数据的保存呢?
    原理我目前了解了,就是在保存用户数据时,将提交的用户名与数据库的用户名进行比较,SQL呢,就是select count(1) from 表 where username = #{username} .返回一个1和0进行判断。但是我判断后还是没效果,不知道那里错了。有指教!!!
    我的控制跳转的代码:

String userName = userDao.getUsrName();
try {
if(userService.checkUsrName(userName) == 0){
User user = new User();
copyProperties(user, userDao, response);
user.setUsrPwd(ShaHex.messageDigest(userDao.getUsrPwd()));
user.setUsrHead("etb.jpg");//默认头像
userService.insert(user);
            } 
} catch (ServiceException e) {
         LOG.error("保存用户信息失败");
e.printStackTrace();
        }
return "redirect:/";

------解决方案--------------------
引用:
目前有个项目,使用的是SSI,前端显示使用的Jquery的validate进行验证,目前网站需要做一个防止重复的用户名注册,但是由于对Jquery不是很了解,请教下各位如何有效的防止避免重复数据的保存呢?
    原理我目前了解了,就是在保存用户数据时,将提交的用户名与数据库的用户名进行比较,SQL呢,就是select count(1) from 表 where username = ……

说实话这个和Jquery的关系不是很大,你的是否重复用户名的判断是在后台;
加个断点调试下就很清楚的知道问题出在哪了,如果你的说的没效果是指即使重复的用户名也写到表里去的话,你就好好检查下userService.checkUsrName(userName)方法
------解决方案--------------------
你断点这下:userService.checkUsrName(userName),看得到的结果是什么;

建议:int resultsNameCount = userService.checkUsrName(userName);
String userName = userDao.getUsrName();
        try {
            if(resultsNameCount  > 0){
                
            } 
        } catch (ServiceException e) {
            LOG.error("保存用户信息失败");
            e.printStackTrace();
        }
        return "redirect:/";
HttpServletRequest request = ServletActionContext.getRequest();
        HttpServletResponse response = ServletActionContext.getResponse();
        String userName = request.getParameter("userName");
       
        Integer sameNameCount = userManagerService.checkIsSameName(userName);
        if(sameNameCount > 0){
            response.getWriter().print("1");
        }else{
            response.getWriter().print("0");
        }
另外建议楼主:User user = new User();