Spring Boot + MyBatis 實現用戶登錄功能詳解(基礎)

一、項目概述

? ? ? ? 做了幾個項目發現有人問到怎么使用springboot+HTML+js+CSS開發一個項目呢所以本文將介紹如何使用Spring Boot和MyBatis實現一個完整的用戶登錄功能。系統包含前端登錄頁面、后端控制器、服務層、數據訪問層以及數據庫交互。

?

二、技術棧

  • Spring Boot 2.x

  • MyBatis 持久層框架

  • MySQL 數據庫

  • jQuery 前端交互

  • HTML/CSS 頁面展示

三、核心實現

1. 實體類設計(BookUser.java)

public class BookUser {private Integer id;private String phone;private String name;private String password;private Integer role;private Integer money;private String address;@JsonProperty("username")private String loginName;// Getter和Setter方法// toString方法
}

2. 數據訪問層(DAO)

接口定義(LoginUserDao.java):

public interface LoginUserDao {List<LoginUser> findAll();BookUser findUser(BookUser bookUser);
}

MyBatis映射文件(LoginUserMapper.xml):(這里僅僅是做了一個動態查詢,跟實際的不一樣 想動態查詢的可以去學一下mybatis基礎非常的簡單

<select id="findUser" resultType="com.qcby.springboot0712.entity.BookUser"parameterType="com.qcby.springboot0712.entity.BookUser">SELECT * FROM user<where><if test="id != null">id=#{id}</if><if test="phone != null and phone != ''">AND phone=#{phone}</if><if test="password != null and password != ''">AND password=#{password}</if><if test="loginName != null and loginName != ''">AND loginName=#{loginName}</if></where>
</select>

3. 服務層(Service)

服務接口(LoginUserService.java):

public interface LoginUserService {List<LoginUser> findAll();BookUser findUser(BookUser bookUser);
}

服務實現(LoginUserServiceImpl.java)(實現了spring 的Ioc 單例 :

@Service
public class LoginUserServiceImpl implements LoginUserService {@Autowiredprivate LoginUserDao loginUserDao;@Overridepublic BookUser findUser(BookUser bookUser) {System.out.println("查詢用戶: " + bookUser);return loginUserDao.findUser(bookUser);}
}

4. 控制器層(Controller)

@Controller
@Api(tags = "登錄測試")
public class LoginUserController {@Autowiredprivate LoginUserService loginUserService;@RequestMapping("/tologin")public String tologin() {return "login";}@RequestMapping("/login")@ResponseBodypublic BookUser login(BookUser user1) {System.out.println("登錄請求參數: " + user1);return loginUserService.findUser(user1);}
}

5. 前端實現

登錄頁面(login.html):

<div class="auth-container"><h2 class="text-2xl font-bold text-center mb-4">用戶登錄</h2><form id="loginForm"><div class="form-group"><label for="userid">ID</label><input type="text" id="userid" class="userid" required></div><div class="form-group"><label for="username">賬號</label><input type="text" id="username" class="username" required></div><div class="form-group"><label for="password">密碼</label><input type="password" id="password" class="password" required></div><input type="button" class="btn" value="立即登錄"></form>
</div>

登錄交互(login.js)(這里是僅僅查詢是否有這個用戶,并沒有其他的驗證功能??想要其他的驗證功能自己可以做一下

$(document).ready(function() {$(".btn").on("click", function() {const id = $('.userid').val();const username = $('.username').val();const password = $('.password').val();$.ajax({url: "login",type: "GET",data: {id: id,loginName: username,password: password},success: function(response) {if(response && response.id) {console.log("登錄成功,用戶信息:", response);alert(`登錄成功!歡迎 ${response.name}`);} else {alert("登錄失敗,用戶名或密碼錯誤");}},error: function(error) {console.log("登錄失敗:", error);alert("登錄失敗,請檢查控制臺");}});});
});

四、關鍵點解析

  1. 前后端數據映射

    • 使用@JsonProperty("username")注解解決前后端字段名不一致問題

    • MyBatis動態SQL處理不同查詢條件組合

  2. 登錄流程

    前端輸入 → AJAX請求 → Spring MVC控制器 → 服務層 → MyBatis查詢 → 返回結果 → 前端處理
  3. 安全考慮

    • 實際項目中應對密碼進行加密存儲(如BCrypt)

    • 添加驗證碼防止暴力破解

    • 使用HTTPS保護數據傳輸

五、總結

本文實現了一個完整的Spring Boot登錄功能,涵蓋了從前端頁面到數據庫查詢的全流程。核心在于:

  • Spring Boot的高效開發模式

  • MyBatis靈活的SQL映射

  • 前后端分離的交互方式

  • RESTful風格的接口設計

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/88712.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/88712.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/88712.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

adb 簡介與常用命令

1. adb 簡介adb 的全稱為 Android Debug Bridge&#xff0c;就是起到調試橋的作用。借助 adb 工具&#xff0c;我們可以管理設備或手機模擬器的狀態。還可以進行很多手機操作&#xff0c;如安裝軟件、系統升級、運行 shell 命令等等。其實簡而言說&#xff0c;adb 就是連接 And…

阿里云-跨賬號同步OSS Bucket

說明 阿里云A賬號的OSS BUCKET同步到B賬號的指定OSS BUCKET。 賬號Bucket NamesRAM角色A{源buctket}OSS-SYNCERB{目標buctket} 步驟 在阿里云A,B賬號分別建上表buckets, 最好是相同地域的在A號-RAM控制臺建立角色OSS-SYNCER&#xff0c;并賦權AliyunOSSFullAccess&#xff…

uniapp小程序無感刷新token

request.js // request.js import {getApptoken,getStoredApptoken } from ./tokenRequest // 從合并模塊導入// 全局配置 const MAX_RETRIES 1 // 最大重試次數 const baseURL https://your-api.com// 請求隊列和刷新狀態 let requestsQueue [] let isRefreshing false// …

MySQL優化高手筆記

語雀完整版&#xff1a;https://www.yuque.com/g/mingrun/embiys/dv3btw/collaborator/join?tokenzMBwPzSMfSGINLuv&sourcedoc_collaborator# 《MySQL優化高手筆記》MySQL優化高手一、MySQL架構01 天天寫CRUD,你知道你的系統是如何跟MySQL打交道的嗎通過驅動連接數據庫&am…

Git 詳解:從概念,常用命令,版本回退到工作流

本文將從 Git 的核心概念講起&#xff0c;詳細介紹常用命令、各階段版本回退、分支控制以及企業內常見的 Git 工作流。 Git 與 GitHub 簡介 Git 簡介 Git 是一個開源的分布式版本控制系統&#xff0c;由 Linus Torvalds 于 2005 年開發。它與集中式版本控制系統&#xff08;…

CMSIS(Cortex Microcontroller Software Interface Standard)ARM公司為 Cortex-M 系列處理器

CMSIS&#xff08;Cortex Microcontroller Software Interface Standard&#xff09;是ARM公司為 Cortex-M 系列處理器&#xff08;如 M0/M3/M4/M7/M23/M33 等&#xff09;定義的一套硬件抽象層標準&#xff0c;旨在簡化嵌入式開發&#xff0c;提高代碼的可移植性和復用性。 核…

[特殊字符] 掃描式處理:Python 自動提取 PDF 中關鍵詞相關表格并導出為 Excel

本文演示如何利用 pdfplumber 批量處理指定文件夾下 PDF 文檔&#xff1a;定位關鍵詞&#xff08;如“主要會計數據”&#xff09;出現的頁碼及下一頁&#xff0c;提取其中的表格并保存為獨立 Excel 文件。適用于財務報告、審計表格、統計報表等場景。 1?? 第一步&#xff1a…

python3的返回值能返回多個嗎?

在Python中&#xff0c;函數可以通過返回一個元組&#xff08;tuple&#xff09; 來間接實現返回多個值的效果。以下是具體說明&#xff1a; 實現方式&#xff1a;直接返回逗號分隔的值 Python會自動將這些值打包成一個元組&#xff1a; def multiple_return():a 1b "he…

UE5 Secondary Materials

首先放入材質A材質B放入Secondary Materials兩個效果就能融合到一起了動態設置secondary material

AUTOSAR進階圖解==>AUTOSAR_SWS_FlashTest

AUTOSAR Flash Test模塊詳解與分析 基于AUTOSAR標準的Flash Test模塊架構、功能與應用分析目錄 1. Flash Test模塊概述 1.1 模塊作用與功能1.2 適用范圍 2. Flash Test模塊架構 2.1 模塊位置2.2 組件關系 3. 狀態管理 3.1 狀態定義3.2 狀態轉換 4. 后臺測試執行流程 4.1 測試間…

msf復現永恒之藍

永恒之藍&#xff08;EternalBlue&#xff09;是利用 Windows 系統的 SMB 協議漏洞&#xff08;MS17-010&#xff09;來獲取系統最高權限的漏洞&#xff0c;利用 Metasploit 框架&#xff08;MSF&#xff09;復現該漏洞是一個復雜且具有一定風險的操作&#xff0c;必須在合法合…

格密碼--LWE,DLWE和ss-LWE

格密碼–LWE&#xff0c;DLWE和ss-LWE 0.數學符號數學符號含義備注Zq\mathbb{Z}_qZq?模qqq的整數集合&#xff0c;即{0,1,2,...,q?1}\{0,1,2,...,q-1\}{0,1,2,...,q?1}用于定義LWE、DLWE、ss-LWE等問題中矩陣和向量的元素取值范圍&#xff0c;是基礎整數環x∈RSx \in_R Sx∈…

【閉包】前端的“保護神”——閉包詳解+底層原理

目錄 一、閉包是什么&#xff1f;概念 二、閉包為什么存在&#xff1f;作用 1. 創建私有變量 2. 實現數據封裝與信息隱藏 3. 模擬私有方法 4. 保存函數執行時的狀態 5. 回調函數和事件處理 6. 模塊化編程 7. 懶加載與延遲執行 三、閉包怎么用&#xff1f;實踐業務場景 …

算法學習筆記:19.牛頓迭代法——從原理到實戰,涵蓋 LeetCode 與考研 408 例題

牛頓迭代法&#xff08;Newtons Method&#xff09;是一種強大的數值計算方法&#xff0c;由英國數學家艾薩克?牛頓提出。它通過不斷迭代逼近方程的根&#xff0c;具有收斂速度快、適用范圍廣的特點&#xff0c;在科學計算、工程模擬、計算機圖形學等領域有著廣泛應用。牛頓迭…

小白學Python,操作文件和文件夾

目錄 前言 一、操作文件路徑 1.獲取當前路徑 2.創建文件夾 &#xff08;1&#xff09;mkdir()函數 &#xff08;2&#xff09;makedirs() 函數 3.拼接路徑 4.跳轉路徑 5.判斷相對路徑和絕對路徑 6.獲取文件路徑和文件名 二、操作文件和文件夾 1.查詢文件大小 2.刪除…

015_引用功能與信息溯源

引用功能與信息溯源 目錄 引用功能概述支持的模型引用類型API使用方法引用格式應用場景最佳實踐 引用功能概述 什么是引用功能 Claude的引用功能允許在回答基于文檔的問題時提供詳細的信息來源引用&#xff0c;幫助用戶追蹤和驗證信息的準確性。這個功能特別適用于需要高可…

ROS2中的QoS(Quality of Service)詳解

ROS2中的QoS&#xff08;Quality of Service&#xff09;詳解1. 主要QoS參數2. 為什么需要設置QoS3. QoS兼容性規則4. 選擇QoS策略的建議5. 調試QoS問題的方法6. 踩坑&#xff1a;訂閱話題沒有輸出可能的原因&#xff1a;調試方法QoS是ROS2中用于控制通信質量和行為的機制。它定…

Cursor三大核心AI功能

一&#xff1a;Tab鍵&#xff1a;智能小助手 1.1 單行/多行代碼補全 在代碼中寫出要實現的功能&#xff0c;第一次按Tab生成代碼&#xff0c;第二次按Tab接受代碼。1.2 智能代碼重寫 對已有代碼重新編寫。 寫個注釋告訴AI重構方法&#xff0c;然后鼠標點到方法內部&#xff0c;…

cesium添加原生MVT矢量瓦片方案

項目中需要基于cesium接入mvt格式的服務并支持屬性拾取查詢&#xff0c;通過一系列預研測試&#xff0c;最后選擇cesium-mvt-imagery-provider開源插件完成&#xff0c;關鍵源碼信息如下&#xff1a; npm i cesium cesium-mvt-imagery-provider //安裝依賴包// 加載圖層import…

AI金融風控:識別欺詐,量化風險的新利器

AI金融風控&#xff1a;識別欺詐&#xff0c;量化風險的新利器深度學習算法穿透海量交易數據&#xff0c;92.5%的不良貸款識別率宣告了金融風險防控新時代的來臨。深圳桑達銀絡科技有限公司在2025年6月申請的“基于人工智能的金融交易反欺詐系統”專利&#xff0c;揭示了金融風…