JavaWeb用户登录注册实例(mybatis、maven、mysql、tomcat、servlet)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: JavaWeb用户登录注册实例(mybatis、maven、mysql、tomcat、servlet)

🍁用户登录

🔥流程说明:

用户填写用户名密码,提交到LoginServlet,在LoginServlet使用 MyBatis查询数据库,验证用户名密码是否正确,如果正确,响应“登录成功”,如果错误,响应“登录失败”,准备环境,写静态页面到webapp目录下,创建servlet数据库,创建tb_user表,创建User实体类,导入MyBatis坐标,MySQL驱动坐标,创建mybatis-config.xml核心配置文件,UserMapper.xml映射文件,UserMapper接口。

🔥SQL表

数据库使名称为mybatis,表名为tb_user。
在这里插入图片描述
自己添加几条数据即可。

🔥表单页面

写在webapp包下:

🔥login.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <meta charset="utf-8" />
    <title>Register</title>
    <link rel="stylesheet" type="text/css" href="./css/register.css"/>
</head>
<body>
<form action="/loginServlet" method="get">
    <p class="head">登陆</p>
    <input id="user" name="username" type="text" placeholder="用户名:"><br>
    <input id="paws" name="password" type="password" placeholder="密&nbsp;&nbsp;码:"><br>
    <input id="sub" type="submit" value="登陆"/>
</form>
<script src="./js/register.js" type="text/javascript" charset="utf-8"></script>
</body>
</html>

🔥 js包下的register.js

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

🔥css包下的register.css

*{
    margin: 0;
    padding: 0;
    border: 0px;
}
body{
    background-color: #87CEEB;
}
form{
    position: absolute;
    left: 50%;
    top: 50%;
    margin-left: -300px;
    margin-top: -280px;
    width: 600px;
    height: 400px;
    background-color: #87CEEB;
    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;
}

🔥User实体类

User实体类在com.jkj.pojo下:

🔥user

package com.jkj.pojo;

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

    public User() {
    }

    public User(Integer id, String username, String password) {
        this.id = id;
        this.username = username;
        this.password = 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 + '\'' +
                '}';
    }
}

🔥导入MyBatis坐标、MySQL驱动坐标

mybatis-config.xml核心配置文件放入到resources目录下。

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.example</groupId>
  <artifactId>Test</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.2</version>
      </plugin>
    </plugins>

  </build>
  <dependencies>
    <!--mysql driver-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.16</version>
    </dependency>
    <!--mybatis-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.6</version>
    </dependency>
    <!--junit-->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.0</version>
      <scope>provided</scope>
    </dependency>

  </dependencies>



</project>

🔥mybatis-config.xml核心配置文件

<?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>
        <package name="com.jkj.pojo"/>
    </typeAliases>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=false&amp;useServerPrepStates=true"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <package name="com.jkj.mapper"/>
    </mappers>
</configuration>

🔥创建UserMapper接口

package com.jkj.mapper;

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

public interface UserMapper {
    //根据用户名和密码查询用户对象
    User select(@Param("username") String username,@Param("password") String password);
}

注意:此步骤要先连接数据库。具体可以参考:在IDEA中连接数据库详细步骤

🔥UserMapper.xml

resources目录下建立com.jkj.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="com.jkj.mapper.UserMapper">

    <select id="select" resultType="User">
        select * from tb_user where username=#{username} and password=#{password}
    </select>
</mapper>

🔥LoginServlet

创建在web包下:

package com.jkj.web;

import com.jkj.mapper.UserMapper;
import com.jkj.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;

@WebServlet("/loginServlet")
public class LoginServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取用户名和密码
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        //2.调用MyBatis完成查询
        //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 user = userMapper.select(username, password);
        //2.5释放资源
        sqlSession.close();
        //获取字符输出流,并设置content type
        resp.setContentType("text/html;charset=utf-8");

        //判断user是否为空
        if (user !=null){
            resp.getWriter().write("登录成功!");
        }
        else {
            resp.getWriter().write("登录失败!");
        }

    }

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

🔥.运行结果:

🔥登录页面

在这里插入图片描述

🔥登录成功页面

在这里插入图片描述

🍁注册功能

🔥流程说明

  • 用户填写用户名、密码等信息、点击注册按钮,提交到RegisterServlet。
  • 在RegisterServlet中使用MyBatis 保存数据。
  • 保存前,需要判断用户名是否已经存在,如存在跳转到登录页面,不存在就去注册。

🔥resgister表单

写在webapp包下:

🔥register.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>Register</title>
    <link rel="stylesheet" type="text/css" href="./css/register.css"/>
</head>
<body>
<form action="/registerServlet" method="post">
    <p class="head">注册</p>
    <input id="user" name="username" type="text" placeholder="用户名:"><br>
    <input id="paws" name="password" type="password" placeholder="密&nbsp;&nbsp;码:"><br>
    <input id="sub" type="submit" value="注册"/>
</form>
<script src="./js/register.js" type="text/javascript" charset="utf-8"></script>
</body>
</html>

🔥UserMapper.java

package com.jkj.mapper;

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

public interface UserMapper {
    //根据用户名和密码查询用户对象
    User select(@Param("username") String username,@Param("password") String password);
    //根据用户名查找对象
    User selectByUserName(String username);
    //添加用户
    void add(User user);
}

🔥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.jkj.mapper.UserMapper">
    <!--登录-->
    <select id="select" resultType="User">
        select * from tb_user where username=#{username} and password=#{password}
    </select>
    <!--注册-->
    <select id="selectByUserName" resultType="User">
        select * from tb_user where username=#{username}
    </select>

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

🔥RegisterServlet.java

在com.jkj.web包下创建RegisterServlet.java

package com.jkj.web;

import com.jkj.mapper.UserMapper;
import com.jkj.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;
@WebServlet("/registerServlet")
public class RegisterServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //接收参数
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        //封装对象
        User user=new User();
        user.setUsername(username);
        user.setPassword(password);
        //2.调用MyBatis完成查询
        //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);
        //调用方法
        User u = userMapper.selectByUserName(username);
        //设置utf-8编码格式以及识别html标签
        resp.setContentType("text/html;charset=utf-8");
        //判断u是否为空
        if (u ==null){
            //为空,添加用户信息
            userMapper.add(user);
            //提交事务
            sqlSession.commit();
            //释放资源
            sqlSession.close();
           //注册成功,后续可以跳转到首页
            resp.getWriter().write("注册成功!");
        }
        else {
           //用户已存在,跳转到登录页面
            req.getRequestDispatcher("/login.jsp").forward(req,resp);
        }


    }

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

🔥运行结果

🔥注册页面

在这里插入图片描述

🔥注册成功页面

在这里插入图片描述

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
存储 关系型数据库 MySQL
环比、环比增长率、同比、同比增长率 ,占比,Mysql 8.0 实例(最简单的方法之一)(sample database classicmodels _No.2 )
环比、环比增长率、同比、同比增长率 ,占比,Mysql 8.0 实例(最简单的方法之一)(sample database classicmodels _No.2 )
139 1
|
2月前
|
SQL 前端开发 关系型数据库
全表数据核对 ,行数据核对,列数据核对,Mysql 8.0 实例(sample database classicmodels _No.3 )
全表数据核对 ,行数据核对,列数据核对,Mysql 8.0 实例(sample database classicmodels _No.3 )
62 0
全表数据核对 ,行数据核对,列数据核对,Mysql 8.0 实例(sample database classicmodels _No.3 )
|
16天前
|
NoSQL Java 关系型数据库
Liunx部署java项目Tomcat、Redis、Mysql教程
本文详细介绍了如何在 Linux 服务器上安装和配置 Tomcat、MySQL 和 Redis,并部署 Java 项目。通过这些步骤,您可以搭建一个高效稳定的 Java 应用运行环境。希望本文能为您在实际操作中提供有价值的参考。
85 26
|
2月前
|
Java Shell 应用服务中间件
Mac系统下配置环境变量:Javajdk、maven、tomcat 环境变量配置及对应配置文件
这篇文章介绍了如何在Mac系统下配置Java JDK、Maven和Tomcat的环境变量,包括配置文件的选择、解决环境变量在zsh shell中无效的问题、查看和设置系统环境变量的方法,以及JDK和Maven的下载、配置和测试步骤。
1605 1
Mac系统下配置环境变量:Javajdk、maven、tomcat 环境变量配置及对应配置文件
|
2月前
|
Java 关系型数据库 MySQL
自动化测试项目实战笔记(一):JDK、Tomcat、MySQL、Jpress环境安装和搭建
这篇文章是关于自动化测试项目实战笔记,涵盖了JDK、Tomcat、MySQL、Jpress环境的安装和搭建过程,以及测试用例和常见问题总结。
59 1
自动化测试项目实战笔记(一):JDK、Tomcat、MySQL、Jpress环境安装和搭建
|
1月前
|
关系型数据库 MySQL 数据库
【赵渝强老师】启动与关闭MySQL数据库实例
MySQL数据库安装完成后,可以通过命令脚本启动、查看状态、配置开机自启、查看自启列表及关闭数据库。本文提供了详细的操作步骤和示例代码,并附有视频讲解。
|
2月前
|
关系型数据库 MySQL Java
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
这篇文章是关于如何使用Django框架配置MySQL数据库,创建模型实例,并自动或手动创建数据库表,以及对这些表进行操作的详细教程。
94 0
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
|
2月前
|
Java 关系型数据库 MySQL
springboot学习五:springboot整合Mybatis 连接 mysql数据库
这篇文章是关于如何使用Spring Boot整合MyBatis来连接MySQL数据库,并进行基本的增删改查操作的教程。
239 0
springboot学习五:springboot整合Mybatis 连接 mysql数据库
|
2月前
|
应用服务中间件 Apache Windows
免安装版的Tomcat注册为windows服务
免安装版的Tomcat注册为windows服务
138 3
|
2月前
|
Java 应用服务中间件 Maven
idea+maven+tomcat+spring 创建一个jsp项目
这篇文章介绍了如何在IntelliJ IDEA中使用Maven和Tomcat创建一个JSP项目,包括配置Maven依赖、设置Tomcat服务器、编写JSP页面、创建控制器和配置文件,以及项目的运行结果。
246 0
idea+maven+tomcat+spring 创建一个jsp项目

推荐镜像

更多