创建首个 Spring Boot 登录项目的全攻略
📌 摘要
在 Java Web 开发中,登录功能是最基础也是最重要的模块之一。本文将手把手带你使用 IntelliJ IDEA 和 Maven 构建一个基于 Spring Boot 的简单登录系统,涵盖:
- 使用 IDEA 创建 Spring Boot 项目
- 配置 Maven 依赖(Spring Web、Spring Security、Thymeleaf)
- 数据库连接与用户验证逻辑
- 登录页面设计与控制器实现
- 登出功能和权限控制
- 常见问题解析与最佳实践
适合刚入门 Spring Boot 的新手开发者,帮助你快速搭建一个完整的登录系统原型。
🎯 一、开发环境准备
| 工具 | 版本要求 |
|---|---|
| JDK | 1.8 或以上 |
| IntelliJ IDEA | 社区版 / 旗舰版 |
| Maven | 3.x 及以上 |
| MySQL | 5.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";
}
}✅ 十、测试运行项目
- 启动 Spring Boot 应用
- 浏览器访问:http://localhost:8080
- 输入用户名
admin和密码123456 - 成功登录后跳转至
/home - 点击退出,回到登录页
🧪 十一、常见问题与解决方案
Q1: 登录失败,提示 Bad credentials?
- 检查数据库密码是否是 BCrypt 加密格式
- 检查用户名是否正确匹配数据库字段
Q2: 页面无法访问?
- 检查 Controller 路径映射是否正确
- 查看启动日志是否有报错
Q3: 登录成功后无法跳转?
- 检查
defaultSuccessUrl()是否设置正确 - 确保没有拦截
/home路径
Q4: 如何自定义用户加载逻辑?
- 实现
UserDetailsService接口,重写loadUserByUsername()方法
📚 十二、参考资料
到此这篇关于创建首个 Spring Boot 登录项目的文章就介绍到这了,更多相关Spring Boot 登录项目内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
SpringBoot+pdfbox实现解析pdf中的段落和表格数据
在日常业务需求中,往往会遇到解析pdf文件中的段落或者表格数据的需求,这篇文章主要和大家介绍了SpringBoot结合tabula和pdfbox解析pdf中的段落和表格数据的详细方法,需要的可以了解下2025-06-06
SpringCloud_Eureka服务注册与发现基础及构建步骤
Eureka服务注册中心,主要用于提供服务注册功能,当微服务启动时,会将自己的服务注册到Eureka Server,这篇文章主要介绍了SpringCloud中Eureka的配置及详细使用,需要的朋友可以参考下2023-01-01
springboot+mongodb 实现按日期分组分页查询功能
这篇文章主要介绍了springboot+mongodb 实现按日期分组分页查询功能,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下2018-07-07


最新评论