ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

mybatis+servlet实现用户注册与登录

2022-08-26 16:30:54  阅读:168  来源: 互联网

标签:username java String 用户注册 org mybatis import password servlet


环境准备

  1. 创建注册页面与登录页面
    login.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>login</title>
</head>
<body>
<form action="/tomcat_war/loginServlet" method="post">
    <h1 id="loginMsg">Login In</h1>
    <p>username:<input id="username" name="username" type="text"></p>
    <p>password:<input id="password" name="password" type="password"></p>
    <input type="submit" class="button" value="login up">
    <input type="reset" class="button" value="reset">
    <a href="register.html">没有账号?点击注册</a>
</form>
</body>
</html>

register.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>register</title>
</head>
<body>
<form action="/tomcat_war/registerServlet" method="get">
    <h1>Login In</h1>
    <p>username:<input id="username" name="username" type="text"></p>
    <p>password:<input id="password" name="password" type="password"></p>
    <input type="submit" class="button" value="register">
    <input type="reset" class="button" value="reset">
    <a href="login.html">已有账号,跳转到登录</a>
</form>
</body>
</html>
  1. 在数据库中创建表与数据(数据库名为db)
create table tb_user (
    id int primary key auto_increment,
    username varchar(20) unique,
    password varchar(32)
);

insert into tb_user(username, password) values('zhangsan', '123'), ('lisi', '234');

select * from tb_user;
  1. 创建POJO类User.java(在pojo目录下)
package org.example.pojo;

public class User {
    private Integer id;
    private String username;
    private String password;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}
  1. pom.xml导入MyBatis坐标和MySQL驱动坐标
    <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.10</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.30</version>
    </dependency>
  1. 创建mybatis-config.xml(resource目录下)
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <typeAliases>
        <typeAlias type="org.example.pojo.User" alias="Brand"/>
    </typeAliases>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql:///db?useSSL=false&amp;useServerPrepStmts=true"/>
                <property name="username" value="root"/>
                <property name="password" value="lbyuoe"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <package name="org.example.mapper"/>
    </mappers>
</configuration>
  1. 创建UserMapper.java接口(org.example.mapper目录下)
  2. 创建UserMapper.xml(resource.org.example.mapper目录下)
<?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="org.example.mapper.UserMapper">

</mapper>


# 用户登录 1. UserMapper.java编写查询代码 ```java /** * 根据用户名和密码查找对象 * @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); ``` 2. 创建LoginServlet.java(在org.example.web目录下) ```java package org.example.web;

import jakarta.servlet.;
import jakarta.servlet.http.
;
import jakarta.servlet.annotation.*;
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 org.example.mapper.UserMapper;
import org.example.pojo.User;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;

@WebServlet("/loginServlet")
public class LoginServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 接受用户名和密码
String username = request.getParameter("username");
String password = request.getParameter("password");

    // 调用MyBatis完成查询
    // 获取SqlSessionFactory对象
    String resource = "mybatis-config.xml";
    InputStream inputStream = Resources.getResourceAsStream(resource);
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

    // 获取SqlSession对象
    SqlSession sqlSession = sqlSessionFactory.openSession();

    // 获取Mapper
    UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
    // 调用方法
    User user = userMapper.select(username, password);

    // 释放资源
    sqlSession.close();

    // 判断User查询结果
    response.setContentType("text/html");
    PrintWriter writer = response.getWriter();
    if (user != null) {
        // 登录成功
        writer.write("登录成功");
    } else {
        // 登录失败
        writer.write("登录失败");
    }
}

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

}

<hr/>
# 用户注册
1. UserMapper.java添加用户名查找和添加用户名密码的代码
```java
    /**
     * 根据用户名查找对象
     * @param username
     * @return
     */
    @Select("select * from tb_user where username = #{username}")
    User selectByUsername(@Param("username")String username);

    /**
     * 添加用户名和密码
     * @param user
     */
    @Insert("insert into tb_user (id, username, password) values (null, #{username}, #{password});")
    void add(User user);
  1. 编写LoginServlet代码(org.example.web目录下)
package org.example.web;

import jakarta.servlet.*;
import jakarta.servlet.http.*;
import jakarta.servlet.annotation.*;
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 org.example.mapper.UserMapper;
import org.example.pojo.User;

import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;

@WebServlet("/registerServlet")
public class RegisterServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 接收用户输入的数据
        String username = request.getParameter("username");
        String password = request.getParameter("password");

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

        // 调用MyBatis完成查询
        // 获取SqlSessionFactory对象
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        // 获取SqlSession对象
        SqlSession sqlSession = sqlSessionFactory.openSession();

        // 获取Mapper
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);

        // 获取字节输出流
        response.setContentType("text/html");
        PrintWriter writer = response.getWriter();

        // 查询用户名是否存在
        if (userMapper.selectByUsername(username) != null) {
            // 用户名已存在
            writer.write("用户名已存在");
        } else {
            // 不用户名不存在,添加数据
            userMapper.add(user);
            // 提交事务
            sqlSession.commit();
        }

        // 释放资源
        sqlSession.close();
    }

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

最后结果


github:https://github.com/ciyeye/mybatis_servlet_for_login_register
来源:https://www.bilibili.com/video/BV1Qf4y1T7Hx(P109、P110)

标签:username,java,String,用户注册,org,mybatis,import,password,servlet
来源: https://www.cnblogs.com/lbyuoe/p/16607057.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有