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

本文涉及的产品
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介: 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);
    }
}

🔥运行结果

🔥注册页面

在这里插入图片描述

🔥注册成功页面

在这里插入图片描述

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
5月前
|
Java jenkins 应用服务中间件
结合Jenkins与Tomcat,实施Maven项目的自动构建和部署流程。
任何项目构建和部署的自动化流程,总离不开对各个环节精细把控与密切配合。涉及到源代码管理、构建工具、持续集成服务器以及最终的运行时环境的协调。通过上述简洁实用的步骤,可以实现Maven项目从源代码到运行状态的无缝过渡,进而提升软件开发的效率与质量。
351 0
|
8月前
|
Java 关系型数据库 MySQL
在Linux平台上进行JDK、Tomcat、MySQL的安装并部署后端项目
现在,你可以通过访问http://Your_IP:Tomcat_Port/Your_Project访问你的项目了。如果一切顺利,你将看到那绚烂的胜利之光照耀在你的项目之上!
452 41
|
8月前
|
Java 应用服务中间件 Maven
在IntelliJ IDEA中如何配置使用Maven以创建Tomcat环境
所以,别担心这些工具看起来有些吓人,实际上这些都是为了帮助你更好的完成工作的工具,就像超市里的各种烹饪工具一样,尽管它们看起来可能很复杂,但只要你学会用,它们会为你烹饪出一道道美妙的食物。这就是学习新技能的乐趣,让我们一起享受这个过程,攀登知识的高峰!
565 27
|
8月前
|
开发框架 Java 关系型数据库
在Linux系统中安装JDK、Tomcat、MySQL以及部署J2EE后端接口
校验时,浏览器输入:http://[your_server_IP]:8080/myapp。如果你看到你的应用的欢迎页面,恭喜你,一切都已就绪。
574 17
|
8月前
|
Java 应用服务中间件 Apache
在IntelliJ IDEA中使用Maven配置Tomcat环境
此配置方法具有较高的实用性,简单易懂。遵循以上步骤,您将能顺利在IntelliJ IDEA中使用Maven配置Tomcat环境,从而进行Web项目的开发和调试。
1082 18
|
8月前
|
Java 关系型数据库 MySQL
在Linux操作系统上设置JDK、Tomcat、MySQL以及J2EE后端接口的部署步骤
让我们总结一下,给你的Linux操作系统装备上最强的军队,需要先后装备好JDK的弓箭,布置好Tomcat的阵地,再把MySQL的物资原料准备好,最后部署好J2EE攻城车,那就准备好进军吧,你的Linux军团,无人可挡!
191 18
|
8月前
|
关系型数据库 MySQL Java
安装和配置JDK、Tomcat、MySQL环境,以及如何在Linux下更改后端端口。
遵循这些步骤,你可以顺利完成JDK、Tomcat、MySQL环境的安装和配置,并在Linux下更改后端端口。祝你顺利!
518 11
|
8月前
|
开发框架 关系型数据库 Java
Linux操作系统中JDK、Tomcat、MySQL的完整安装流程以及J2EE后端接口的部署
然后Tomcat会自动将其解压成一个名为ROOT的文件夹。重启Tomcat,让新“植物”适应新环境。访问http://localhost:8080/yourproject看到你的项目页面,说明“植物”种植成功。
270 10
|
NoSQL Java 关系型数据库
Liunx部署java项目Tomcat、Redis、Mysql教程
本文详细介绍了如何在 Linux 服务器上安装和配置 Tomcat、MySQL 和 Redis,并部署 Java 项目。通过这些步骤,您可以搭建一个高效稳定的 Java 应用运行环境。希望本文能为您在实际操作中提供有价值的参考。
833 26
|
关系型数据库 MySQL 应用服务中间件
《docker基础篇:8.Docker常规安装简介》包括:docker常规安装总体步骤、安装tomcat、安装mysql、安装redis
《docker基础篇:8.Docker常规安装简介》包括:docker常规安装总体步骤、安装tomcat、安装mysql、安装redis
414 7

推荐镜像

更多