欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringMVC實(shí)現(xiàn)用戶登錄全過(guò)程

 更新時(shí)間:2024年09月05日 15:30:49   作者:_周游  
這篇文章主要介紹了SpringMVC實(shí)現(xiàn)用戶登錄全過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

1、需求分析

用戶輸入賬號(hào)與密碼,后端校驗(yàn)密碼是否正確:

(小型項(xiàng)目?jī)H作階段性學(xué)習(xí)練習(xí),此處不使用數(shù)據(jù)庫(kù)連接,使用session保存客戶端信息)

  • 賬號(hào)與密碼不匹配(或稱密碼不正確):彈窗提示;
  • 賬號(hào)與密碼匹配(密碼正確):跳轉(zhuǎn)至首頁(yè)顯示登錄用戶信息。

并在后續(xù)再訪問中可以獲取到登錄用戶信息;

對(duì)于后端開發(fā)人員,不涉及前端頁(yè)面的展示,只需要提供兩個(gè)功能:

  • (1)登錄頁(yè)面:通過(guò)賬號(hào)與密碼校驗(yàn)輸入的賬號(hào)密碼是否正確;
  • (2)首頁(yè):告知前端當(dāng)前登錄用戶,如果當(dāng)前已有用戶登錄,返回登錄人的信息;

如果沒有,返回空;

2、接口定義

2.1 校驗(yàn)接口

(1)請(qǐng)求方式:/user/login

(2)請(qǐng)求方式:GET

(3)接口描述:校驗(yàn)賬號(hào)密碼是否正確

請(qǐng)求參數(shù)

參數(shù)名類型是否必須備注
userNameString校驗(yàn)的賬號(hào)
passwordString校驗(yàn)的密碼

響應(yīng)數(shù)據(jù)

(1)Content-Type:text/html

(2)響應(yīng)內(nèi)容:

  • true:賬號(hào)密碼驗(yàn)證成功;
  • false:賬號(hào)密碼驗(yàn)證失??;

2.2 查詢登錄用戶接口

(1)請(qǐng)求路徑:/user/getLoginUser

(2)請(qǐng)求方式:GET

(3)接口描述:查詢當(dāng)前登錄的用戶

請(qǐng)求參數(shù)

無(wú)

響應(yīng)數(shù)據(jù)

(1)Content-Type:text/html

(2)響應(yīng)內(nèi)容:admin

4、服務(wù)器代碼

包括 校驗(yàn)接口 查詢登錄用戶接口

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){
        // 第一步:校驗(yàn)參數(shù)合法性方法
        // 校驗(yàn)參數(shù)合法性方法1:普通判別式
//        if(userName == null || userName.length()==0 || password == null || password.length()==0){
//            return false;
//        }
        // 校驗(yàn)參數(shù)合法性方法2:使用Spring提供的方法
        if(!StringUtils.hasLength(userName) || !StringUtils.hasLength(password)){
            return false;
        }
        // 第二步:校驗(yàn)賬戶名與密碼
        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 登錄頁(yè)面login.html

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>登錄頁(yè)面</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){
                    // 完成頁(yè)面跳轉(zhuǎn)
                    // 方式1:
                    location.href = "/index.html";
                    // 方式2:
                    // location.assign();
                }else{
                    alert("用戶名與密碼不匹配");
                }
            }
        });
    }

</script>
</body>

</html>

5.2 首頁(yè)頁(yè)面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>用戶登錄首頁(yè)</title>
</head>

<body>
登錄人: <span id="loginUser"></span>

<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
<script>
    // 需要在頁(yè)面加載時(shí)就要調(diào)用后端請(qǐng)求
    $.ajax({
        url:"/user/getUserInfo",
        type:"get",
        success:function(username){
            $("#loginUser").text(username);
        }
    })
</script>
</body>
</html>

6、運(yùn)行測(cè)試

使用本地回環(huán)URL: http://127.0.0.1:8080/login.html

登錄頁(yè)面如下:

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

點(diǎn)擊登錄可以實(shí)現(xiàn)登錄頁(yè)面跳轉(zhuǎn)至首頁(yè),并顯示登錄人信息;

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論