最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

創(chuàng)建首個 Spring Boot 登錄項目的全攻略

 更新時間:2025年06月26日 11:15:58   作者:白侖色  
在Java Web開發(fā)中,登錄功能是最基礎(chǔ)也是最重要的模塊之一,本文將手把手帶你使用IntelliJ IDEA和Maven構(gòu)建一個基于Spring Boot的簡單登錄系統(tǒng),感興趣的朋友跟隨小編一起看看吧

?? 摘要

在 Java Web 開發(fā)中,登錄功能是最基礎(chǔ)也是最重要的模塊之一。本文將手把手帶你使用 IntelliJ IDEA 和 Maven 構(gòu)建一個基于 Spring Boot 的簡單登錄系統(tǒng),涵蓋:

  • 使用 IDEA 創(chuàng)建 Spring Boot 項目
  • 配置 Maven 依賴(Spring Web、Spring Security、Thymeleaf)
  • 數(shù)據(jù)庫連接與用戶驗證邏輯
  • 登錄頁面設(shè)計與控制器實現(xiàn)
  • 登出功能和權(quán)限控制
  • 常見問題解析與最佳實踐

適合剛?cè)腴T Spring Boot 的新手開發(fā)者,幫助你快速搭建一個完整的登錄系統(tǒng)原型。

?? 一、開發(fā)環(huán)境準(zhǔn)備

工具版本要求
JDK1.8 或以上
IntelliJ IDEA社區(qū)版 / 旗艦版
Maven3.x 及以上
MySQL5.7 或 8.0
Spring Boot推薦 2.6.x ~ 3.x

?? 二、創(chuàng)建 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(可選,用于數(shù)據(jù)庫操作)
  • MySQL Driver(可選,用于連接數(shù)據(jù)庫)

點擊 “Create” 完成創(chuà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";
    }
}

? 十、測試運行項目

  1. 啟動 Spring Boot 應(yīng)用
  2. 瀏覽器訪問:http://localhost:8080
  3. 輸入用戶名 admin 和密碼 123456
  4. 成功登錄后跳轉(zhuǎn)至 /home
  5. 點擊退出,回到登錄頁

?? 十一、常見問題與解決方案

Q1: 登錄失敗,提示 Bad credentials?

  • 檢查數(shù)據(jù)庫密碼是否是 BCrypt 加密格式
  • 檢查用戶名是否正確匹配數(shù)據(jù)庫字段

Q2: 頁面無法訪問?

  • 檢查 Controller 路徑映射是否正確
  • 查看啟動日志是否有報錯

Q3: 登錄成功后無法跳轉(zhuǎn)?

  • 檢查 defaultSuccessUrl() 是否設(shè)置正確
  • 確保沒有攔截 /home 路徑

Q4: 如何自定義用戶加載邏輯?

  • 實現(xiàn) UserDetailsService 接口,重寫 loadUserByUsername() 方法

?? 十二、參考資料

到此這篇關(guān)于創(chuàng)建首個 Spring Boot 登錄項目的文章就介紹到這了,更多相關(guān)Spring Boot 登錄項目內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java?實現(xiàn)訂單未支付超時自動取消功能(京東商城為例)

    Java?實現(xiàn)訂單未支付超時自動取消功能(京東商城為例)

    本文以京東網(wǎng)上商城為例,給大家介紹商品在下單后沒有支付的情況下,超時自動取消功能,超過24小時,就會自動取消訂單,下面使用 Java 定時器實現(xiàn)超時取消訂單功能,感興趣的朋友一起看看吧
    2022-01-01
  • 如何解決Druid線程池Cause:java.sql.SQLRecoverableException:IO錯誤:Socket read timed out的問題

    如何解決Druid線程池Cause:java.sql.SQLRecoverableException:IO錯誤:Sock

    這篇文章主要介紹了解決Druid線程池Cause:java.sql.SQLRecoverableException:IO錯誤:Socket read timed out的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-06-06
  • java文件如何統(tǒng)計字母出現(xiàn)的次數(shù)和百分比

    java文件如何統(tǒng)計字母出現(xiàn)的次數(shù)和百分比

    這篇文章主要介紹了java文件如何統(tǒng)計字母出現(xiàn)的次數(shù)和百分比,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • Java this、final等關(guān)鍵字總結(jié)

    Java this、final等關(guān)鍵字總結(jié)

    這篇文章主要對java中this、final等關(guān)鍵字進行了總結(jié),需要的朋友可以參考下
    2017-04-04
  • Java中Struts2的值棧ValueStack詳解

    Java中Struts2的值棧ValueStack詳解

    這篇文章主要介紹了Java中Struts2的值棧ValueStack詳解,值棧(ValueStack)就是 OGNL 表達式存取數(shù)據(jù)的地方,在一個值棧中,封裝了一次請求所需要的所有數(shù)據(jù),需要的朋友可以參考下
    2023-08-08
  • Java線上CPU飆高問題排查及解決全指南

    Java線上CPU飆高問題排查及解決全指南

    在Java應(yīng)用的線上運行環(huán)境中,CPU飆高是一個常見且棘手的性能問題,當(dāng)系統(tǒng)出現(xiàn)CPU飆高時,通常會導(dǎo)致應(yīng)用響應(yīng)緩慢,甚至服務(wù)不可用,因此,掌握一套科學(xué)有效的CPU飆高問題排查方法很重要,所以本文給大家介紹了Java線上CPU飆高問題排查及解決全指南,需要的朋友可以參考下
    2025-07-07
  • Java BeanPostProcessor與BeanFactoryPostProcessor基礎(chǔ)使用講解

    Java BeanPostProcessor與BeanFactoryPostProcessor基礎(chǔ)使用講解

    這篇文章主要介紹了Java BeanPostProcessor與BeanFactoryPostProcessor基礎(chǔ)使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2022-11-11
  • java之基本數(shù)據(jù)類型所對應(yīng)的包裝類使用

    java之基本數(shù)據(jù)類型所對應(yīng)的包裝類使用

    本文介紹了Java中的8種基本數(shù)據(jù)類型及其對應(yīng)的包裝類,包括包裝類的作用、自動裝箱和拆箱機制、以及提供的一些實用方法
    2025-12-12
  • maven項目錯誤:找不到或無法加載主類?XXX問題

    maven項目錯誤:找不到或無法加載主類?XXX問題

    這篇文章主要介紹了maven項目錯誤:找不到或無法加載主類?XXX問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Java 中的 this 和 super 區(qū)別

    Java 中的 this 和 super 區(qū)別

    這篇文章主要介紹了Javathis與super本質(zhì)區(qū)別,this與super是類實例化時通往Object類通道的打通者;this和super在程序中由于其經(jīng)常被隱式的使用而被我們忽略,但是理解其作用和使用規(guī)范肯定是必須的。接下來將詳述this與super的作用和區(qū)別,需要的朋友可以參考一下
    2021-11-11

最新評論

定边县| 萝北县| 龙陵县| 商城县| 新化县| 桐庐县| 北流市| 塔河县| 自贡市| 神农架林区| 惠州市| 湖南省| 霍州市| 道孚县| 清河县| 丹江口市| 安丘市| 宝兴县| 丹巴县| 曲麻莱县| 宁强县| 高安市| 平江县| 新邵县| 姜堰市| 剑阁县| 靖宇县| 彩票| 无极县| 遂宁市| 临夏市| 茶陵县| 嘉义市| 唐海县| 勃利县| 临朐县| 博客| 金门县| 哈尔滨市| 大洼县| 邢台市|