javaWeb连接数据库实现简单登陆注册功能的全过程

让我来为你详细讲解“Java Web连接数据库实现简单登录注册功能的全过程”。

准备工作

在进行 Java Web 开发之前,需要安装以下软件:

  • JDK(Java Development Kit)
  • Eclipse(开发工具)
  • MySQL(数据库管理系统)
  • Apache Tomcat(Web服务器)

创建数据库

在 MySQL 中创建一个名为 user 的数据库,并创建名为 user_info 的表。其中,user_info 表包含以下字段:

  • id - INT,主键,自动增加
  • username - VARCHAR,用户名,唯一
  • password - VARCHAR,密码
create database user;
use user;

create table user_info (
  id INT NOT NULL AUTO_INCREMENT primary key,
  username VARCHAR(50) NOT NULL UNIQUE,
  password VARCHAR(50) NOT NULL
);

创建 Java Web 项目

在 Eclipse 中创建一个新的 Dynamic Web Project,项目名为 LoginDemo

导入 JAR 包

下载 JDBC 驱动程序,将压缩包解压后得到的 mysql-connector-java-X.X.X.jar 文件拷贝到 WebContent/WEB-INF/lib 目录下,然后将其添加到 Eclipse 项目路径和 Build Path 中。

编写 HTML 页面

在 WebContent 目录下创建一个名为 index.html 的文件,用于登录或注册。其中,将登录和注册表单放在一个 HTML 文件中,根据表单提交方式不同在 form 标签中添加 action 属性来指定表单提交到不同的 Servlet。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Login & Register Demo</title>
</head>
<body>
    <h1>Login & Register Demo</h1>
    <h2>Login</h2>
    <form action="LoginServlet" method="post">
        <label for="username">Username:</label>
        <input type="text" name="username" id="username"><br>
        <label for="password">Password:</label>
        <input type="password" name="password" id="password"><br>
        <input type="submit" value="Login">
    </form>
    <h2>Register</h2>
    <form action="RegisterServlet" method="post">
        <label for="username">Username:</label>
        <input type="text" name="username" id="username"><br>
        <label for="password">Password:</label>
        <input type="password" name="password" id="password"><br>
        <input type="submit" value="Register">
    </form>
</body>
</html>

编写 Servlet

登录

src 目录下创建一个名为 LoginServlet.java 的 Servlet,用于验证用户提供的登录信息是否正确。

package servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();

        // 获取表单中提交的用户名和密码
        String username = request.getParameter("username");
        String password = request.getParameter("password");

        Connection conn = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;

        try {
            // 加载MySQL驱动程序
            Class.forName("com.mysql.jdbc.Driver");
            // 获取数据库连接
            String url = "jdbc:mysql://localhost:3306/user?useUnicode=true&characterEncoding=UTF-8";
            String user = "root";//数据库用户名
            String sqlpassword = "password";//数据库密码

            conn = DriverManager.getConnection(url, user, sqlpassword);

            // 创建PreparedStatement对象,设置SQL语句并执行
            String sql = "SELECT * FROM user_info WHERE username=? AND password=?";
            pstmt = conn.prepareStatement(sql);
            pstmt.setString(1, username);
            pstmt.setString(2, password);
            rs = pstmt.executeQuery();

            if(rs.next()) {
                // 如果用户验证成功,则在session中记录该用户信息
                request.getSession().setAttribute("username", username);
                // 跳转到欢迎页面
                response.sendRedirect("welcome.jsp");
            }else {
                // 用户验证失败,返回登录页面
                out.print("<script>alert('用户名或密码错误,请重新登录!')</script>");
                request.getRequestDispatcher("index.html").include(request, response);
            }
        }catch(Exception e) {
            e.printStackTrace();
        }finally {
            try {
                if(rs != null) rs.close();
                if(pstmt != null) pstmt.close();
                if(conn != null) conn.close();
            }catch(Exception e) {
                e.printStackTrace();
            }
        }
    }

}

注册

src 目录下创建一个名为 RegisterServlet.java 的 Servlet,用于注册新用户。

package servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/RegisterServlet")
public class RegisterServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();

        // 获取表单中提交的用户名和密码
        String username = request.getParameter("username");
        String password = request.getParameter("password");

        Connection conn = null;
        PreparedStatement pstmt = null;

        try {
            // 加载MySQL驱动程序
            Class.forName("com.mysql.jdbc.Driver");
            // 获取数据库连接
            String url = "jdbc:mysql://localhost:3306/user?useUnicode=true&characterEncoding=UTF-8";
            String user = "root";//数据库用户名
            String sqlpassword = "password";//数据库密码

            conn = DriverManager.getConnection(url, user, sqlpassword);

            // 创建PreparedStatement对象,设置SQL语句并执行
            String sql = "INSERT INTO user_info (username, password) VALUES (?, ?)";
            pstmt = conn.prepareStatement(sql);
            pstmt.setString(1, username);
            pstmt.setString(2, password);
            pstmt.executeUpdate();

            // 注册成功,返回登录页面
            out.println("<script>alert('注册成功!请登录。')</script>");
            request.getRequestDispatcher("index.html").include(request, response);
        }catch(Exception e) {
            // 注册失败,返回注册页面
            out.println("<script>alert('注册失败!')</script>");
            request.getRequestDispatcher("index.html").include(request, response);
            e.printStackTrace();
        }finally {
            try {
                if(pstmt != null) pstmt.close();
                if(conn != null) conn.close();
            }catch(Exception e) {
                e.printStackTrace();
            }
        }
    }

}

创建欢迎页面

在 WebContent 目录下创建一个名为 welcome.jsp 的文件,用于登录成功后的欢迎页面。在该页面中,获取用户的用户名并展示欢迎信息。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Welcome</title>
</head>
<body>
    <h1>Welcome</h1>
    <p>Hi <%=session.getAttribute("username")%>, welcome to our website!</p>
    <p>Your account information:</p>
    <ul>
        <li>Username: <%=session.getAttribute("username")%></li>
        <li>Password: *********</li>
    </ul>
    <a href="logout.jsp">Logout</a>
</body>
</html>

创建退出登录页面

在 WebContent 目录下创建一个名为 logout.jsp 的文件,用于退出登录。在该页面中,清除 session 中的用户信息,并跳转到登录页面。

<%
    session.invalidate();//清除session
    response.sendRedirect("index.html");
%>

部署与运行

LoginDemo 项目导出为 WAR 文件,然后将 WAR 文件上传到 Apache Tomcat 的 webapps 目录下,启动 Tomcat 服务器,访问 http://localhost:8080/LoginDemo/index.html 即可进行登录或注册。

示例代码:https://github.com/Learnerzyy/LoginDemo

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:javaWeb连接数据库实现简单登陆注册功能的全过程 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • MyBatis 与 Spring 的完美整合方法

    下面是MyBatis和Spring整合的完整攻略及示例。 一. 整合原理 MyBatis是一个独立的持久层框架,其对Spring并不依赖。然而在实际的开发中,我们常常需要将MyBatis与Spring整合在一起使用。 整合的方式一般有两种: 将MyBatis工厂交由Spring管理。这样做的好处是Spring可以管理MyBatis的生命周期,保证MyBati…

    Java 2023年5月19日
    00
  • 使用IntelliJ IDEA配置Tomcat入门教程

    下面是使用IntelliJ IDEA配置Tomcat的完整攻略: 步骤一:下载Tomcat 第一步,需要从 Tomcat官网 下载Tomcat的安装包。在这个教程中,我们使用Tomcat 9.0.46版本。 步骤二:配置Tomcat服务器 启动IntelliJ IDEA并打开项目。 单击顶部菜单栏的 “Run” -> ”Edit Configurati…

    Java 2023年5月19日
    00
  • Java面试题冲刺第二十一天–JVM

    Java面试题冲刺第二十一天–JVM 一、了解JVM 1. JVM的概念 JVM(Java Virtual Machine)即Java虚拟机,是Java语言的运行环境,负责将Java字节码文件转换为机器指令执行。 2. JVM的内部结构 JVM的内部结构分为三个部分:类加载器,运行时数据区,执行引擎。 2.1 类加载器 用来加载类文件,包括如下几种类型: …

    Java 2023年5月26日
    00
  • JSP 防范SQL注入攻击分析

    完整的JSP防范SQL注入攻击分析过程如下: 1.了解SQL注入攻击 首先,要了解什么是SQL注入攻击。SQL注入攻击是黑客利用应用程序的安全漏洞,将恶意的SQL代码插入到应用程序的SQL语句中,以获得非法的数据库访问权限。在JSP应用程序中,如果不对用户提交的请求进行适当的过滤和验证,那么黑客就有可能通过SQL注入攻击来破坏应用程序的安全性。 2.使用预编…

    Java 2023年6月15日
    00
  • MyBatis自定义typeHandler的完整实例

    针对“MyBatis自定义typeHandler的完整实例”这个问题,我将会提供一份详细攻略。 什么是 MyBatis TypeHandler? MyBatis 的 TypeHandler 可以实现 Java 数据类型(如 String, Date 等)和 JDBC 对象之间的转换。MyBatis 会自动寻找合适的 TypeHandler 来执行转换,并且你…

    Java 2023年6月15日
    00
  • spring security认证异常后返回中文提示的问题

    下面是详细讲解“Spring Security认证异常后返回中文提示的问题”的完整攻略。 问题描述 在使用Spring Security过程中,如果认证出现异常,例如用户名或密码错误,系统返回的提示信息可能是英文的,对于像我们这样的非英语母语国家来说,这可能会给用户带来不便。所以,我们希望能够将这些提示信息修改为中文。 解决方案 为了解决这个问题,我们可以自…

    Java 2023年5月20日
    00
  • 使用maven编译Java项目实例

    使用Maven编译Java项目的完整攻略,主要分为以下几个步骤: Step 1:准备工作 在开始编译Java项目之前,需要确保已经安装好了以下软件和环境: JDK:确保已经安装了JDK,并设置了JAVA_HOME环境变量。 Maven:需要先安装Maven,并将其添加到PATH环境变量中。 Step 2:创建项目 在本地计算机上创建一个Java项目,并使用M…

    Java 2023年5月20日
    00
  • 详解Java中字符串缓冲区StringBuffer类的使用

    详解Java中字符串缓冲区StringBuffer类的使用 概述 在Java中,字符串是一种非常常用的数据类型。不过,我们在使用字符串时,有以下几方面的注意点: 字符串的不可变性:Java中的字符串是不可变的,也就是说,一旦创建了一个字符串,就无法修改其中的内容,只能通过重新创建一个新的字符串来达到修改的目的; 字符串拼接:在实际开发中,经常会遇到需要将两个…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部