SpringMVC实现用户登录全过程

 更新时间:2024年09月05日 15:30:49   作者:_周游  
这篇文章主要介绍了SpringMVC实现用户登录全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

1、需求分析

用户输入账号与密码,后端校验密码是否正确:

(小型项目仅作阶段性学习练习,此处不使用数据库连接,使用session保存客户端信息)

  • 账号与密码不匹配(或称密码不正确):弹窗提示;
  • 账号与密码匹配(密码正确):跳转至首页显示登录用户信息。

并在后续再访问中可以获取到登录用户信息;

对于后端开发人员,不涉及前端页面的展示,只需要提供两个功能:

  • (1)登录页面:通过账号与密码校验输入的账号密码是否正确;
  • (2)首页:告知前端当前登录用户,如果当前已有用户登录,返回登录人的信息;

如果没有,返回空;

2、接口定义

2.1 校验接口

(1)请求方式:/user/login

(2)请求方式:GET

(3)接口描述:校验账号密码是否正确

请求参数

参数名类型是否必须备注
userNameString校验的账号
passwordString校验的密码

响应数据

(1)Content-Type:text/html

(2)响应内容:

  • true:账号密码验证成功;
  • false:账号密码验证失败;

2.2 查询登录用户接口

(1)请求路径:/user/getLoginUser

(2)请求方式:GET

(3)接口描述:查询当前登录的用户

请求参数

响应数据

(1)Content-Type:text/html

(2)响应内容: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){
        // 第一步:校验参数合法性方法
        // 校验参数合法性方法1:普通判别式
//        if(userName == null || userName.length()==0 || password == null || password.length()==0){
//            return false;
//        }
        // 校验参数合法性方法2:使用Spring提供的方法
        if(!StringUtils.hasLength(userName) || !StringUtils.hasLength(password)){
            return false;
        }
        // 第二步:校验账户名与密码
        if("admin".equals(userName) && "admin".equals(password)){
            // 第三步:设置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()
            },
            // 回调函数
            success:function(result){
                // result表示后端返回的结果
                if(result){
                    // 完成页面跳转
                    // 方式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>
    // 需要在页面加载时就要调用后端请求
    $.ajax({
        url:"/user/getUserInfo",
        type:"get",
        success:function(username){
            $("#loginUser").text(username);
        }
    })
</script>
</body>
</html>

6、运行测试

使用本地回环URL: http://127.0.0.1:8080/login.html

登录页面如下:

输入用户名:admin,密码:admin并点击登录:

点击登录可以实现登录页面跳转至首页,并显示登录人信息;

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • IDEA编译时报常量字符串过长的解决办法

    IDEA编译时报常量字符串过长的解决办法

    本文主要介绍了IDEA编译时报常量字符串过长的解决办法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • mybatis-generator-gui 工具使用(图形化工具)

    mybatis-generator-gui 工具使用(图形化工具)

    基于 mybatis generator 开发一款界面工具, 本工具可以使你非常容易及快速生成 Mybatis 的 Java POJO 文件及数据库 Mapping 文件。本文重点给大家介绍mybatis-generator-gui 工具使用,感兴趣的朋友一起看看吧
    2022-03-03
  • Java实现多线程下载和断点续传

    Java实现多线程下载和断点续传

    这篇文章主要为大家详细介绍了Java实现多线程下载和断点续传,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • Java通过递归算法解决迷宫与汉诺塔及八皇后问题

    Java通过递归算法解决迷宫与汉诺塔及八皇后问题

    方法就是用来完成解决某件事情或实现某个功能的办法;程序调用自身的编程技巧称为递归,本文主要讲的是通过递归来实现三个经典的问题,解决迷宫,汉诺塔,八皇后问题,感兴趣的朋友可以参考一下
    2022-05-05
  • Spring boot怎么整合Mybatis

    Spring boot怎么整合Mybatis

    spring boot的简配置方便的开发,下面通过本文给大家分享Spring boot整合Mybatis的方法,需要的朋友参考下
    2017-07-07
  • springSecurity之AuthenticationProvider用法解析

    springSecurity之AuthenticationProvider用法解析

    这篇文章主要介绍了springSecurity之AuthenticationProvider用法解析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • Java httpClient介绍以及使用示例

    Java httpClient介绍以及使用示例

    这篇文章主要介绍了Java httpClient介绍以及使用示例,帮助大家更好的利用Java实现HTTP请求,感兴趣的朋友可以了解下
    2020-10-10
  • Java Struts图片上传至指定文件夹并显示图片功能

    Java Struts图片上传至指定文件夹并显示图片功能

    这篇文章主要介绍了Java Struts图片上传至指定文件夹并显示图片功能,需要的朋友可以参考下
    2017-08-08
  • Java实现顺序表的操作

    Java实现顺序表的操作

    这篇文章主要为大家详细介绍了Java实现顺序表的基本操作,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • Java 实现常见的非对称加密算法

    Java 实现常见的非对称加密算法

    这篇文章主要介绍了Java 实现常见的非对称加密算法,帮助大家更好的理解和使用Java,感兴趣的朋友可以了解下
    2020-11-11

最新评论