• 【JavaWeb】火车票管理系统 (三)用户注册-最终版


    来写下一步了,最近要发疯了,好多事情要做,我自己的计划都被打乱了,这次的六级又没指望了,除了html和javaweb,我都没有时间去做别的事情了,11月11html还要中期答辩,还要做ppt,我觉得我的立项没搞好,很冗余又复杂,翻车了。。。。唉,怎么办啊,每天都好绝望。。。但是没办法,我确实还有一些生活上的事情一直困扰着我,怎么说呢,学习就是痛苦的,就是无助的,就是失望的,不是说你一直期待着有那么一个人出现,然后你枯燥的、平淡的生活和学习就变得轻松了、有趣了,有意义了。而且,很多事情就是没有意义,你一样也要去做它。不能期待别人,我的神从来没有走向过我。。。

    用户注册流程:
    1、用户填写用户名、密码等信息,点击注册按钮,提交到RegisterServlet
    2、在RegisterServlet中使用MyBatis保存数据
    3、保存前,需要判断用户名是否已经存在;根据用户名查询数据库

    RegisterServlet:controller层
    1、接收用户数据
    2、调用mapper根据用户名查询,返回对象
    3、判断对象是否为空
    为null,用户名可用
    不为null,用户名重复
    usermapper:
    user queryUserByName(username)//用户名查询
    adduser(username,userpwd)//添加用户

    前面是5号写的,后来感冒了很多事情没做,慢慢的调整自己的心态,虽然还是剩下很多的事情没做,但是心情要好了很多,(明天就不一定了。。)把这个用户注册基本做好了,可以存入数据库中

    还是基于前面的用户类和users表,我们来实现用户注册,首先我们先写好前端页面register.jsp
    基本和登录前端是一样的,copy后修改就好,一样在js中要进行非空判断,要将from表单中的action和id修改。

    <%--
      Created by IntelliJ IDEA.
      User: 向阳
      Date: 2022/11/5
      Time: 16:53
      To change this template use File | Settings | File Templates.
    --%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>注册页面</title>
    </head>
    <body>
    <form action="/Register" method="post" id="registerform">
        姓名:<input type="text" name="uname" id="uname" value="${messageModel.object.username}" ><br>
        密码:<input type="password" name="upwd" id="upwd" value="${messageModel.object.userpwd}"><br>
       <input type="submit" id="butt" value="注册">
        <input type="reset" value="重新输入">
        <span id="msg" style="font-size: 12px">${messageModel.msg}</span><br>
    
    </form>
    </body>
    <script type="text/javascript" src="js/jquery.js"></script>
    <script type="text/javascript">
        <%--      登录表单验证:
                  1、登录按钮的点击事件
                  2、获取用户名字和密码
                  3、判断姓名是否为空
                      如果为空,用span标签提示用户,return
                      4、判断密码是否为空
                      5、都不为空就提交表单
               首页 index.jsp--%>
        $("#butt").click(function (){
            var uname=$("#uname").val();
            var upwd=$("#upwd").val();
            if(isempty(uname)){
                $("#msg").html("用户姓名不可为空!");
                return;
            }
            if(isempty(upwd)){
                $("#msg").html("用户密码不可为空!");
                return;
            }
            $("#registerform").submit();
        });
        //判断字符串是否为空
        function isempty(str){
            if(str==null||str.trim()=="")
                return true;
            else
                return false;
        }
    </script>
    </html>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55

    然后我们在usermapper.java中写好插入接口,注意两个参数时用@Param,

    package com.example.loginpj.mapper;
    
    import com.example.loginpj.entity.user;
    import org.apache.ibatis.annotations.Insert;
    import org.apache.ibatis.annotations.Mapper;
    import org.apache.ibatis.annotations.Param;
    
    //用户接口类
    @Mapper
    public interface usermapper {
        public user queryUserByName(String username);
    
    // @Insert("insert into users values (#{username},#{userpwd})")
       Integer addUser(@Param("username") String username, @Param("userpwd") String userpwd);
    //    添加用户
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    然后在它的映射文件mapper.xml中写它的方法(?不知道这样描述是否正确)注意id要和函数名相同,(对了java里面函数名单词第一个字母要大写,被老师说了两遍“一看你java就没学好”了,上数据结构的时候老师就说我“c语言白学了“哭哭)

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
        <mapper namespace="com.example.loginpj.mapper.usermapper">
    <!--    根据用户名查询用户对象-->
        <select id="queryUserByName" parameterType="String"
                resultType="com.example.loginpj.entity.user">
        select * from users where username= #{username};
        </select>
        <insert id="addUser"  parameterType="String">
            insert into users(username,userpwd) values(#{username},#{userpwd})
        </insert>
    </mapper>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    之后在controller层写RegisterServlet.java

    package com.example.loginpj.controller;
    
    import com.example.loginpj.entity.user;
    import com.example.loginpj.entity.vo.MessageModel;
    import com.example.loginpj.mapper.usermapper;
    import com.example.loginpj.service.RegisterService;
    import com.example.loginpj.service.userservice;
    import com.example.loginpj.util.GetSqlSession;
    import org.apache.ibatis.session.SqlSession;
    
    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(name = "RegisterServlet",urlPatterns = "/Register")
    public class RegisterServlet  extends HttpServlet {
        //    实例化service对象
        private RegisterService userreg =new RegisterService();
    
        @Override
        protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            //接收用户请求
            String uname=req.getParameter("uname");
            String upwd=req.getParameter("upwd");
            //调用service层的方法,返回消息模型对象
            MessageModel messageModel = RegisterService.userreg(uname,upwd);
    
          //  判断消息的状态码
            if(messageModel.getCode()==1){
                req.getSession().setAttribute("user",messageModel.getObject());
                resp.sendRedirect("index.jsp");
    
            }else{
                //将消息模型中用户信息设置到request中,并重新定向
                req.setAttribute("messageModel",messageModel);
                req.getRequestDispatcher("register.jsp").forward(req,resp);
            }
        }
    
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            super.doPost(req, resp);
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48

    service层写RegisterService.java,注意在消息模型=1时,表示用户可以注册,要用 session.commit();将数据提交,不然数据库里面是没有的。

    package com.example.loginpj.service;
    
    import com.example.loginpj.entity.user;
    import com.example.loginpj.entity.vo.MessageModel;
    import com.example.loginpj.mapper.usermapper;
    import com.example.loginpj.util.GetSqlSession;
    import com.example.loginpj.util.StringUtil;
    import org.apache.ibatis.session.SqlSession;
    
    public class RegisterService {
        public static MessageModel userreg(String uname, String upwd){
            MessageModel messageModel=new MessageModel();
            user u=new user();
            u.setUsername(uname);
            u.setUserpwd(upwd);
            messageModel.setObject(u);
    
            //参数非空判断
            if(StringUtil.isEmpty(uname)||StringUtil.isEmpty(upwd)){
                messageModel.setCode(0);
                messageModel.setMsg("用户姓名和密码不能为空。。");
            }
            //调用dao层的查询方法,通过用户名查询对象
            SqlSession session= GetSqlSession.createSqlSession();
            usermapper usermapper = session.getMapper(usermapper.class);
            user user=usermapper.queryUserByName(uname);
    
            if(user==null){
                //调用对象,返回用户对象
                usermapper.addUser(uname,upwd);
                session.commit();
                messageModel.setCode(1);
                messageModel.setMsg("注册成功。。");
                return messageModel;
            }
    //        if (uname==null&&upwd!=null){
    //            messageModel.setCode(0);
    //            messageModel.setMsg("密码不为空");
    //            return messageModel;
    //        }
    
            if(uname.equals(user.getUsername())){
                messageModel.setCode(0);
                messageModel.setMsg("用户已经存在");
                return messageModel;
            }
            if(!uname.equals(user.getUsername())){
                usermapper.addUser(uname,upwd);
                session.commit();
                usermapper.addUser(uname,upwd);
                session.commit();
                messageModel.setMsg("注册成功");
                return messageModel;
            }
    
            return messageModel;
        }
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60

    test测试里面:

    package com.example.loginpj.test;
    
    import com.example.loginpj.util.GetSqlSession;
    import org.apache.ibatis.session.SqlSession;
    import com.example.loginpj.entity.user;
    import com.example.loginpj.mapper.usermapper;
    public class test {
        public static void main(String[] args) {
            //获取sqlsession对象
            SqlSession session= GetSqlSession.createSqlSession();
            //得到对应的mapper
            usermapper usermapper =session.getMapper(com.example.loginpj.mapper.usermapper.class);
            //调用对象,返回用户对象
            Integer addUser1 =usermapper.addUser("qtds","123");
            System.out.println(addUser1);
            session.commit();
    
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    结果和数据库显示:(左边的文件结构也给出了)页面的测试下次在做
    在这里插入图片描述
    在这里插入图片描述
    要注意用户id在数据库中要设置成自增,可以看见我的数据库有一个乱码,那是我注册的时候输入的是中文

  • 相关阅读:
    亚马逊云科技 build on - 实验20220806
    python+vue+elementui固定资产管理系统django mysql
    【软件测试】(北京)字节跳动科技有限公司二面笔试题
    【中央任务调度系统—通信开发】
    Linux系统中驱动格式基本实现
    java毕业设计体育训练队的信息管理系统服务端源码+lw文档+mybatis+系统+mysql数据库+调试
    Nginx版本升级
    【错误:No package snapd available.】在 CentOS 上启用 snap 并安装 snapd
    JAVAEE之网络原理(2)_传输控制协议(TCP)、概念、格式、确认应答及超时重传机制
    spring boot 整合 swagger自动生成接口文档,搬砖都快乐了~
  • 原文地址:https://blog.csdn.net/weixin_52078305/article/details/127708709