mybatis+servlet实现用户注册与登录
2022/8/26 23:24:43
本文主要是介绍mybatis+servlet实现用户注册与登录,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
环境准备
- 创建注册页面与登录页面
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>
- 在数据库中创建表与数据(数据库名为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;
- 创建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 + '\'' + '}'; } }
- 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>
- 创建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&useServerPrepStmts=true"/> <property name="username" value="root"/> <property name="password" value="lbyuoe"/> </dataSource> </environment> </environments> <mappers> <package name="org.example.mapper"/> </mappers> </configuration>
- 创建UserMapper.java接口(org.example.mapper目录下)
- 创建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);
- 编写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)
这篇关于mybatis+servlet实现用户注册与登录的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?
- 2024-05-09企业src漏洞挖掘-有意思的命令执行