創(chuàng)建首個(gè) Spring Boot 登錄項(xiàng)目的全攻略
?? 摘要
在 Java Web 開發(fā)中,登錄功能是最基礎(chǔ)也是最重要的模塊之一。本文將手把手帶你使用 IntelliJ IDEA 和 Maven 構(gòu)建一個(gè)基于 Spring Boot 的簡單登錄系統(tǒng),涵蓋:
- 使用 IDEA 創(chuàng)建 Spring Boot 項(xiàng)目
- 配置 Maven 依賴(Spring Web、Spring Security、Thymeleaf)
- 數(shù)據(jù)庫連接與用戶驗(yàn)證邏輯
- 登錄頁面設(shè)計(jì)與控制器實(shí)現(xiàn)
- 登出功能和權(quán)限控制
- 常見問題解析與最佳實(shí)踐
適合剛?cè)腴T Spring Boot 的新手開發(fā)者,幫助你快速搭建一個(gè)完整的登錄系統(tǒng)原型。
?? 一、開發(fā)環(huán)境準(zhǔn)備
| 工具 | 版本要求 |
|---|---|
| JDK | 1.8 或以上 |
| IntelliJ IDEA | 社區(qū)版 / 旗艦版 |
| Maven | 3.x 及以上 |
| MySQL | 5.7 或 8.0 |
| Spring Boot | 推薦 2.6.x ~ 3.x |
?? 二、創(chuàng)建 Spring Boot 項(xiàng)目(使用 IDEA)
步驟 1:打開 IDEA,選擇“New Project”

步驟 2:選擇 “Spring Initializr”,填寫項(xiàng)目信息
- Group:
com.example - Artifact:
login-demo - Language:Java
- Packaging:Jar
- Java Version:17(或其他版本)

步驟 3:選擇依賴項(xiàng)
勾選以下依賴:
- Spring Web
- Spring Security
- Thymeleaf(可選,用于前端模板)
- Spring Data JPA(可選,用于數(shù)據(jù)庫操作)
- MySQL Driver(可選,用于連接數(shù)據(jù)庫)

點(diǎn)擊 “Create” 完成創(chuàng)建。
?? 三、項(xiàng)目結(jié)構(gòu)說明
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?? 五、創(chuàng)建數(shù)據(jù)庫與用戶表
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"加密后的結(jié)果。
?? 六、配置 Spring Security 安全框架
創(chuàng)建配置類 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();
}
}??? 七、創(chuàng)建登錄頁面 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>?? 八、創(chuàng)建首頁 home.html(登錄成功后跳轉(zhuǎn))
<!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";
}
}? 十、測試運(yùn)行項(xiàng)目
- 啟動 Spring Boot 應(yīng)用
- 瀏覽器訪問:http://localhost:8080
- 輸入用戶名
admin和密碼123456 - 成功登錄后跳轉(zhuǎn)至
/home - 點(diǎn)擊退出,回到登錄頁
?? 十一、常見問題與解決方案
Q1: 登錄失敗,提示 Bad credentials?
- 檢查數(shù)據(jù)庫密碼是否是 BCrypt 加密格式
- 檢查用戶名是否正確匹配數(shù)據(jù)庫字段
Q2: 頁面無法訪問?
- 檢查 Controller 路徑映射是否正確
- 查看啟動日志是否有報(bào)錯
Q3: 登錄成功后無法跳轉(zhuǎn)?
- 檢查
defaultSuccessUrl()是否設(shè)置正確 - 確保沒有攔截
/home路徑
Q4: 如何自定義用戶加載邏輯?
- 實(shí)現(xiàn)
UserDetailsService接口,重寫loadUserByUsername()方法
?? 十二、參考資料
到此這篇關(guān)于創(chuàng)建首個(gè) Spring Boot 登錄項(xiàng)目的文章就介紹到這了,更多相關(guān)Spring Boot 登錄項(xiàng)目內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 解決IDEA創(chuàng)建SpringBoot項(xiàng)目沒有Java版本8問題
- 使用IDEA創(chuàng)建SpringBoot項(xiàng)目
- idea創(chuàng)建Springboot多模塊項(xiàng)目(聚合項(xiàng)目)
- IDEA無法創(chuàng)建JDK1.8版本的Springboot項(xiàng)目問題解決(2種方法)
- 使用Spring Initializr創(chuàng)建Spring Boot項(xiàng)目沒有JDK1.8的解決辦法
- 新版idea創(chuàng)建spring boot項(xiàng)目的詳細(xì)教程
- 利用IDEA社區(qū)版創(chuàng)建SpringBoot項(xiàng)目的詳細(xì)圖文教程
- 使用maven方式創(chuàng)建springboot項(xiàng)目的方式
相關(guān)文章
SpringBoot+pdfbox實(shí)現(xiàn)解析pdf中的段落和表格數(shù)據(jù)
在日常業(yè)務(wù)需求中,往往會遇到解析pdf文件中的段落或者表格數(shù)據(jù)的需求,這篇文章主要和大家介紹了SpringBoot結(jié)合tabula和pdfbox解析pdf中的段落和表格數(shù)據(jù)的詳細(xì)方法,需要的可以了解下2025-06-06
Java編寫網(wǎng)絡(luò)聊天程序?qū)嶒?yàn)
這篇文章主要為大家詳細(xì)介紹了Java編寫網(wǎng)絡(luò)聊天程序?qū)嶒?yàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08
SpringCloud_Eureka服務(wù)注冊與發(fā)現(xiàn)基礎(chǔ)及構(gòu)建步驟
Eureka服務(wù)注冊中心,主要用于提供服務(wù)注冊功能,當(dāng)微服務(wù)啟動時(shí),會將自己的服務(wù)注冊到Eureka Server,這篇文章主要介紹了SpringCloud中Eureka的配置及詳細(xì)使用,需要的朋友可以參考下2023-01-01
Java?Rabbitmq中四種集群架構(gòu)的區(qū)別詳解
這篇文章主要為大家詳細(xì)介紹了Java?Rabbitmq中四種集群架構(gòu)的區(qū)別,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-02-02
SpringBoot整合HTTPS的項(xiàng)目實(shí)踐
HTTPS的主要作用是通過SSL證書保護(hù)用戶數(shù)據(jù)的安全與隱私,增加網(wǎng)站信任度,防止數(shù)據(jù)被竊取和篡改,保護(hù)網(wǎng)站免受釣魚攻擊,本文就來介紹一下,感興趣的可以了解一下2024-10-10
springboot+mongodb 實(shí)現(xiàn)按日期分組分頁查詢功能
這篇文章主要介紹了springboot+mongodb 實(shí)現(xiàn)按日期分組分頁查詢功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-07-07
java網(wǎng)絡(luò)編程基礎(chǔ)知識介紹
這篇文章主要介紹了java網(wǎng)絡(luò)編程基礎(chǔ)知識介紹,涉及OSI分層模型和TCP/IP分層模型的對應(yīng)關(guān)系、IP地址、端口號、tcp、udp等相關(guān)內(nèi)容,還是比較不錯的,這里分享給大家,供需要的朋友參考。2017-11-11

