创建首个 Spring Boot 登录项目的全攻略

 更新时间:2025年06月26日 11:15:58   作者:白仑色  
在Java Web开发中,登录功能是最基础也是最重要的模块之一,本文将手把手带你使用IntelliJ IDEA和Maven构建一个基于Spring Boot的简单登录系统,感兴趣的朋友跟随小编一起看看吧

📌 摘要

在 Java Web 开发中,登录功能是最基础也是最重要的模块之一。本文将手把手带你使用 IntelliJ IDEA 和 Maven 构建一个基于 Spring Boot 的简单登录系统,涵盖:

  • 使用 IDEA 创建 Spring Boot 项目
  • 配置 Maven 依赖(Spring Web、Spring Security、Thymeleaf)
  • 数据库连接与用户验证逻辑
  • 登录页面设计与控制器实现
  • 登出功能和权限控制
  • 常见问题解析与最佳实践

适合刚入门 Spring Boot 的新手开发者,帮助你快速搭建一个完整的登录系统原型。

🎯 一、开发环境准备

工具版本要求
JDK1.8 或以上
IntelliJ IDEA社区版 / 旗舰版
Maven3.x 及以上
MySQL5.7 或 8.0
Spring Boot推荐 2.6.x ~ 3.x

🧱 二、创建 Spring Boot 项目(使用 IDEA)

步骤 1:打开 IDEA,选择“New Project”

步骤 2:选择 “Spring Initializr”,填写项目信息

  • Group:com.example
  • Artifact:login-demo
  • Language:Java
  • Packaging:Jar
  • Java Version:17(或其他版本)

步骤 3:选择依赖项

勾选以下依赖:

  • Spring Web
  • Spring Security
  • Thymeleaf(可选,用于前端模板)
  • Spring Data JPA(可选,用于数据库操作)
  • MySQL Driver(可选,用于连接数据库)

点击 “Create” 完成创建。

📦 三、项目结构说明

src/
├── main/
│   ├── java/
│   │   └── com.example.logindemo/
│   │       ├── controller/LoginController.java
│   │       └── LoginDemoApplication.java
│   ├── resources/
│   │   ├── static/
│   │   │   └── css/, js/, images/
│   │   ├── templates/
│   │   │   └── login.html, home.html
│   │   └── application.yml

🔧 四、配置 application.yml 文件

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/login_db?useSSL=false&serverTimezone=UTC
    username: root
    password: yourpassword
    driver-class-name: com.mysql.cj.jdbc.Driver
  thymeleaf:
    cache: false
    suffix: .html
    prefix: classpath:/templates/
    encoding: UTF-8
    content-type: text/html

💻 五、创建数据库与用户表

CREATE DATABASE login_db;
USE login_db;
CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(50) NOT NULL UNIQUE,
    password VARCHAR(100) NOT NULL
);
INSERT INTO users (username, password) VALUES ('admin', '$2a$10$X60FfSIxIgOcZtIXTzKqCeVWwGvQkHlR8eYzE2LmZsS');

注意:密码使用 BCrypt 加密,如上例中的 $2a$10$..."123456" 加密后的结果。

🔐 六、配置 Spring Security 安全框架

创建配置类 SecurityConfig.java

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.web.SecurityFilterChain;
@Configuration
@EnableWebSecurity
public class SecurityConfig {
    @Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }
    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
                .requestMatchers("/", "/login").permitAll()
                .anyRequest().authenticated()
            .and()
            .formLogin()
                .loginPage("/login")
                .defaultSuccessUrl("/home")
                .failureUrl("/login?error=true")
                .permitAll()
            .and()
            .logout()
                .logoutSuccessUrl("/")
                .permitAll();
        return http.build();
    }
}

🖼️ 七、创建登录页面 login.html(放在 templates 目录下)

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>登录</title>
</head>
<body>
<h2>登录页面</h2>
<form th:action="@{/login}" method="post">
    <div th:if="${param.error}">
        <p style="color:red;">用户名或密码错误</p>
    </div>
    <label>用户名:</label>
    <input type="text" name="username"/>
    <label>密码:</label>
    <input type="password" name="password"/>
    <button type="submit">登录</button>
</form>
</body>
</html>

🏠 八、创建首页 home.html(登录成功后跳转)

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>首页</title>
</head>
<body>
<h2>欢迎来到主页!</h2>
<a href="/logout" rel="external nofollow" >退出登录</a>
</body>
</html>

🧩 九、编写控制器 LoginController.java

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class LoginController {
    @GetMapping("/")
    public String index() {
        return "login";
    }
    @GetMapping("/login")
    public String login() {
        return "login";
    }
    @GetMapping("/home")
    public String home() {
        return "home";
    }
}

✅ 十、测试运行项目

  1. 启动 Spring Boot 应用
  2. 浏览器访问:http://localhost:8080
  3. 输入用户名 admin 和密码 123456
  4. 成功登录后跳转至 /home
  5. 点击退出,回到登录页

🧪 十一、常见问题与解决方案

Q1: 登录失败,提示 Bad credentials?

  • 检查数据库密码是否是 BCrypt 加密格式
  • 检查用户名是否正确匹配数据库字段

Q2: 页面无法访问?

  • 检查 Controller 路径映射是否正确
  • 查看启动日志是否有报错

Q3: 登录成功后无法跳转?

  • 检查 defaultSuccessUrl() 是否设置正确
  • 确保没有拦截 /home 路径

Q4: 如何自定义用户加载逻辑?

  • 实现 UserDetailsService 接口,重写 loadUserByUsername() 方法

📚 十二、参考资料

到此这篇关于创建首个 Spring Boot 登录项目的文章就介绍到这了,更多相关Spring Boot 登录项目内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot+pdfbox实现解析pdf中的段落和表格数据

    SpringBoot+pdfbox实现解析pdf中的段落和表格数据

    在日常业务需求中,往往会遇到解析pdf文件中的段落或者表格数据的需求,这篇文章主要和大家介绍了SpringBoot结合tabula和pdfbox解析pdf中的段落和表格数据的详细方法,需要的可以了解下
    2025-06-06
  • Arrays.asList方法总结

    Arrays.asList方法总结

    本文主要对Arrays.asList方法进行总结。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • Java编写网络聊天程序实验

    Java编写网络聊天程序实验

    这篇文章主要为大家详细介绍了Java编写网络聊天程序实验,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • SpringCloud_Eureka服务注册与发现基础及构建步骤

    SpringCloud_Eureka服务注册与发现基础及构建步骤

    Eureka服务注册中心,主要用于提供服务注册功能,当微服务启动时,会将自己的服务注册到Eureka Server,这篇文章主要介绍了SpringCloud中Eureka的配置及详细使用,需要的朋友可以参考下
    2023-01-01
  • Java Rabbitmq中四种集群架构的区别详解

    Java Rabbitmq中四种集群架构的区别详解

    这篇文章主要为大家详细介绍了Java Rabbitmq中四种集群架构的区别,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02
  • SpringBoot整合HTTPS的项目实践

    SpringBoot整合HTTPS的项目实践

    HTTPS的主要作用是通过SSL证书保护用户数据的安全与隐私,增加网站信任度,防止数据被窃取和篡改,保护网站免受钓鱼攻击,本文就来介绍一下,感兴趣的可以了解一下
    2024-10-10
  • Java MD5加密(实例讲解)

    Java MD5加密(实例讲解)

    下面小编就为大家带来一篇Java MD5加密(实例讲解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • springboot+mongodb 实现按日期分组分页查询功能

    springboot+mongodb 实现按日期分组分页查询功能

    这篇文章主要介绍了springboot+mongodb 实现按日期分组分页查询功能,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-07-07
  • IDEA必备开发神器之EasyCode

    IDEA必备开发神器之EasyCode

    对于java程序员来说,日常工作中就是crud的操作,每次都要搭建MVC三层,还是很繁琐,这里就出现了神器easycode的工具.可以快速生成代码.并且还可以自定义模板.需要的朋友可以参考下
    2021-05-05
  • java网络编程基础知识介绍

    java网络编程基础知识介绍

    这篇文章主要介绍了java网络编程基础知识介绍,涉及OSI分层模型和TCP/IP分层模型的对应关系、IP地址、端口号、tcp、udp等相关内容,还是比较不错的,这里分享给大家,供需要的朋友参考。
    2017-11-11

最新评论