JAVA项目:登录注册+表单检验(mysql+js+jQuery+Ajax异步刷新)

此DEMO包含以下功能

  1. 登录界面(检验用户密码是否为空)
  2. 检验登录(检验用户名密码是否匹配+传值到用户界面)
  3. 注册界面(表单检验+运用Ajax实现用户名唯一性检验并异步刷新提示)
  4. 检验注册(插入信息到mysql数据库)

登陆界面

在这里插入图片描述
登录界面包含了“检验用户名密码是否为空”,下面给出界面代码

loginUI.jsp

<%@ page contentType="text/html;charset=UTF-8" %>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录</title>
    <link rel="stylesheet" type="text/css" href="css/login.css">
    <script src="js/jquery-3.6.0.js" type="text/javascript" charset="utf-8"></script>
    <script>
        $(document).ready(function(){
            $("input").blur(function(){
                var $parent = $(this).parent();
                $parent.find(".onError").remove();
                if ($(this).is("#username")) {
                    if (this.value==="") {//检验用户名
                        $parent.append("<span class='onError' style='color: red;font-size: 5px'>用户名不能为空!</span>")
                    }
                }
                if ($(this).is("#password")) {
                    if (this.value==="") {//检验密码
                        $parent.append("<span class='onError' style='color: red;font-size: 5px'>密码不能为空!</span>")
                        }
                    }
            });
            //如果是空的话,则不能提交
            $("form").submit(function(){
                $("form input").trigger("blur");
                if($(".onError").length>0) return false;
            });
        });
    </script>
</head>
<body>
<section class="forms">
    <div class="container">
        <div class="forms-grid">
            <div class="login">
                <strong>欢迎登录</strong>
                <form action="#" method="post" class="login-form">
                    <div class="form">
                        <div class="form-row">
                            <label class="form-label">用户名</label>
                            <label for="username"></label>
                            <input type="text" class="form-text" id="username" name="username">

                        </div>
                        <div class="form-row">
                            <label class="form-label">密码</label>
                            <label for="password"></label>
                            <input type="password" class="form-text" id="password" name="password">
                        </div>
                        <div class="form-row bottom">
                            <a href="registerUI.jsp" class="register">点此注册</a>
                        </div>
                        <div class="form-row button-login">
                            <button type="button" class="btn" style="float: left" onclick="encodeURI(location.href='CheckLogin.jsp?username='+username.value+'&password='+password.value)">用户登录</button>
                        </div>
                        <form method="post" action="#">
                            <button type="button" class="btn" style="float: right" onclick="encodeURI(location.href='CheckAdmin.jsp?username='+username.value+'&password='+password.value)">后台登陆</button>
                        </form>

                    </div>
                </form>
            </div>
        </div>
    </div>
</section>
</body>
</html>

下面给出登录功能代码

CheckLogin.jsp

<%@ page import="java.sql.*" %>
<%@ page import="java.nio.charset.StandardCharsets" %>
<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head>
    <title>CheckLogin</title>
</head>
<body>
    <%
    	//从登录界面获取用户名和密码
        String username=new String(request.getParameter("username").getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);
        String pwd=new String(request.getParameter("password").getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);
        //加载连接数据库所需的信息
        String sDBDriver = "com.mysql.jdbc.Driver";
        String conStr = "jdbc:mysql://172.18.97.253:3306/webdb?useSSL=false";
        String dbname = "web";
        String password = "web";

        String usersex;
        String headpath;
		
		//连接数据库并进行查询
        Connection conn=null;
        try {
            Class.forName(sDBDriver);
            conn = DriverManager.getConnection(conStr, dbname, password);
        } catch (ClassNotFoundException | SQLException cnfe) {
            cnfe.printStackTrace();
        }
        if(conn!=null){
            String sql="select * from peo19082203 where name='"+username+"' and pwd='"+ pwd + "'";
            Statement stmt= null;
            try {
                stmt = conn.createStatement();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            ResultSet rs = null;
            try {
                assert stmt != null;
                rs = stmt.executeQuery(sql);//将查询结果保存到rs里面
            } catch (SQLException e) {
                e.printStackTrace();
            }

            try {
                assert rs != null;
                if(rs.next()){
                //在数据库里是将0作为女性,1作为男性,所以这里需要进行一个转换
                    if(rs.getString("sex").equals("0")){
                        usersex="男";
                    }else{
                        usersex="女";
                    }
                    if(rs.getString("photo")==null){//头像
                        headpath="image/backImg.png";
                    }else{
                        headpath=rs.getString("photo");
                    }
                    try {
                        response.sendRedirect("customerUI.jsp?name="+username+"&tel="+rs.getString("tel")+"&sex="+java.net.URLEncoder.encode(usersex, StandardCharsets.UTF_8)+"&path="+headpath);//若用户密码正确,则将信息传给用户界面
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
                else{
                    out.println("<script language='javascript'>alert('用户名或密码错误!');window.location.href='loginUI.jsp';</script>");//若用户名密码不正确则返回登陆界面,并弹出提示“用户名密码错误”
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        else{
            out.println("<script language='javascript'>alert('数据库连接失败!');window.location.href='loginUI.jsp';</script>");
        }
        try {
            assert conn != null;
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }


    %>
</body>
</html>

登录成功

在这里插入图片描述

登录失败

在这里插入图片描述

注册界面

在这里插入图片描述
Ajax实现用户名唯一性检验
在这里插入图片描述

registerUI.jsp

<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head>
    <title>Title</title>
    <link rel="stylesheet" type="text/css" href="css/login.css">
    <script src="js/jquery-3.6.0.js" type="text/javascript" charset="utf-8"></script>
    //表单检验
    <script>
        $(document).ready(function(){
            $("input").blur(function(){
                var $parent = $(this).parent();
                $parent.find(".onError").remove();
                if ($(this).is("#username")) {
                    if (this.value==="") {
                        $parent.append("<span class='onError' style='color: red;font-size: 5px'>用户名不能为空!</span>")
                    }
                }
                if ($(this).is("#password")) {
                    if (this.value==="") {
                        $parent.append("<span class='onError' style='color: red;font-size: 5px'>密码不能为空!</span>")
                    }
                    if(this.value.length < 6&&this.value.length>0){
                        $parent.append("<span class='formtips onError' style='color: red;font-size: 5px'>密码长度至少为六位!</span>")
                    }
                }
                if ($(this).is("#tel")) {
                    if (this.value==="") {
                        $parent.append("<span class='onError' style='color: red;font-size: 5px'>电话不能为空!</span>")
                    }
                    if(this.value.length !==11&&this.value.length>0){
                        $parent.append("<span class='formtips onError' style='color: red;font-size: 5px'>大陆手机电话号码应为11位</span>")
                    }
                }

            });

            $("form").submit(function(){
                $("form input").trigger("blur");
                if($(".onError").length>0) return false;
            });
        });
    </script>
	//Ajax异步刷新(用户名唯一性检验)
    <script type="text/javascript">
        var xmlHttpReq=null;
        function createRequest(){
            if(window.XMLHttpRequest){
                xmlHttpReq=new XMLHttpRequest();
            }else if(window.ActiveXObject){
                xmlHttpReq=new ActiveXObject("Microsoft.XMLHTTP");
            }
        }
        function getBackInfo(){
            createRequest();
            var username=document.getElementById("username").value;
            if(xmlHttpReq!=null){
                var url="CheckOnlyName.jsp?username="+username;
                xmlHttpReq.open("get",url,true);
                xmlHttpReq.onreadystatechange=Result;
                xmlHttpReq.send(null);
            }else{
                alert("请求失败!");
            }
        }
        function Result(){
            if(xmlHttpReq.readyState===4){
                if(xmlHttpReq.status===200){
                    document.getElementById("er").innerHTML=xmlHttpReq.responseText;
                }else{
                    alert("请求失败!");
                }
            }
        }
    </script>

</head>
<body>
<section class="forms">
    <div class="container">
        <div class="forms-grid">
            <div class="leftColumn">
                <div class="login">
                    <form class="login-form">
                        <div class="form">
                            <img src="image/机器人.png" height="368" width="276" alt="图片加载失败">
                            <h3>同心同德 拯溺救难</h3>
                        </div>
                    </form>
                </div>
            </div>
            <div class="login" style="height: 540px;width: 400px">
                <strong>注册</strong>
                <form action="CheckRegister.jsp" method="post" class="login-form">
                    <div class="form">
                        <div class="form-row">
                            <label class="form-label" style="color: #4d61fc">用户名</label>
                            <label for="username"></label>
                            <input onblur="getBackInfo()" type="text" class="form-text" id="username" name="username" placeholder="用户名不可是中文">
                            <div id="er" style='color: red;font-size: 5px'></div>
                        </div>
                        <div class="form-row">
                            <label class="form-label" style="color: #4d61fc">密码</label>
                            <label for="password"></label>
                            <input type="password" class="form-text" id="password" name="password" placeholder="密码长度不得小于6位">
                        </div>
                        <div class="form-row">
                            <label class="form-label" style="color: #4d61fc">电话</label>
                            <label for="password"></label>
                            <input type="tel" class="form-text" id="tel" name="tel" placeholder="请输入11位大陆电话号码">
                        </div>
                        <div class="sex" >
                            <label class="form-label" style="float: left;color: #4d61fc">性别</label>
                            <select name="sex" style="float: right">
                                <option value="0" style="font-size: 12px;"></option>
                                <option value="1" style="font-size: 12px;"></option>
                            </select><br/>
                        </div>
                        <div class="form-row button-login"  >
                            <button type="submit" class="btn" style="float: left">注册</button>
                            <button type="reset" class="btn" style="float: right">重置</button>
                        </div>
                    </div>
                  </div>
                </form>
            </div>
        </div>
    </div>
</section>
</body>
</html>

检验用户名唯一性

CheckOnlyName.jsp

<%@ page import="java.sql.*" pageEncoding="utf-8" %>

<%
    String username=request.getParameter("username");
    String sql="select name from peo19082203 where name='"+username+"'";

    String sDBDriver = "com.mysql.jdbc.Driver";
    String conStr = "jdbc:mysql://172.18.97.253:3306/webdb?useSSL=false";
    String dbname = "web";
    String password = "web";

    Connection conn=null;
    try {
        Class.forName(sDBDriver);
        conn = DriverManager.getConnection(conStr, dbname, password);
    } catch (ClassNotFoundException | SQLException cnfe) {
        cnfe.printStackTrace();
    }
    if(conn!=null) {
        Statement stmt = null;
        try {
            stmt = conn.createStatement();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        ResultSet rs = null;
        try {
            assert stmt != null;
            rs = stmt.executeQuery(sql);
        } catch (SQLException e) {
            e.printStackTrace();
        }

        try {
            assert rs != null;
            if (rs.next()) {
                out.println("账号已被注册");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

%>

注册功能

CheckRegister.jsp

<%@ page contentType="text/html;charset=UTF-8" import="java.sql.*"%>
<html>
<head>
    <title>CheckRegister</title>
</head>
<body>
    <%
    	//获取注册信息
        String username= request.getParameter("username");
        String pwd= request.getParameter("password");
        String sex= request.getParameter("sex");
        String tel= request.getParameter("tel");
		
		//加载连接数据库所需的信息
        String sDBDriver = "com.mysql.jdbc.Driver";
        String conStr = "jdbc:mysql://172.18.97.253:3306/webdb?useSSL=false";
        String dbname = "web";
        String password = "web";
        Connection conn=null;

        try {
            Class.forName(sDBDriver);
            conn = DriverManager.getConnection(conStr, dbname, password);
        } catch (ClassNotFoundException | SQLException cnfe) {
            cnfe.printStackTrace();
        }
        PreparedStatement pStmt = conn.prepareStatement("select * from peo19082203 where name = '" + username + "'");
		//首先检验用户是否存在,若存在则不注册
        ResultSet rs = pStmt.executeQuery();
        try {
            if(rs.next()){
                out.println("<script language='javascript'>alert('该用户已存在,请重新注册!');window.location.href='registerUI.jsp';</script>");
            }
            else {
                PreparedStatement tmt = null;
                try {//插入数据
                    tmt = conn.prepareStatement("Insert into peo19082203(name,pwd,sex,tel) values('"+username+"','"+pwd+"','"+sex+"','"+tel+"')");
                } catch (SQLException e) {
                    e.printStackTrace();
                }
                int rst = 0;
                try {
                    assert tmt != null;
                    rst = tmt.executeUpdate();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
                if (rst != 0){//注册成功跳转到注册页面
                    out.println("<script language='javascript'>alert('用户注册成功!');window.location.href='loginUI.jsp';</script>");
                }
                else{//注册失败跳转到注册页面
                    out.println("<script language='javascript'>alert('用户注册失败!');window.location.href='registerUI.jsp';</script>");
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        try {
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        try {
            pStmt.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        try {
            rs.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    %>
</body>
</html>

所用到的的css样式在我的资源库中。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青石横刀策马

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值