SpringMVC實現(xiàn)用戶登錄全過程
1、需求分析
用戶輸入賬號與密碼,后端校驗密碼是否正確:
(小型項目僅作階段性學(xué)習(xí)練習(xí),此處不使用數(shù)據(jù)庫連接,使用session保存客戶端信息)
- 賬號與密碼不匹配(或稱密碼不正確):彈窗提示;
- 賬號與密碼匹配(密碼正確):跳轉(zhuǎn)至首頁顯示登錄用戶信息。
并在后續(xù)再訪問中可以獲取到登錄用戶信息;
對于后端開發(fā)人員,不涉及前端頁面的展示,只需要提供兩個功能:
- (1)登錄頁面:通過賬號與密碼校驗輸入的賬號密碼是否正確;
- (2)首頁:告知前端當(dāng)前登錄用戶,如果當(dāng)前已有用戶登錄,返回登錄人的信息;
如果沒有,返回空;
2、接口定義
2.1 校驗接口
(1)請求方式:/user/login
(2)請求方式:GET
(3)接口描述:校驗賬號密碼是否正確
請求參數(shù)
| 參數(shù)名 | 類型 | 是否必須 | 備注 |
| userName | String | 是 | 校驗的賬號 |
| password | String | 是 | 校驗的密碼 |
響應(yīng)數(shù)據(jù)
(1)Content-Type:text/html
(2)響應(yīng)內(nèi)容:
- true:賬號密碼驗證成功;
- false:賬號密碼驗證失?。?/li>
2.2 查詢登錄用戶接口
(1)請求路徑:/user/getLoginUser
(2)請求方式:GET
(3)接口描述:查詢當(dāng)前登錄的用戶
請求參數(shù)
無
響應(yīng)數(shù)據(jù)
(1)Content-Type:text/html
(2)響應(yīng)內(nèi)容:admin
4、服務(wù)器代碼
包括 校驗接口 與 查詢登錄用戶接口
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、運(yùn)行測試
使用本地回環(huán)URL: http://127.0.0.1:8080/login.html
登錄頁面如下:

輸入用戶名:admin,密碼:admin并點(diǎn)擊登錄:

點(diǎn)擊登錄可以實現(xiàn)登錄頁面跳轉(zhuǎn)至首頁,并顯示登錄人信息;
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring中一個少見的引介增強(qiáng)IntroductionAdvisor
這篇文章主要為大家介紹了Spring中一個少見的引介增強(qiáng)IntroductionAdvisor實戰(zhàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08
Java Web端程序?qū)崿F(xiàn)文件下載的方法分享
這篇文章主要介紹了Java Web端程序?qū)崿F(xiàn)文件下載的方法分享,包括一個包含防盜鏈功能的專門針對圖片下載的程序代碼示例,需要的朋友可以參考下2016-05-05
IntelliJ IDEA 2017.1.4 x64配置步驟(介紹)
下面小編就為大家?guī)硪黄狪ntelliJ IDEA 2017.1.4 x64配置步驟(介紹)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-06-06
spring容器啟動實現(xiàn)初始化某個方法(init)
這篇文章主要介紹了spring容器啟動實現(xiàn)初始化某個方法(init),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08
java環(huán)境變量path和classpath的配置
這篇文章主要為大家詳細(xì)介紹了java系統(tǒng)環(huán)境變量path和classpath的配置過程,感興趣的小伙伴們可以參考一下2016-07-07

