jsp验证用户名重复注册的问题
目前有个项目,使用的是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:/";
说实话这个和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();
copyProperties(user, userDao, response);
user.setUsrPwd(ShaHex.messageDigest(userDao.getUsrPwd()));
user.setUsrHead("etb.jpg");//默认头像
userService.insert(user);
刚没下完就提交上去了,其实我想说的是:
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");
}
像这样,把保存方法分开写,然后前台jsp用ajax解析下,符合条件然后跳转保存方法,否则提示已存在,不可添加。 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);
}
else {
//用户名已经被注册
}