来写下一步了,最近要发疯了,好多事情要做,我自己的计划都被打乱了,这次的六级又没指望了,除了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/5Time: 16:53To 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标签提示用户,return4、判断密码是否为空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;elsereturn false;}
</script>
</html>

然后我们在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);
//    添加用户
}

然后在它的映射文件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>

之后在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();@Overrideprotected 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);}}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {super.doPost(req, resp);}
}

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;}}

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();//得到对应的mapperusermapper usermapper =session.getMapper(com.example.loginpj.mapper.usermapper.class);//调用对象,返回用户对象Integer addUser1 =usermapper.addUser("qtds","123");System.out.println(addUser1);session.commit();}
}

结果和数据库显示:(左边的文件结构也给出了)页面的测试下次在做


要注意用户id在数据库中要设置成自增,可以看见我的数据库有一个乱码,那是我注册的时候输入的是中文

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

  1. 上海交通大学出版社python教材答案学生信息管理系统_学生信息管理系统(最终版)...

    <学生信息管理系统.doc>由会员分享,可免费在线阅读全文,更多与<学生信息管理系统(最终版)>相关文档资源请在帮帮文库(www.woc88.com)数亿文档库存里搜索. 1. ...

  2. 考勤管理系统c语言,C语言课程设计学生考勤系统最终版(范文1)

    <C语言课程设计学生考勤系统.doc>由会员分享,可免费在线阅读全文,更多与<C语言课程设计学生考勤系统(最终版)>相关文档资源请在帮帮文库(www.woc88.com)数亿文 ...

  3. 班级奖学金管理系统java_(奖学金评定管理系统设计)(最终版)

    <奖学金评定管理系统设计.doc>由会员分享,可免费在线阅读全文,更多与<(奖学金评定管理系统设计)(最终版)>相关文档资源请在帮帮文库(www.woc88.com)数亿文档库 ...

  4. Swing+Mysql实现的火车票管理系统3(功能分为普通用户和管理员,包含登录、车票查询、改签、购票、我的订单、用户注册、用户首页、车站管理、价格管理、用户管理等)

    博客目录 Swing+Mysql实现的火车票管理系统3 实现功能截图 系统功能 使用技术 代码 完整源码 Swing+Mysql实现的火车票管理系统3 本系统是一个火车票购票管理系统,分为普通用户和管 ...

  5. JavaWeb图书管理系统day02

    视频+资料+笔记[链接:https://pan.baidu.com/s/127I2oA8zvhTECCmC6wMSmQ   提取码:zjxs] JavaWeb图书管理系统[bookEstore文档] ...

  6. 叶新伟 php,基于php+mysql技术bbs论坛设计的开发与实现最终版(样例3)

    <基于php+mysql技术bbs论坛设计的开发与实现.doc>由会员分享,可免费在线阅读全文,更多与<基于php+mysql技术bbs论坛设计的开发与实现(最终版)>相关文档 ...

  7. 收银台模块php课程设计,【基于PHP+MySQL的美发店收银系统的设计与实现最终版材料】...

    基于PHP+MySQL的美发店收银系统的设计与实现(最终版) <基于PHP+MySQL的美发店收银系统的设计与实现.doc>由会员分享,可免费在线阅读全文,更多与<基于PHP+MyS ...

  8. 火车时刻表C语言报告,终稿火车订票系统的设计与实现课程设计.doc最终版(范文1)...

    <火车订票系统的设计与实现课程设计.doc>由会员分享,可免费在线阅读全文,更多与<(终稿)火车订票系统的设计与实现课程设计.doc(最终版)>相关文档资源请在帮帮文库(www ...

  9. C语言总结项目和入门大作业——信息管理系统(多文件版)

    文章目录 八. C语言入门大作业--信息管理系统(多文件版) 一. 功能模块的划分: 二. 多文件的编写 三. 基本函数的实现(重点) 四.文件操作函数 五.函数的辅助函数 六.多文件编程和联系 七. ...

最新文章

  1. sae python连接mysql_SAE Tornado 应用连接并使用 Mysql
  2. 2021年春季学期-信号与系统-第八次作业参考答案-第九小题
  3. 栈的应用-四则运算表达式
  4. 转载:中年程序猿的迷茫,你还在深究技术吗?
  5. 使用Tomcat Maven插件进行项目部署
  6. java 鼠标拖动画矩形_java怎么实现鼠标在桌面拖动过程中 画 矩形的 功能?
  7. Matlab自带的曲线拟合程序
  8. 黑苹果xxx.efi格式文件介绍
  9. Java Web(九) 用户管理系统
  10. 浅谈融云即时通讯服务「日志优化」
  11. win10键盘锁住了怎么解决
  12. 小程序切出去重新进入
  13. Java中的getBytes()方法详解
  14. 名称数据联网简介的翻译(计算机网络论文翻译)
  15. 设置Chrome浏览器不加载图片的方法
  16. WordPress页面教程【2021】
  17. Windows7双系统卸载Ubuntu
  18. “黑客”必备书籍 你值得拥有!
  19. 记录:捕鱼达人开发笔记
  20. 身份证最后一位校验码

热门文章

  1. 企业数字化转型,财务应该做些什么?
  2. 整合的图片压缩工具类ImageTools
  3. assembly打包
  4. Timestamp format must be yyyy-mm-dd hh:mm:ss[.fffffffff]
  5. 习题:设计一个学生类,其中数据成员有学号、姓名、年龄、3门课程的成绩,以及若干成员函数。并利用这个类建立一个对象数组。
  6. 如何利用函数指针在c语言中实现面向对象编程
  7. IMX6ULL学习笔记(11)——获取和编译官方SDK
  8. 何以突围短视频红海?秒拍海量播放下的高性能视频调度实践
  9. 梦幻日常技巧(种摇钱树,刷宝宝窝地点,拓本,合成变身卡)
  10. WebMagic快速入门