Java进阶-基于Servlet和JSP的登录功能实现

在 Web 开发中,用户登录功能是非常常见的模块之一。本文将通过使用 Java Servlet 和 JSP 实现一个简单的用户登录功能,展示如何创建登录页面、处理用户登录请求,并使用数据库验证用户信息。还将介绍如何在 IntelliJ IDEA 中创建 Servlet 项目,引入 MySQL 连接器,并将 login.jsp 设置为项目的默认主页。


一、开发目标

1. 开发环境

  • 开发工具: IntelliJ IDEA
  • 开发语言: Java
  • Web 容器: Apache Tomcat
  • 数据库: MySQL
  • JDK 版本: JDK 8 或以上
  • 依赖管理: Maven

2. 目标功能

实现用户在login.jsp输入账号密码后跳转到result.jsp的结果页,并提示登录是否成功。

3. 目标项目结构

```css
servlet-study/
├── src/
│   ├── main/
│   │   ├── java/
│   │   │   ├── com/example/LoginServlet.java
│   │   │   └── com/example/utils/DBUtil.java
│   │   └── resources/
│   │       └── db.properties
├── webapp/
│   ├── login.jsp
│   ├── result.jsp
│   └── WEB-INF/
│       └── web.xml
└── pom.xml

```

二、创建 Servlet JSP 项目

1. 创建 Maven 项目

打开 IntelliJ IDEA,选择 New Project,填写项目名称,选择 Maven,点击 Create

在这里插入图片描述

File 菜单栏里选择 Project Structure

在这里插入图片描述

Project Settings 选择 Modules,点击上方加号,新增一个 Web 模块。

在这里插入图片描述
点击 OK
在这里插入图片描述
创建结果如图:

在这里插入图片描述

2. 配置 Tomcat 服务器

启动按钮旁边,点击 Edit Configurations

在这里插入图片描述

添加 Tomcat Server > Local

在这里插入图片描述

如果下方有红色提示,请点击 Fix

在这里插入图片描述
Project Settings 选择 Artifacts,添加 Web Application Exploded,选择 From Modules

在这里插入图片描述
后面全部点击 OK
在这里插入图片描述

回到 Deployment 配置,将 Application context 的路径设置为 /

在这里插入图片描述

3. 引入 MySQL 连接器依赖

pom.xml 中添加以下依赖:

```xml

    
        mysql
        mysql-connector-java
        8.0.28
    


```

右键点击项目根目录,选择 Maven > Reload Project 更新依赖。

在这里插入图片描述
安装成功如图:

在这里插入图片描述


三、配置数据库连接与表结构

1. 创建数据库与用户表

创建 servlet_study 数据库,新建 users 表。

```sql
CREATE DATABASE IF NOT EXISTS servlet_study DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

USE servlet_study;

CREATE TABLE IF NOT EXISTS users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    password VARCHAR(50) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

INSERT INTO users (username, password) VALUES ('admin', 'root');

```

在这里插入图片描述

2. 配置数据库工具类 (DBUtil.java)

java 目录下创建 com > example > utils 文件夹下工具类文件 DBUtil.java
在这里插入图片描述
在这里插入图片描述

编写 DBUtil.java 文件。

```java
package com.example.utils;

import java.io.InputStream;
import java.sql.*;
import java.util.Properties;

public class DBUtil {
    private static String url;
    private static String username;
    private static String password;
    private static String driverClassName;

    static {
        try (InputStream input = Thread.currentThread().getContextClassLoader().getResourceAsStream("db.properties")) {
            Properties properties = new Properties();
            properties.load(input);
            url = properties.getProperty("jdbc.url");
            username = properties.getProperty("jdbc.username");
            password = properties.getProperty("jdbc.password");
            driverClassName = properties.getProperty("jdbc.driverClassName");
            Class.forName(driverClassName);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static Connection getConnection() throws SQLException {
        return DriverManager.getConnection(url, username, password);
    }
}

```

3. 创建数据库配置文件 (db.properties)

src > main > java > resources 目录下创建数据库配置文件 db.properties

在这里插入图片描述

文件内容:

```bash
jdbc.url=jdbc:mysql://localhost:3306/servlet_study?useSSL=false&serverTimezone=UTC
jdbc.username=your_username
jdbc.password=your_password
jdbc.driverClassName=com.mysql.cj.jdbc.Driver

```

提示: 请将 your_usernameyour_password 替换为实际的数据库账号、密码。

在这里插入图片描述



四、编写登录页面与接口代码

1. 创建登录页面 (login.jsp)

web 目录下创建 login.jsp 文件。
在这里插入图片描述
编写代码:

```html
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    
    用户登录


    

用户登录





```

在这里插入图片描述

2. 创建登录结果页面 (result.jsp)

web 目录下创建 result.jsp 文件。

编写代码:

```html
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


  
  登录结果


登录结果

<% String message = (String) request.getAttribute("message"); %>

<%= message %>

返回登录页面 ```

在这里插入图片描述

3. 创建后端 Servlet 接口 (LoginServlet.java)

src/main/java 下创建新的 javaLoginServlet.java

在这里插入图片描述

在这里插入图片描述

编写 LoginServlet.java 代码:

```java
package com.example;

import com.example.utils.DBUtil;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;
import java.sql.*;

@WebServlet(name = "LoginServlet", urlPatterns = "/Login")
public class LoginServlet extends HttpServlet {

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String username = req.getParameter("username");
        String password = req.getParameter("password");

        if (validateUser(username, password)) {
            req.setAttribute("message", "登录成功!");
        } else {
            req.setAttribute("message", "账号或密码错误!");
        }
        req.getRequestDispatcher("/result.jsp").forward(req, resp);
    }

    private boolean validateUser(String username, String password) {
        String sql = "SELECT * FROM users WHERE username = ? AND password = ?";
        try (Connection connection = DBUtil.getConnection();
             PreparedStatement ps = connection.prepareStatement(sql)) {
            ps.setString(1, username);
            ps.setString(2, password);
            ResultSet rs = ps.executeQuery();
            return rs.next();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return false;
    }
}

```

新建的代码会有报错,我们需要在 pom.xml 文件里引入 javax 的包。

pom.xml 中添加以下依赖:

```xml

    
        mysql
        mysql-connector-java
        8.0.28
    


```

在这里插入图片描述

回到 LoginServlet.java 文件,可以看到已经没有报错了。

在这里插入图片描述

4. 编辑配置文件 (web.xml)

web.xml 里设置首页为 login.jsp,将 LoginServlet 的接口url /Login 配置到路由里。

```xml


    
        LoginServlet
        com.example.LoginServlet
    
    
        LoginServlet
        /Login
    
    
        login.jsp
    


```

在这里插入图片描述


五、启动和测试

启动项目。
在这里插入图片描述

在浏览器中访问项目根路径:http://localhost:8080/

看到我们首页自动跳转的登录页。
在这里插入图片描述
输入错误的账号或密码时,显示 "账号或密码错误!"

在这里插入图片描述

输入正确的账号密码时,显示 "登录成功!"

在这里插入图片描述


六、常见问题

1. jsp页面报404错误

解决方法:
① 检查路径是否正确;
TomcatDeployment 配置里 Application context 的路径设置为 /(参考文章里配置 Tomcat 的最后一步)

2. /Login接口报404错误

解决方法:
① 检查接口上方注解内url是否正确;
web.xml 文件是否正确配置(参考第四章第4节配置文件)

3. 连接不上数据库

解决方法:
① 检查账号、密码、数据库连接信息 (db.properties) 有没有写错;
Tomcat 运行的 jar 包来自其自身的libs文件夹,需要把 mysql-connector-java.jar 拷贝到 Tomcat 的安装路径下的 lib 文件夹下面。

mysql-connector-java.jarexternal libraries 目录下,它是由 Maven 自动导入的。

在这里插入图片描述

复制到 Tomcat 的安装路径下的 lib 文件夹下面。

在这里插入图片描述

重新启动项目,即可顺利连接数据库。

文章整理自互联网,只做测试使用。发布者:Lomu,转转请注明出处:https://www.it1024doc.com/6404.html

(0)
LomuLomu
上一篇 2025 年 1 月 15 日 上午3:00
下一篇 2025 年 1 月 15 日 上午3:52

相关推荐

  • 【实战指南】基于JavaScript的五子棋AI开发:从原理到实现全解析

    🔍【实战指南】基于JavaScript的五子棋AI开发:从原理到实现全解析🔍 📖 开篇:当古典棋类邂逅现代编程 作为中国传统智力游戏的瑰宝,五子棋以其简洁规则蕴含复杂策略。本教程将带领开发者使用纯前端技术构建具备AI对战功能的五子棋系统,并深入剖析背后的算法原理。该项目既是前端工程师提升算法能力的优质案例,也是计算机博弈理论的实践典范。技术架构:原生HTML…

    2025 年 5 月 13 日
    36000
  • Java编程实战宝典:50个核心代码助你从入门到精通

    Java编程实战宝典:50个核心代码助你从入门到精通 作为软件开发领域的常青树,Java凭借其强大的功能和广泛的应用场景,持续受到开发者青睐。本指南精心整理了50个Java开发中的关键代码片段,配合详细说明,帮助编程新手逐步进阶为技术专家。 编程基础 1. 入门示例 public class FirstProgram { public static void…

    未分类 2025 年 5 月 19 日
    23000
  • 思维导图xmind如何安装?附安装包

    前言 大家好,我是小徐啊。我们在Java开发中,有时候是需要用到思维导图的,这可以帮助我们更好的理清思路,提高开发的效率。而说到思维导图,最有名的就是xmind了,它的功能十分强大,几乎是思维导图里面最强大的那一个。但是,默认只能使用初级功能,高级功能需要额外再开通,今天小徐就来介绍下如何安装xmind以及升级,让我们可以使用pro的功能。文末附获取方式。 …

    2025 年 1 月 11 日
    54000
  • 深入浅出:Java 抽象类与接口

    前言 Java 是一种面向对象的编程语言,其中 抽象类 和 接口 是实现多态和设计模式中的重要工具。它们在编程中具有重要的地位,能够有效提高代码的灵活性和可维护性。尽管它们有一些相似之处,但在语法和应用场景上存在许多不同点。本博客将深入探讨 抽象类 和 接口。 一、什么是抽象类(Abstract Class)? 1. 抽象类的定义 抽象类是一个不能被实例化的…

    未分类 2025 年 1 月 12 日
    43900
  • Python Cookbook(第3版)中文版-PDF免费下载

    Python Cookbook(第3版)中文版-PDF免费下载 适读人群 :Python程序开发人员、编程爱好者、在校大学生 电子版仅供预览,下载后24小时内务必删除,支持正版,喜欢的请购买正版书籍:https://item.jd.com/13897579.html Python图书升级版本,Python编程从入门到实践,涵盖Python3.3,包含大量实用…

    2024 年 12 月 30 日
    38000

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信