首页 > 其他分享 >案例--用户注册

案例--用户注册

时间:2023-11-20 17:13:54浏览次数:28  
标签:username 用户名 用户注册 -- javax 案例 import servlet response

regiseter.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>


<form action="registerServlet" method="post">


    <table>
        <tr>
            <td>用户名</td>
            <td class="inputs">
                <input name = "username" type="text" id="username">
                <br>
                <span id="username_err" class="err_msg" style="display: none">用户名不太受欢迎</span>
            </td>
        </tr>

        <tr>
            <td>密码</td>
            <td class="inputs">
                <input name = "password" type="password" id="password">
                <br>
                <span id="password_err" class="err_msg" style="display: none">密码格式错误</span>
            </td>
        </tr>

        <tr>
            <td>手机号</td>
            <td class="inputs">
                <input name = "tele" type="text" id="tele">
                <br>
                <span id="tele_err" class="err_msg" style="display: none">请输入正确格式的手机号</span>
            </td>
        </tr>

        <tr>
            <td class="inputs">
                <input name = "tele" type="submit" id="reg-form" value="提交">
                <br>
                <!-- <span id="tele_err" class="err_msg" style="display: none">请输入正确格式的手机号</span> -->
            </td>
        </tr>

    </table>
</form>



<script>

    /*

    输入框验证


    */




    //1.1 获取用户名的输入框
    var usernameInput = document.getElementById("username");
    //1.2 绑定onblur事件,失去焦点
    usernameInput.onblur= usernameflag;
    //1.3 获取用户输入
    function usernameflag(){
        //去除空格
        var username = usernameInput.value.trim();
        //1.4判断是否合规
        // var flag = username.length >= 6 && username.length<=12 ;
        var reg = /^\w{6,12}$/;
        var flag = reg.test(username);
        if(flag){
            document.getElementById("username_err").style.display = "none";
        }
        else{
            document.getElementById("username_err").style.display = "";
        }
        return flag;
    }

    //1.验证密码是否合规
    //1.1 获取密码的输入框
    var passwordInput = document.getElementById("password");
    //1.2 绑定onblur事件,失去焦点
    passwordInput.onblur = passwordflag;
    //1.3 获取用户输入
    function passwordflag(){
//先去除所有空格
        var password = passwordInput.value.trim();
//1.4 判断是否合规
        var reg = /^\w{6,12}$/;
        var flag = reg.test(password);
//var flag = password.length>=6&&password.length<=12
        if(flag){
            document.getElementById("password_err").style.display = "none";
        }
        else{
            document.getElementById("password_err").style.display = "";
        }
        return flag;
    }
    //1.验证密码是否合规
    //1.1 获取密码的输入框
    var teleInput = document.getElementById("tele");
    //1.2 绑定onblur事件,失去焦点
    teleInput.onblur = teleflag;
    //1.3 获取用户输入
    //先去除所有空格
    function teleflag(){
        var tele = teleInput.value.trim();
// var flag = tele.length==11

        var reg = /^[1]\d{10}$/;
        var flag = reg.test(tele);

//1.4 判断是否合规
        if(flag){
            document.getElementById("tele_err").style.display = "none";
        }
        else{
            document.getElementById("tele_err").style.display = "";
        }
        return flag;

    }


    /*

    表单验证


    */
    //1、获取表单
    var regForm = document.getElementById("reg-form");


    //2、绑定onsumit事件
    regForm.onsubmit = function(){

        //判断每个表单项是否符合要求
        var flag = passwordflag() && usernameflag() && teleflag();
        return flag;

    }





</script>
<style>
    span{
        color:red;
    }
</style>

</body>
</html>

RegiseterSevlet

package com.avb.web;

import com.avb.Mapper.UserMapper;
import com.avb.pojo.User;
import jdk.jfr.Frequency;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.*;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/registerServlet")
public class RegisterServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
        //1、接收用户数据
        String username = request.getParameter("username");
        String password = request.getParameter("password");

        //封装用户对象
        User user = new User();
        user.setUsername(username);
        user.setPassword(password);

        //2   调用mapper 根据用户查询用户对象
        //2.1 获取SqlSessionFactory对象
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        //2.2获取SqlSession对象
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //2.3获取Mapper
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        //2.4调用方法
        User u = userMapper.selectByUsername(username);
        //3、判断用户对象释放为null
        if(u == null){
            //用户名不存在,添加用户
            userMapper.add(user);
            //提交事务
            sqlSession.commit();
            //释放资源
            sqlSession.close();
        }else {
            //用户名存在,给出提示信息
            //获取字符输出流,并设置content type
            response.setContentType("text/html;charset=utf-8");
            //PrintWriter writer = response.getWriter();
           // response.setContentType("text/html");
            response.getWriter().write("用户名已存在");
        }

    }

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

 

标签:username,用户名,用户注册,--,javax,案例,import,servlet,response
From: https://www.cnblogs.com/L-1906/p/17844361.html

相关文章

  • MySQL Select 语句执行顺序
    一条SQL查询语句结构如下:SELECTDISTINCT<select_list>FROM<left_table><join_type>JOIN<right_table>ON<join_condition>WHERE<where_condition>GROUPBY<group_by_list>HAVING<having_condition>ORDERBY<or......
  • CF1898 C Colorful Grid 题解
    LinkCF1898CColorfulGridQuestion给出一个\(N\timesM\)的网格图给每一条边染色(R/B),需要存在一条长度为\(K\)的路径从\((1,1)\)到\((N,M)\),路径允许重复通过一个节点。Solution非常有意思的一道题先考虑\(K\)满足的最小值,显然是\((N-1)+(M-1)\),假设走上->......
  • tomcat 通过 xml 部署应用
    tomcat部署应用最简单的方式是将war包丢进webapps目录下由于某些硬性要求,可能不允许将war包或解压后的部署包丢到webapps目录下,这时我们可以采用xml描述文件的方式来部署应用如果你部署的应用路径是demo,那么你需要新建一个demo.xml,内容如下:<?xmlversion='1.0'e......
  • 一次Java内存占用高的排查案例,解释了我对内存问题的所有疑问
      问题现象7月25号,我们一服务的内存占用较高,约13G,容器总内存16G,占用约85%,触发了内存报警(阈值85%),而我们是按容器内存60%(9.6G)的比例配置的JVM堆内存。看了下其它服务,同样的堆内存配置,它们内存占用约70%~79%,此服务比其它服务内存占用稍大。那为什么此服务内存占用稍大呢,它......
  • 内存加载.NET程序集&Bypass ETW
    内存加载.NET程序集&BypassETW在内存中加载可以使你的文件变得非常隐蔽,不需要落地文件。下面我们一起来学习一下,如何在内存中加载.net程序集,并且绕过ETW的检测。0x01Assembly.Load官方文档如下Assembly.Load方法(System.Reflection)|MicrosoftLearn,我在这里也简单介绍一......
  • shallow heap与remainder heap
     具有HeapProfiler功能的工具,如mat(memoryanalysetool)、GoogleHeapProfiler、JProfiler等,经常会出现shallowheap与remainderheap,这两个词在我们的实际开发中基本没有出现过,那么我们在用mat解析dump出来的Java内存文件时,出现的这两个词究竟是什么意思呢?shallowheaps......
  • 新版Testwell CTC++带来哪些新变化?
    TestwellCTC++在版本10中引入了新的工具ctcreport来直接从符号和数据文件生成HTML报告。详细的特性描述可以在测试井CTC++帮助中找到。在本文档中,描述了与前一代报告相比的改进和变化。 AdaptableLayout可调整布局您可以选择一个适合于项目结构的布局。布局决定了报告的详细......
  • Linux常用命令记录
    Linux常用命令记录系统目录结构文件与目录管理命令Linux的文件目录是树状结构,最顶级的目录为根目录/,其他目录是通过挂载将其添加到文件树上,通过解除挂载将其移除。首先先了解什么是绝对路径和相对路径绝对路径:从根目录开始的完整路径描述,通常以/开头,从根目录root一直到......
  • centos7上安装tkinter
    报错:YoumustinstalltkinteronLinuxtouseMouseInfo.Runthefollowing:sudoapt-getinstallpython3-dev1#yuminstall-ytktk-develtcltcl-devel2重新编译Python$./configure--with-tcltk-includes='-I/usr/local/include'--with-tcltk-l......
  • 大学物理下笔记
    电荷和场关键方程说明方程Coulomb'slaw库仑定律\(\vec{\mathbf{F}}_{12}=\dfrac{1}{4\pi\varepsilon_0}\dfrac{q_1q_2}{r_{12}^2}\hat{\mathbf{r}}_{12}\)无限导线的电场\(\vec{\mathbf{E}}(z)=\dfrac{1}{4\pi\varepsilon_0}\dfrac{2\lambda}{z}\hat{\m......