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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用版 2核4GB 50GB
简介: 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);
    }
}

🔥运行结果

🔥注册页面

在这里插入图片描述

🔥注册成功页面

在这里插入图片描述

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
XML 网络协议 Java
JavaWeb -- HTTP -- WEB服务器TOMCAT
JavaWeb -- HTTP -- WEB服务器TOMCAT
|
2天前
|
关系型数据库 Java MySQL
Linux安装JDK1.8 & tomcat & MariaDB(MySQL删减版)
本教程提供了在Linux环境下安装JDK1.8、Tomcat和MariaDB的详细步骤。这三个组件的组合为Java Web开发和部署提供了一个强大的基础。通过遵循这些简单的指导步骤,您可以轻松建立起一个稳定、高效的开发和部署环境。希望这个指导对您的开发工作有所帮助。
20 8
|
6天前
|
Java 关系型数据库 数据库连接
|
2月前
|
Java 关系型数据库 MySQL
Mybatis入门之在基于Springboot的框架下拿到MySQL中数据
Mybatis入门之在基于Springboot的框架下拿到MySQL中数据
30 4
|
2月前
|
SQL Java 数据库连接
2万字实操案例之在Springboot框架下基于注解用Mybatis开发实现基础操作MySQL之预编译SQL主键返回增删改查
2万字实操案例之在Springboot框架下基于注解用Mybatis开发实现基础操作MySQL之预编译SQL主键返回增删改查
47 2
|
2月前
|
Java 关系型数据库 MySQL
杨校老师课堂之Java项目部署到云端服务器之安装MySQL、Jdk、Tomcat
杨校老师课堂之Java项目部署到云端服务器之安装MySQL、Jdk、Tomcat
38 0
杨校老师课堂之Java项目部署到云端服务器之安装MySQL、Jdk、Tomcat
|
2月前
|
SQL 关系型数据库 MySQL
MySQL数据库基础练习系列13、用户注册与登录系统
MySQL数据库基础练习系列13、用户注册与登录系统
25 1
|
1月前
|
XML 关系型数据库 MySQL
支付系统----微信支付19---集成MyBatis-plus,数据库驱动对应的依赖版本设置问题,5没版本没有cj这个依赖,mysql驱动默认的是版本8,这里是一个父类,数据库都有,写个父类,继承就行
支付系统----微信支付19---集成MyBatis-plus,数据库驱动对应的依赖版本设置问题,5没版本没有cj这个依赖,mysql驱动默认的是版本8,这里是一个父类,数据库都有,写个父类,继承就行
|
1月前
|
Java 应用服务中间件 API
如何安装与使用Java EE 8、Servlet 3.0及Apache Maven进行高效开发
【7月更文第1天】搭建高效Java EE 8开发环境,包括安装JDK、选择WildFly或Payara Server作为应用服务器,以及安装Apache Maven。使用Maven创建Servlet 3.0 Web项目,编写 HelloWorldServlet,打包部署到服务器,通过访问特定URL测试应用。这一流程助力开发者实现快速原型和大型项目开发。
67 0
|
2月前
|
前端开发 应用服务中间件

推荐镜像

更多