验证用户名重复注册的问题

evang_shot 2013-01-24 01:58:07
目前有个项目,使用的是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:/";
...全文
6664 54 打赏 收藏 转发到动态 举报
写回复
用AI写文章
54 条回复
切换为时间正序
请发表友善的回复…
发表回复
e生态_修身 2013-01-30
  • 打赏
  • 举报
回复
重复提交可以设置你的按钮不可见,或者给来个灰屏幕这样用户就无法提交了呀!
程序员济癫 2013-01-29
  • 打赏
  • 举报
回复
1.struts2自带有防止重复提交的验证方式 2.国内有验证插件,很多人用,这个简单且美观,是居家旅行必备之物。
韩誉 2013-01-28
  • 打赏
  • 举报
回复
最好不要这样,用户费了半天功夫 填写完信息提交用户名重复。 那样用户会厌烦的。 使用填写用户框的失去焦点事件。通过ajax检测最好
tyasdxx 2013-01-28
  • 打赏
  • 举报
回复
以前学的都 忘完了, 我是来学习的
evang_shot 2013-01-28
  • 打赏
  • 举报
回复
引用 36 楼 suciver 的回复:
这说明你效果已经有了,都书堆了你不能提交是因为你没写 JavaScript code?123456在你的validate里面添加处理验证成功后表单的提交 submitHandler: function(form) { form.submit();//都通过了表单提交,如果是ajax提交可以使用$(form).ajaxSubmit();这个要引……
之前项目使用的是在form表单的action中添加路径进行跳转的。
evang_shot 2013-01-28
  • 打赏
  • 举报
回复
呵呵 ,已经解决了,准备结贴
Dream__Heart 2013-01-28
  • 打赏
  • 举报
回复
如果是用SSH开发的项目的话,这个很好实现,使用JSON格式向后台提交请求,然后在后台判断此用户名是否已经被注册,JSON会返回一个status,根据这个status的值给出相应提示就可以了!!。。。。。
hui619 2013-01-28
  • 打赏
  • 举报
回复
我现在这项目也是SSI框架,感觉很好用,最好能用异步用js方法先查询数据库有没有项目此用户名,这样比较方便,不然写了一大坨,还得重新写,异步DWR
hxgzyfff 2013-01-28
  • 打赏
  • 举报
回复
呵呵真强大,我的最爱
evang_shot 2013-01-28
  • 打赏
  • 举报
回复
引用 36 楼 suciver 的回复:
这说明你效果已经有了,都书堆了你不能提交是因为你没写 JavaScript code?123456在你的validate里面添加处理验证成功后表单的提交 submitHandler: function(form) { form.submit();//都通过了表单提交,如果是ajax提交可以使用$(form).ajaxSubmit();这个要引……
它之前是通过表单form的action进行提交的
evang_shot 2013-01-28
  • 打赏
  • 举报
回复
引用 46 楼 swpcsoft 的回复:
最好不要这样,用户费了半天功夫 填写完信息提交用户名重复。 那样用户会厌烦的。 使用填写用户框的失去焦点事件。通过ajax检测最好
嗯,我也这么认为。 呵呵· 你的宝宝很可爱哈。 是不是不要再form表单的action中添加路径?将跳转路径放在validate验证里写呢?
向上吧少年 2013-01-27
  • 打赏
  • 举报
回复
判断出错了把
secondfirstlife 2013-01-26
  • 打赏
  • 举报
回复
var valiFlag={ "childName":false, "parentName":false, "homeTown":false, "contact":false, "code":false } $(function (){ $("#childName").blur(function (){ var childName=$("#childName").val(); if(childName ==""){ $("#childNameInfo").html("宝宝姓名不能为空").css("color","#ff0000"); return valiFlag.childName=false; return; }else{ $("#childNameInfo").html(""); return valiFlag.childName=true; } }); }); $(function (){ $("#parentName").blur(function (){ var parenName=$("#parentName").val(); if(parenName ==""){ $("#parentNameInfo").html("父母姓名不能为空").css("color","#ff0000"); return valiFlag.parentName=false; return; }else{ $("#parentNameInfo").html(""); return valiFlag.parentName=true; } }); }); $(function (){ $("#homeTown").blur(function (){ var homeTown=$("#homeTown").val(); if(homeTown ==""){ $("#homeTownInfo").html("户口所在地不能为空").css("color","#ff0000"); return valiFlag.homeTown=false; return; }else{ $("#homeTownInfo").html(""); return valiFlag.homeTown=true; } }); }); $(function (){ $("#contact").blur(function (){ var contact=$("#contact").val(); if(contact ==""){ $("#contactInfo").html("户口所在地不能为空").css("color","#ff0000"); return valiFlag.contact=false; return; }else{ $("#contactInfo").html(""); return valiFlag.contact=true; } }); }); $(function (){ $("#code").blur(function (){ var code=$("#code"); var validateCoeUrl = '/member!!validateCode.xhtml'; if(MyJs.isNullByJQuery(code)) { $("#codeInfo").html("验证码不能为空").css("color","#ff0000"); valiFlag.code=false; return; } if(!MyJs.validateValue(validateCoeUrl, 'code', 'code')) { $("#codeInfo").html("验证码输入不正确").css("color","#ff0000"); valiFlag.code=false; return; }else{ $("#codeInfo").html("验证码正确"); valiFlag.code=true; } }); }); $(document).ready(function(){ $('#onlineBookSub').click(function(){ if(valiFlag.childName && valiFlag.parentName && valiFlag.homeTown && valiFlag.contact && valiFlag.code){ alert("注册成功"); $('#onlineBookForm').submit(); }else{ alert("验证不通过"); } }); }); 这个是我写的一个简单的验证,没有验证重复的用户,但上面的已经说得很清楚了,用AJAX就行了
whiterye 2013-01-26
  • 打赏
  • 举报
回复
后台:

.....
String usrname = request.getParameter("usrname");
.....(此处为数据库中对用户名的验证,存在返回result=false,不存在返回result=true)

if(result){
   response.getWriter().print(true);
}else{
   response.getWriter().print(false);
}
前台:

function usradd()
{
    $('#你所提交表单的id').form('submit', {
        url:"调用的后台servlet",
        onSubmit: function(){
        },
        success:function(data){
			//判定用户名是否存在
			if(data == "true"){
				$.messager.alert('提示','此用户已存在请重新设定','info');   // 用户名存在
			}else{ //用户名不存在添加成功
					closeForm();
					$.messager.alert('提示','提交成功','info');   
				}
			}
        }
    });
}
开灰机撞猪 2013-01-26
  • 打赏
  • 举报
回复
肯定是那里写错了仔细找找
hanfei081530246 2013-01-26
  • 打赏
  • 举报
回复
后台验证返回只要正确,前台发送异步请求根据接到的验证结果处理就可以了,前台使用JQuery,只要符合语法就行了!
mjhwy 2013-01-25
  • 打赏
  • 举报
回复
基本思路应该是 在用户名输入框写一个onchange方法,用ajax去和后台数据库比对,再返回结果,
suciver 2013-01-25
  • 打赏
  • 举报
回复
这说明你效果已经有了,都书堆了你不能提交是因为你没写

在你的validate里面添加处理验证成功后表单的提交
 submitHandler: function(form) 
   {      
      form.submit();//都通过了表单提交,如果是ajax提交可以使用$(form).ajaxSubmit();这个要引入jquery.form.js     
   }  
 }  
evang_shot 2013-01-25
  • 打赏
  • 举报
回复
引用 34 楼 suciver 的回复:
失去焦点的时候有没反应?
点击提交时,如果有一些数据不符合规则就会提示错误,但是都输对了,再点提交就没反应了
suciver 2013-01-25
  • 打赏
  • 举报
回复
失去焦点的时候有没反应?
加载更多回复(32)

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧