来写下一步了,最近要发疯了,好多事情要做,我自己的计划都被打乱了,这次的六级又没指望了,除了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>
然后我们在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();
@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);
}
}
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();
//得到对应的mapper
usermapper usermapper =session.getMapper(com.example.loginpj.mapper.usermapper.class);
//调用对象,返回用户对象
Integer addUser1 =usermapper.addUser("qtds","123");
System.out.println(addUser1);
session.commit();
}
}
结果和数据库显示:(左边的文件结构也给出了)页面的测试下次在做


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