项目2-用户登录

1.创建项目

2.引入前端代码并检查是否有误

3.定义接口

需求分析
对于后端开发⼈员⽽⾔, 不涉及前端⻚⾯的展⽰, 只需要提供两个功能
1. 登录⻚⾯: 通过账号和密码, 校验输⼊的账号密码是否正确, 并告知前端
2. ⾸⻚: 告知前端当前登录⽤⼾. 如果当前已有⽤⼾登录, 返回登录的账号, 如果没有, 返回空值

接⼝定义
1. 校验接⼝

请求路径:/user/login
请求⽅式:POST
接⼝描述:校验账号密码是否正确

请求参数:

参数名 类型 是否必须 备注
userName String 校验的账号
password String 校验的密码

响应数据:

Content-Type: text/html
响应内容: 

true //账号密码验证成功
false//账号密码验证失败

2. 查询登录⽤⼾接⼝

请求路径:/user/getLoginUser
请求⽅式:GET
接⼝描述:查询当前登录的⽤⼾
请求参数:

响应数据:Content-Type: text/html
响应内容: 
zhangsan 

4.服务器代码 

4.1 校验接口

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.HttpSession;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 吉祥瑞
 * Date: 2024-03-24
 * Time: 22:47
 */
@RestController
@RequestMapping("/user")
public class LoginController {
    @RequestMapping("/login")
    public boolean login(String userName, String password, HttpSession session){
        //1.校验获取参数是否为空
        //StringUtils.hasLength() 是Spring提供的⼀个⼯具⽅法, 判断字符串是否有值
        //字符串为null或者""时, 返回false, 其他返回true
        if(!StringUtils.hasLength(userName)||!StringUtils.hasLength(password)){
            return false;
        }
        //2.校验session中是否有相应的数据
        if(userName.equals("userName")&&password.equals("password")){
            session.setAttribute("username",userName);
            return true;
        }
        return false;
    }
}

测试接口--利用postman

4.2 查询登录用户接口

@RequestMapping("/getLoginUser")
    public String getLoginUser(HttpSession session) {
        //从Session中获取⽤⼾登录信息
        String userName=(String) session.getAttribute("userName");//需要进行强转
        //如果⽤⼾已经登录, 则直接返回⽤⼾登录(session不为空)
        if (StringUtils.hasLength(userName)){
            return userName;
        }
        return "";
    }

测试成功

5.前后端交互 

<!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){
          if(result){
            location.href = "/index.html"
          }else{
            alert("账号或密码有误,请重新输入")
          }
        }
      })
    }

  </script>
</body>

</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/getLoginUser",
            type: "get",
            success: function(result){
                $("#loginUser").text(result);
            }
        })
    </script>
</body>

</html>

 

成功!!! 

相关推荐

  1. 用户登录问题——登录

    2024-03-25 06:08:02       43 阅读
  2. Django-用户登录

    2024-03-25 06:08:02       38 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-25 06:08:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-25 06:08:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-25 06:08:02       82 阅读
  4. Python语言-面向对象

    2024-03-25 06:08:02       91 阅读

热门阅读

  1. 在odoo中以超级用户访问记录集

    2024-03-25 06:08:02       45 阅读
  2. python蓝桥杯-算法训练 印章、拿金币、数字游戏

    2024-03-25 06:08:02       37 阅读
  3. 单例模式

    2024-03-25 06:08:02       39 阅读
  4. C#的自述

    2024-03-25 06:08:02       37 阅读
  5. webvirtcloud:kvm虚拟化管理平台

    2024-03-25 06:08:02       41 阅读
  6. 深入剖析Hadoop面试题(75个问题,1.5万字)

    2024-03-25 06:08:02       36 阅读
  7. 【CSP试题回顾】202209-2-何以包邮?(优化)

    2024-03-25 06:08:02       36 阅读
  8. 探讨大数据、云计算与物联网的融合与发展

    2024-03-25 06:08:02       40 阅读
  9. 宝塔面板安装sqlite

    2024-03-25 06:08:02       45 阅读
  10. hadoop fs -test的相关命令

    2024-03-25 06:08:02       38 阅读
  11. 内存泄露?什么是ThreadLocal

    2024-03-25 06:08:02       48 阅读
  12. Django——forms组件

    2024-03-25 06:08:02       41 阅读
  13. MyBatis

    MyBatis

    2024-03-25 06:08:02      37 阅读
  14. 华为od真题2023-C卷-三叉搜索树

    2024-03-25 06:08:02       42 阅读