jquery+ajax前后端交互验证用户名是否唯一

前一段时间在备考开学考试,关于javaweb的编程题了解到会考到jquery+ajax前后端交互的问题,于是上网找了很多资料,整理出这篇笔记,最后代码也成功运行,希望可以给备考的宝宝们提供一些帮助。

我们考试的题:

使用jquery+ajax完成注册时的用户名验证,要求如下:

前端验证用户名是否合法,账号只能是长度4-12位的数字、字母、下划线

如果用户名合法,通过ajax访问后台验证用户名是否已存在,并给前台作出相应的提示

如果用户名不合法或者已存在,点击注册按钮无法提交表单。

项目目录如下:

  1. 创建Servlet并将servlet配置写入web.xml,这里的servlet-name是check根据自己的命名来写

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

    <servlet>
        <servlet-name>check</servlet-name>
        <servlet-class>com.labor.servlet.CheckUserNameServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>check</servlet-name>
        <url-pattern>/check</url-pattern>
    </servlet-mapping>

</web-app>
  1. 在web下创建一个包导入JS包,并且编写register.jsp前端页面以及ajax数据代码块:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>AJAX实际操作注册验证用户名</title>
</head>
<body>
    <form action="" method="post">
        账号:<input type="text" id="username" name="username"><span id="sp"></span><br>
        <input type="submit" value="注册">
    </form>
    <script src="JS/jquery.min.js"></script>

    <script>

        //给账号的文本框添加失去焦点事件        使用jquery绑定  input[name='username']
        $("input[name='username']").blur(function () {
            //获得用户输入的账号  账号只能是长度4-12位的数字、字母、下划线
            let username = $(this).val();    //let与var用法一致  获取输入的username
            //账号只能是长度4-12位的数字、字母、下划线
            let reg = /^\w{4,12}$/;
            if(!reg.test(username)){
                alert("用户名不合法!");
                return;//return可以结束掉整个方法
            }


            //验证用户名是否合法,如果用户名合法,这个函数返回true,否则返回false
            function checkUsername() {

            }
            //给账号的文本框添加失去焦点事件
            $("input[name='username']").blur(checkUsername)

            //表单的提交事件,如果这个方法返回的是true,就可以提交表单,否则提交不了
            $("form").submit(function () {
                //如果用户名合法,才提交表单
                let b = checkUsername();
                return b;
            })


            //要页面不刷新去访问后台 要使用ajax
            let b = true;
            $.ajax({
                url:"check",     //后台的action  在web.xml中  验证的Servlet路径
                type:"POST",     //以post方法提交数据给服务器
                data:{              //传给服务器的数据
                    "Mark":username,
                },      //"mark"为要向后台传入的参数名称
                //将异步请求改为同步
                async:false,
                //如果正常的访问了后台,就执行这个success中的function函数
                success:function (obj) {           //回调函数
                    if(obj == "1"){
                        $("#sp").text('用户名已存在').css("color","red");
                        //在ajax中return是不会返回值得,而是结束掉整个ajax
                        b = false;
                    }else{
                        $("#sp").text('√用户名通过验证').css("color","green");
                        location.href='success.jsp';
                    }

                },
            })


            //用户名合法,就要去该账户中验证用户名是否存在
            //要去数据库进行操作,肯定就要写Java代码,Java代码写在servlet中
            //要页面不刷新去访问后台,要使用ajax
            //异步  同步
            // location.href=''


        });
    </script>

</body>
</html>
  1. 编写一个success.jsp登录成功跳转的页面:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
   登录成功!
</body>
</html>
  1. 最后编写CheckUserNameServlet.java来接受前端数据作比较,先接收前端传过来的数据(用户名)与后端已存在的用户名作比较:

package com.labor.servlet;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.io.PrintWriter;

import static java.lang.System.out;

/*使用jquery+ajax完成注册时的用户名验证,要求如下:
        前端验证用户名是否合法,账号只能是长度4-12位的数字、字母、下划线
        如果用户名合法,通过ajax访问后台验证用户名是否已存在,并给前台作出相应的提示
        如果用户名不合法或者已存在,点击注册按钮无法提交表单。
        */
@WebServlet(name = "check", urlPatterns= "/check")
public class CheckUserNameServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //接受前端传进来的数据,即刚刚的data
        String username = request.getParameter("Mark").toString();

        PrintWriter out = response.getWriter();
        String is_name = "Mark";
        if(is_name.equals(username)){
            out.print("1");
        }else{
            out.print("2");
        }
        out.close();

    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);

    }
}

运行结果:

输入已经存在的用户名,会提示用户名已存在并且不会跳转页面

少于4个多于12个的用户名长度会弹出提示框:用户名不合法

登录成功跳转页面

谢谢大家的浏览。

希望这篇文章可以帮助到大家。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值