用户注册实现方案一
来源:互联网 发布:驱逐舰 知乎 编辑:程序博客网 时间:2024/05/17 04:05
做用户注册功能非常头疼,想要做出某些网站的注册效果但苦于难以实现,经过半天的专研,总算写出点像样的东西来。随着学习的深入,以后还会修改方案,暂时供自己查阅使用。
代码:
1 输入框onblur调用此方法,传递参数field,作用是:后台根据field的类型,对field指定的字段进行校验。
// 输入框onblur调用此方法,传递参数field,作用是:后台根据field的类型,对field指定的字段进行校验。function ajaxValidate(field) {var flag = false; // 指定字段是否校验成功var username = $.trim($("#username").val());var password = $.trim($("#password").val());var rePassword = $.trim($("#rePassword").val());var email = $.trim($("#email").val());var name = $.trim($("#name").val());var phone = $.trim($("#phone").val());var addr = $.trim($("#addr").val());var vCode = $.trim($("#captcha").val()); // 验证码$.ajax({type: "POST",url: "${pageContext.request.contextPath}/user_registAjax.action",async: false, // 如果是异步的话,就得不到正确的返回值了。不过官方不推荐同步写法。。data: {"username": username,"password": password,"rePassword": rePassword,"email": email,"name": name,"phone": phone,"addr": addr,"vCode": vCode,"field": field // 需要校验的字段},success: function(result) {switch(result) {case "00": // 后台传过来的标识符,用来决定错误字符串$("#usernameSpan").text("用户名为空");$("#usernameSpan").css("color", "red");flag = false;break;case "01":$("#usernameSpan").text("用户名长度不在3-10之间");$("#usernameSpan").css("color", "red");flag = false;break;case "02":$("#usernameSpan").text("用户名已经被注册");$("#usernameSpan").css("color", "red");flag = false;break;case "03":$("#usernameSpan").text("用户名可以使用");$("#usernameSpan").css("color", "green");flag = true;break;case "10":$("#passwordSpan").text("密码为空");$("#passwordSpan").css("color", "red");flag = false;break;case "11":$("#passwordSpan").text("密码长度不在3-10之间");$("#passwordSpan").css("color", "red");flag = false;break;case "12":$("#passwordSpan").text("密码可以使用");$("#passwordSpan").css("color", "green");flag = true;break;case "20":$("#rePasswordSpan").text("两次密码输入不一致");$("#rePasswordSpan").css("color", "red");flag = false;break;case "21":$("#rePasswordSpan").text("两次密码输入一致");$("#rePasswordSpan").css("color", "green");flag = true;break;case "30":$("#emailSpan").text("邮箱为空");$("#emailSpan").css("color", "red");flag = false;break;case "31":$("#emailSpan").text("邮箱不符合规范");$("#emailSpan").css("color", "red");flag = false;break;case "32":$("#emailSpan").text("邮箱可以使用");$("#emailSpan").css("color", "green");flag = true;break;case "40":$("#vCodeSpan").text("验证码为空");$("#vCodeSpan").css("color", "red");flag = false;break;case "41":$("#vCodeSpan").text("验证码不正确");$("#vCodeSpan").css("color", "red");flag = false;break;case "42":$("#vCodeSpan").text("验证码正确");$("#vCodeSpan").css("color", "green");flag = true;break;default:break;}}});return flag;}
2 onsubmit校验,如果return false,则不提交;否则,提交
function validate() {var flag1 = ajaxValidate("username"); // 校验usernamevar flag2 = ajaxValidate("password");var flag3 = ajaxValidate("rePassword");var flag4 = ajaxValidate("email");var flag5 = ajaxValidate("vCode");var flag = flag1 && flag2 && flag3 && flag4 && flag5; // 所有字段必需同时校验成功return flag;}
3 调用js方法的代码
<!-- onsubmit如果返回false,则不提交;否则,提交 --> <form id="registerForm" method="post" novalidate="novalidate" onsubmit="return validate()" action="${pageContext.request.contextPath }/user_regist.action"> <!-- onblur调用ajaxValidate方法,传递的field为username --> <input type="text" id="username" name="username" class="text" onblur="ajaxValidate('username')"> <!-- 错误提示 --> <span id="usernameSpan"></span></form>
4 后台根据field对指定字段进行校验,并返回标识符,决定错误字符串
/** * 使用ajax技术进行注册判断 * @return * @throws IOException */public String registAjax() throws IOException {HttpServletRequest request = ServletActionContext.getRequest();HttpServletResponse response = ServletActionContext.getResponse();response.setContentType("text/html; charset=UTF-8");System.out.println("field:" + field);System.out.println("user: " + user);switch (field) {case "username":User existUser = userService.findByUserName(user.getUsername());if (user.getUsername().trim().equals("")) {response.getWriter().print("00"); // 用户名为空} else if(user.getUsername().trim().length() < 3 || user.getUsername().trim().length() > 10) {response.getWriter().print("01"); // 用户名长度不在3-10} else if (existUser != null) {response.getWriter().print("02"); // 用户名存在} else {response.getWriter().print("03"); // 用户名可以使用}break;case "password":if (user.getPassword().trim().equals("")) {response.getWriter().print("10"); // 密码为空} else if (user.getPassword().trim().length() < 3 || user.getPassword().trim().length() > 10) {response.getWriter().print("11"); // 密码长度不再3-10} else {response.getWriter().print("12"); // 密码可以使用}break;case "rePassword":if (rePassword.trim().equals("") || !user.getPassword().trim().equals(rePassword)) {response.getWriter().print("20"); // 两次密码输入不一致} else {response.getWriter().print("21"); // 两次密码输入一致}break;case "email":// 邮箱校验String check = "^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";Pattern regex = Pattern.compile(check);Matcher matcher = regex.matcher(user.getEmail());if (user.getEmail().trim().equals("")) {response.getWriter().print("30"); // 邮箱为空} else if (!matcher.matches()) {response.getWriter().print("31"); // 邮箱格式不正确} else {response.getWriter().print("32"); // 邮箱可以使用}break;case "vCode":System.out.println("vCode:" + vCode);if (vCode.trim().equals("")) {response.getWriter().print("40"); // 验证码为空} else if (!vCode.equalsIgnoreCase((String) request.getSession().getAttribute("vCode"))) {response.getWriter().print("41"); // 验证码不正确} else {response.getWriter().print("42"); // 验证码可以使用}break;default:break;}return NONE;}
阅读全文
0 0
- 用户注册实现方案一
- 使用Forms Authentication实现用户注册、登录 (一)基础知识
- 使用Forms Authentication实现用户注册、登录 (一)基础知识
- 使用Forms Authentication实现用户注册、登录 (一)基础知识
- 使用Forms Authentication实现用户注册、登录 (一)基础知识
- 使用Forms Authentication实现用户注册、登录 (一)基础知识
- 使用Forms Authentication实现用户注册、登录 (一)基础知识
- 使用Forms Authentication实现用户注册、登录 (一)基础知识
- 使用Forms Authentication实现用户注册、登录 (一)基础知识
- Java Web(一)用户注册页面的简单实现
- 实现用户注册与登录、登出(一)
- 用户注册的实现
- 用户注册表单实现
- php实现用户注册
- 实现用户注册
- Servlet实现用户注册
- 网站用户登录注册实现
- 用户注册实现邮箱激活
- dubbo的均衡策略
- java总结
- genymotion模拟器运行arm架构的应用出现java.lang.UnsatisfiedLinkError
- less简单的入门知识总结
- Java异常处理
- 用户注册实现方案一
- 【分析】Ceph:一个可扩展,高性能分布式文件系统
- 两个新玩意Node.js+LESS
- 等差数列
- 类的变量名 与 函数名不得相同,不然会报重定义的错误
- POST请求模拟工具、JSON请求工具、http接口测试、post接口测试
- logback 自定义Pattern模板
- 状态机理解
- lintcode python代码 422 最后一个单词长度