农大旅游网案例第一期——用户注册(上)

代码 代码 1597 人阅读 | 0 人回复

<
媒介

正在进修了一段工夫的JavaWeb常识后,专主远期方案写一个综开的案例——农年夜旅游网。
正在那内里,会包罗:用户登录,用户注册,用户激活,网页设想,数据库创立等多个常识。正在本章的第一篇,我们首先去完成用户注册如许一个功用。


功用阐发

结果:我们希冀用户注册页里能够到达如许一个结果:它能够正在用户输进疑息后主动的来检测输进疑息的合理性,并做出响应的反应;而且当我们面击了注册按钮后,只要当输进的疑息合理时,用户表单才能够提交让背景来校验。那里我们选用jQuery完成反应结果,ajax去完成同步提交表单
页里:那里的页里我们选用的是html页里
数据库:创立一个tab_user表,记载闭于用户注册的相干疑息;经由过程Servlet,JDBC,java去完成用户疑息查重战保留的操作

注释

正在本节中,我们首先完成注册界里及其查验
为便利导包操作,该项目我们挑选用Maven去创立
构造图以下:
145253upxppiuprpneijyp.jpg

 
145254ccfn3db4cqsbn4x7.jpg


前台:

注册页里展现:
145254c2i7ao3990itqt9i.jpg

 源码:
  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4.     <meta charset="utf-8">
  5.     <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6.     <meta name="viewport" content="width=device-width, initial-scale=1">
  7.     <!-- 上述3个meta标签*必需*放正在最前里,任何其他内乱容皆*必需*跟从厥后! -->
  8.     <title>Title</title>
  9.     <!--1.导进CSS的齐局款式:栅格体系-->
  10.     <link rel="stylesheet" href="css/bootstrap.min.css" rel="stylesheet">
  11.     <!--2.jQuery导进-->
  12.     <script src="js/jquery-3.6.0.min.js"></script>
  13.     <!--3.导进bootstrap.min.js文件-->
  14.     <script src="js/bootstrap.min.js"></script>
  15.     <script type="text/javascript"></script>
  16.     <style>/*经由过程style引进CSS*/
  17.     * {
  18.         /*盒子模子,设置其窗体巨细没有会变*/
  19.         margin: 0px;
  20.         padding: 0px;
  21.         box-sizing: border-box;
  22.     }
  23.     body { /*布景*/
  24.         background: url("image/海滨云朵2.jpg") no-repeat center
  25.     }
  26.     .rg_layout { /*注册框*/
  27.         /*规划*/
  28.         width: 900px;
  29.         height: 530px;
  30.         /*表里鸿沟像素好,战之间的色彩:灰*/
  31.         border: 8px solid #EEEEEE;
  32.         /*内乱鸿沟的布景色*/
  33.         background-color: white;
  34.         /*程度居中*/
  35.         /*间隔上真个间隔*/
  36.         margin: 80px auto auto;
  37.     }
  38.     .rg_left { /*新用户注册几个字*/
  39.         /* border: 1px solid red;*/
  40.         float: left;
  41.     }
  42.     .rg_left > p:first-child { /*挑选p:first-child上的女类挑选器.rg_left*/
  43.         color: rgba(89, 120, 231, 0.77);
  44.         size: 20px;
  45.         /*中边距*/
  46.         margin: 15px;
  47.     }
  48.     .rg_left > p:last-child {
  49.         color: #A6A6A6;
  50.         size: 20px;
  51.     }
  52.     .rg_right { /*已有账号*/
  53.         /* border: 1px solid red;*/
  54.         float: right;
  55.         margin: 15px;
  56.     }
  57.     .rg_right > p :first-child { /*立刻登录*/
  58.         color: #18d3e5;
  59.         font-size: 14px;
  60.     }
  61.     .form-horizontal {
  62.         float: left;
  63.         margin-left: 90px;
  64.         margin-top: 40px;
  65.         /* border: 1px solid #5cb85c;*/
  66.         width: 59%;
  67.         margin-bottom: -50px;
  68.     }
  69.     .col-sm-2 control-label {
  70.         margin-right: 50px;
  71.     }
  72.     .form-group {
  73.         margin-left: 30px;
  74.     }
  75.     </style>
  76. </head>
  77. <body>
  78. <div class="rg_layout">
  79.     <div class="rg_left">
  80.         <p>新用户注册</p>
  81.         <p>USER REGISTER</p>
  82.     </div>
  83.     <div class="rg_center">
  84.         <form action="/registerUserServlet" method="get" class="form-horizontal" id="registerFrom"><!--/myMaven/registerUserServlet-->
  85.             <div class="form-group">
  86.                 <label for="username" class="col-sm-3 control-label">Username</label>
  87.                 <div class="col-sm-7">
  88.                     <input type="text" class="form-control" id="username" placeholder="请输进姓名" name="username">
  89.                 </div>
  90.             </div>
  91.             <div class="form-group">
  92.                 <label for="password" class="col-sm-3 control-label">Password</label>
  93.                 <div class="col-sm-7">
  94.                     <input type="text" class="form-control" id="password" placeholder="请输进暗码" name="password">
  95.                 </div>
  96.             </div>
  97.             <div class="form-group">
  98.                 <label for="email" class="col-sm-3 control-label">Email</label>
  99.                 <div class="col-sm-7">
  100.                     <input type="text" class="form-control" id="email" placeholder="请输进邮箱" name="email">
  101.                 </div>
  102.             </div>
  103.             <div class="form-group">
  104.                 <label for="name" class="col-sm-3 control-label">姓名</label>
  105.                 <div class="col-sm-7">
  106.                     <input type="text" class="form-control" id="name" placeholder="请输进姓名" name="name">
  107.                 </div>
  108.             </div>
  109.             <div class="form-group">
  110.                 <label for="telephone" class="col-sm-3 control-label">号码</label>
  111.                 <div class="col-sm-7"><!--width: 83.3%-->
  112.                     <input type="text" class="form-control" id="telephone" placeholder="请输进号码" name="telephone">
  113.                 </div>
  114.             </div>
  115.             <div class="form-group">
  116.                 <label class="col-sm-3 control-label">性别</label>
  117.                 <div class="col-sm-5" style="margin-top: 5px">
  118.                     <input type="radio" name="sex" value="male" checked>男
  119.                     <input type="radio" name="sex" value="female" style="margin-left: 20px">女
  120.                 </div>
  121.             </div>
  122.             <div class="form-group">
  123.                 <label for="birthday" class="col-sm-3 control-label">诞生日期</label>
  124.                 <div class="col-sm-5">
  125.                     <input type="text" class="form-control" id="birthday" name="birthday" placeholder="请输进诞生日期">
  126.                 </div>
  127.             </div>
  128.             <div class="form-group">
  129.                 <label for="checkCode" class="col-sm-3 control-label">考证码</label>
  130.                 <div class="col-sm-7"><!--style="border: 1px solid red"-->
  131.                     <input type="text " class="form-control" id="checkCode" placeholder="请输进考证码" name="checkCode"
  132.                            style="width: 50%;float: left;margin-right: 30px">
  133.                     <canvas id="canvas" onclick="dj()" style="border: 1px solid #ccc;
  134.                              border-radius: 5px;width: 95px;height: 35px"></canvas>
  135.                     <font id="errorMsg" style="font-family:隶书,serif;font-size: 17px "></font>
  136.                 </div>
  137.             </div>
  138.             <div class="form-group">
  139.                 <div class="col-sm-offset-2 col-sm-10" style="margin-top: 5px;margin-left: 150px">
  140.                     <button type="submit" class="btn btn-success" style="width: 80px;height: 40px" id="register"
  141.                             onclick="sublim()">Login
  142.                     </button>
  143.                                     
  144.                     <button type="reset" class="btn btn-warning" style="width: 80px;height: 40px" id="reset">Reset
  145.                     </button>
  146.                 </div>
  147.             </div>
  148.         </form>
  149.     </div>
  150.     <div class="rg_right">
  151.         <p>已有账号?<a href="login.html">立刻登录</a></p>
  152.     </div>
  153. </div>
  154. </body>
  155. </html>
复造代码
关于用户疑息合理性效验,考证码和同步提交表单,我们经由过程jQuery完成:
[code]<script>    var codeFlag = false;//用于断定考证码能否准确    function sublim() { //那里为提交按钮绑订单击事变,面击后主动停止考证码断定        var val = document.getElementById("checkCode").value;        var num = show_num.join("");        if (val == &#39;&#39;) {            $("#errorMsg").html("请输进考证码!")            $("#errorMsg").css("color", "rgba(219,174,11,0.97)");        } else if (val.compare(num)) {            $("#errorMsg").html("提交胜利!")            $("#errorMsg").css("color", "green");            codeFlag = true;            /*  alert("codeFlag="+codeFlag);*/            document.getElementById(".input-val").val(&#39;&#39;);            draw(show_num);        } else {           /* alert(&#39;考证码毛病!\n您输进的是:  &#39; + val + "\n准确的是:  " + num + &#39;\n请从头输进!&#39;);*/            $("#errorMsg").html("考证码毛病!");            $("#errorMsg").css("color", "red");            codeFlag = false;            /* alert("codeFlag="+codeFlag);*/            document.getElementById("code").value = &#39;&#39;;            draw(show_num);        }    }    /**     * 表单离焦同步校验:     * 1.用户名:少度8-20位     * 2.密码:单词字符,少度8-20位     * 3.email:邮件格局     * 4.姓名:非空     * 5.脚机号:脚机号的格局(11位数字)     * 6.诞生日期:非空     * 7.考证码:非空     */    //校验用户名    function checkUsername() {        let username = $("#username").val();        username = username.replace(/^\s*|\s*$/g, "");        var flag;        if (username != null && username !== "") {            $("#username").css("border", "");            flag = true;        } else {            $("#username").css("border", "1px solid red");            flag = false        }        return flag;    }    //校验用户名    function checkPassword() {        //1.获得用户名        const password = $("#password").val();        //2.界说正则:少度8-20位的单词字符组成        const reg_password = /^\w{8,20}$/;        //3.断定,给出提醒疑息        const flag = reg_password.test(password);        if (flag) {//用户名合理            $("#password").css("border", "");        } else {//用户名没有合理            $("#password").css("border", "1px solid red");        }        return flag;    }    function checkEmail() {        const email = $("#email").val();        const reg_email = /^\w+@\w+\.\w+$/;        const flag = reg_email.test(email);        if (flag) {            $("#email").css("border", "");        }        if (!flag) {            $("#email").css("border", "1px solid red");        }        return flag;    }    function checkName() {        const name = $("#name").val();        if (name != null && name != "") {            $("#name").css("border", "");            return true;        } else {            $("#name").css("border", "1px solid red");            return false;        }    }    function checkBirthday() {        const birthday = $("#birthday").val();        if (birthday != null && birthday != "") {            $("#birthday").css("border", "");            return true;        } else {            $("#birthday").css("border", "1px solid red");            return false;        }    }    function checkCode() {        const code = $("#checkCode").val();        if (code != null && code != "") {            $("#checkCode").css("border", "");            return true;        } else {            $("#checkCode").css("border", "1px solid red");            return false;        }    }    function checkTel() {        const tel = $("#telephone").val();        const reg_tel = /^[0-9]*$/;        const flag = reg_tel.test(tel);        if (flag) {            $("#telephone").css("border", "");        }        if (!flag) {            $("#telephone").css("border", "1px solid red");        }        return flag;    }    /**     * 同步(ajax)提交表单     * 正在此操纵同步提交表单是为了获得效劳器响应的数据,     * 由于我们前台操纵的是html做为试图层,不克不及间接从servlet相干的域工具获得值     * 只能经由过程ajax获得响应数据     */    $(function () {        //当表单提交时,挪用局部的办法,若挪用的办法返回ture或出有返回值,则表单提交;若返回false则表单没有提交        $("#registerFrom").submit(function () {            /**那里是要绑定全部表单,而没有是提交按钮!!!*/            //1.收收数据到效劳器            if (checkUsername() && checkPassword() && checkEmail() && checkName()                && checkTel() && checkBirthday() && checkCode() && codeFlag) {//没有要减括号                alert("校验胜利")                $.get("registerUserServlet", $(this).serialize(), function (data) {                    //处置效劳器响应的数据 data {内乱容有:flag,data,errorMsg,}                    alert(data.flag+" "+data.errorMsg);                    if (data.flag) {                        //注册胜利                        location.href="register_ok.html";  /**留意为location.href而没有是Location.href*/                       /* return true;*/                    } else {//注册失利,给errorMeg增加疑息                        alert(data.errorMsg);                        $("#errorMsg").html(data.errorMsg);                        $("#errorMsg").css("color","red");                        /*return false;*/                    }                });            } else {               /* alert("noPass!")*/                //设置为false是效验欠亨过期,制止跳转页里。保存当前页里形态                return false;            }        });        //落空中心后挪用相干办法 ( 留意函数名没有要带括号!!)        $("#username").blur(checkUsername);        $("#password").blur(checkPassword);        $("#email").blur(checkEmail);        $("#name").blur(checkName);        $("#birthday").blur(checkBirthday);        $("#code").blur(checkCode);        $("#telephone").blur(checkTel);    });    /**     * 天生考证码     * @param show_num     */    var show_num = [];    draw(show_num);    function draw(show_num) {        var canvas_width = document.getElementById(&#39;canvas&#39;).clientWidth;        var canvas_height = document.getElementById(&#39;canvas&#39;).clientHeight;        var canvas = document.getElementById("canvas");//获得到canvas的工具,演员        var context = canvas.getContext("2d");//获得到canvas绘图的情况,演员演出的舞台        canvas.width = canvas_width;        canvas.height = canvas_height;        var sCode = "A,B,C,E,F,G,H,J,K,L,M,N,P,Q,R,S,T,W,X,Y,Z,1,2,3,4,5,6,7,8,9,0,q,w,e,r,t,y,u,i,o,p,a,s,d,f,g,h,j,k,l,z,x,c,v,b,n,m";        var aCode = sCode.split(",");        var aLength = aCode.length;//获得到数组的少度        for (var i = 0; i
1、本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,按照目前互联网开放的原则,我们将在不通知作者的情况下,转载文章;如果原文明确注明“禁止转载”,我们一定不会转载。如果我们转载的文章不符合作者的版权声明或者作者不想让我们转载您的文章的话,请您发送邮箱:Cdnjson@163.com提供相关证明,我们将积极配合您!
2、本网站转载文章仅为传播更多信息之目的,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证信息的正确性和完整性,且不对因信息的不正确或遗漏导致的任何损失或损害承担责任。
3、任何透过本网站网页而链接及得到的资讯、产品及服务,本网站概不负责,亦不负任何法律责任。
4、本网站所刊发、转载的文章,其版权均归原作者所有,如其他媒体、网站或个人从本网下载使用,请在转载有关文章时务必尊重该文章的著作权,保留本网注明的“稿件来源”,并自负版权等法律责任。
回复 关闭延时

使用道具 举报

 
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则