Javaweb - 实例功能(下) - 用户注册功能实现(mybatis、maven、mysql、tomcat、servlet)

流程说明

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

请添加图片描述

UserMapper.java

编写UserMapper接口中方法,这里add方法使用mybatis,不使用注解,容易bug

package com.taotao.mapper;

import com.taotao.pojo.User;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

@SuppressWarnings({"all"})
public interface UserMapper {
    /**
     * 根据用户名和密码查询用户对象
     * @param username
     * @param password
     * @return
     */
    @Select("select * from tb_user where username = #{username} and password = #{password}")
    User select(@Param("username") String username, @Param("password") String password);

    /**
     * 根据用户名查询用户对象
     * @param username
     * @return
     */
    @Select("select * from tb_user where username = #{username}")
    User selectByUsername(String username);

//    /**
//     * 添加用户
//     * @param user
//     */
//    @Insert("insert into tb_user values (null,#{username},#{password})")
    void add(User user);
}

映射sql

编写映射UserMapper.xml文件

<?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.taotao.mapper.UserMapper">

    <insert id="add">
        insert into tb_user(id,username,password)
        values (null,#{username},#{password});
    </insert>
</mapper>

Register表单

编写Register.html表单页面

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>Register</title>
		<link rel="stylesheet" type="text/css" href="./css/log.css"/>
	</head>
	<body>
		<form action="/User_demo1/registerServlet" method="post">
			<p class="head">Welcome Register</p>
			<input id="user" name="username" type="text" placeholder="Username:"><br>
			<input id="paws" name="password" type="password" placeholder="Password:"><br>
			<input id="sub" type="submit" value="Register"/>
		</form>
		<script src="./js/log.js" type="text/javascript" charset="utf-8"></script>
	</body>
</html>

css文件

	*{
				margin: 0;
				padding: 0;
				border: 0px;
			}
			body{
				background-color: skyblue;
			}
			form{
				position: absolute;
				left: 50%;
				top: 50%;
				margin-left: -300px;
				margin-top: -280px;
				width: 600px;
				height: 400px;
				background-color: #ebc4c4;
				border: 1px solid;
				border-radius: 10px;
				box-shadow: 0px 0px 5px 5px rgba(0,0,0,.3);
				transition: all 1s;
				opacity: 0;
			}
			.show{
				opacity: 1;
				transform:translateY(80px)
				
			}
			.head{
				width: 100%;
				font-family: "隶书";
				text-align: center;
				font-size: 24px;
				color: #ffffff;
				margin-top: 50px;
				letter-spacing: 5px;
			}
			#user{
				position: absolute;
				top: 40%;
				left: 50%;
				margin-left: -100px;
				width: 200px;
				height: 20px;
				outline: none;
				background-color: transparent;
				border-bottom: 1px solid;
			}
			#paws{
				position: absolute;
				top: 50%;
				left: 50%;
				margin-left: -100px;
				width: 200px;
				height: 20px;
				outline: none;
				background-color: transparent;
				border-bottom: 1px solid;
			}
			#sub{
				position: absolute;
				top: 60%;
				left: 50%;
				margin-left: -60px;
				width: 120px;
				height: 35px;
				background-color: orange;
				border-radius: 8px;
			}
			#sub:hover{
				cursor: pointer;
				background-color: #87CEEB;
			}

Js文件

 var from = document.querySelector('form');
		   console.log(from);
window.addEventListener('load',function(){
		from.className=('show'+' from')
})

RegisterServlet

com.taotao.web包下新建RegisterServlet.java类

package com.taotao.web;

import com.taotao.mapper.UserMapper;
import com.taotao.pojo.User;
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 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;
import java.io.InputStream;

/**
 * create by 刘鸿涛
 * 2022/3/26 23:04
 */
@SuppressWarnings({"all"})
@WebServlet(urlPatterns = "/registerServlet")
public class RegisterServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1.接收用户数据
        String username = req.getParameter("username");
        String password = req.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);
        System.out.println(user);
        //设置utf-8编码格式以及识别html标签
        resp.setContentType("text/html;charset=utf-8");

        //3.判断用户对象是否为null
        if (u == null){
            //用户名不存在,添加用户
            userMapper.add(user);
            //提交事务
            sqlSession.commit();

            //释放资源
            sqlSession.close();
            resp.getWriter().write("create user successful!!");
        }else {
            //用户名存在,给出提示信息
            resp.getWriter().write("can't create the user,the user is exists");
        }
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doGet(req, resp);
    }


}

测试运行

请添加图片描述

注意

遇到了一个注解sql参数报错,最后使用mybatis映射文件sql解决问题

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鬼鬼骑士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值