SpringMVC實現(xiàn)用戶登錄全過程
1、需求分析
用戶輸入賬號與密碼,后端校驗密碼是否正確:
(小型項目僅作階段性學習練習,此處不使用數(shù)據(jù)庫連接,使用session保存客戶端信息)
- 賬號與密碼不匹配(或稱密碼不正確):彈窗提示;
- 賬號與密碼匹配(密碼正確):跳轉(zhuǎn)至首頁顯示登錄用戶信息。
并在后續(xù)再訪問中可以獲取到登錄用戶信息;
對于后端開發(fā)人員,不涉及前端頁面的展示,只需要提供兩個功能:
- (1)登錄頁面:通過賬號與密碼校驗輸入的賬號密碼是否正確;
- (2)首頁:告知前端當前登錄用戶,如果當前已有用戶登錄,返回登錄人的信息;
如果沒有,返回空;
2、接口定義
2.1 校驗接口
(1)請求方式:/user/login
(2)請求方式:GET
(3)接口描述:校驗賬號密碼是否正確
請求參數(shù)
參數(shù)名 | 類型 | 是否必須 | 備注 |
userName | String | 是 | 校驗的賬號 |
password | String | 是 | 校驗的密碼 |
響應數(shù)據(jù)
(1)Content-Type:text/html
(2)響應內(nèi)容:
- true:賬號密碼驗證成功;
- false:賬號密碼驗證失敗;
2.2 查詢登錄用戶接口
(1)請求路徑:/user/getLoginUser
(2)請求方式:GET
(3)接口描述:查詢當前登錄的用戶
請求參數(shù)
無
響應數(shù)據(jù)
(1)Content-Type:text/html
(2)響應內(nèi)容:admin
4、服務器代碼
包括 校驗接口 與 查詢登錄用戶接口
package com.example.demo.controller; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; @RequestMapping("/user") @RestController public class UserController { @RequestMapping("/login") public boolean login(String userName, String password, HttpSession session){ // 第一步:校驗參數(shù)合法性方法 // 校驗參數(shù)合法性方法1:普通判別式 // if(userName == null || userName.length()==0 || password == null || password.length()==0){ // return false; // } // 校驗參數(shù)合法性方法2:使用Spring提供的方法 if(!StringUtils.hasLength(userName) || !StringUtils.hasLength(password)){ return false; } // 第二步:校驗賬戶名與密碼 if("admin".equals(userName) && "admin".equals(password)){ // 第三步:設(shè)置session session.setAttribute("username","admin"); return true; } return false; } @RequestMapping("/getUserInfo") public String getUserInfo(HttpServletRequest request){ // 從session中獲取登錄用戶 HttpSession session = request.getSession(false); String userName = null; if(session != null){ userName = (String)session.getAttribute("username"); } return userName; } }
5、前端代碼
5.1 登錄頁面login.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>登錄頁面</title> </head> <body> <h1>用戶登錄</h1> 用戶名:<input name="userName" type="text" id="userName"><br> 密碼:<input name="password" type="password" id="password"><br> <input type="button" value="登錄" onclick="login()"> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.4/jquery.min.js"></script> <script> function login() { $.ajax({ url:"/user/login", type:"post", data:{ "userName": $("#userName").val(), "password": $("#password").val() }, // 回調(diào)函數(shù) success:function(result){ // result表示后端返回的結(jié)果 if(result){ // 完成頁面跳轉(zhuǎn) // 方式1: location.href = "/index.html"; // 方式2: // location.assign(); }else{ alert("用戶名與密碼不匹配"); } } }); } </script> </body> </html>
5.2 首頁頁面index.html
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>用戶登錄首頁</title> </head> <body> 登錄人: <span id="loginUser"></span> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.4/jquery.min.js"></script> <script> // 需要在頁面加載時就要調(diào)用后端請求 $.ajax({ url:"/user/getUserInfo", type:"get", success:function(username){ $("#loginUser").text(username); } }) </script> </body> </html>
6、運行測試
使用本地回環(huán)URL: http://127.0.0.1:8080/login.html
登錄頁面如下:
輸入用戶名:admin,密碼:admin并點擊登錄:
點擊登錄可以實現(xiàn)登錄頁面跳轉(zhuǎn)至首頁,并顯示登錄人信息;
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring中一個少見的引介增強IntroductionAdvisor
這篇文章主要為大家介紹了Spring中一個少見的引介增強IntroductionAdvisor實戰(zhàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-08-08Java Web端程序?qū)崿F(xiàn)文件下載的方法分享
這篇文章主要介紹了Java Web端程序?qū)崿F(xiàn)文件下載的方法分享,包括一個包含防盜鏈功能的專門針對圖片下載的程序代碼示例,需要的朋友可以參考下2016-05-05IntelliJ IDEA 2017.1.4 x64配置步驟(介紹)
下面小編就為大家?guī)硪黄狪ntelliJ IDEA 2017.1.4 x64配置步驟(介紹)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-06-06spring容器啟動實現(xiàn)初始化某個方法(init)
這篇文章主要介紹了spring容器啟動實現(xiàn)初始化某個方法(init),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08java環(huán)境變量path和classpath的配置
這篇文章主要為大家詳細介紹了java系統(tǒng)環(huán)境變量path和classpath的配置過程,感興趣的小伙伴們可以參考一下2016-07-07