Cookie和Session

文章目录

  • 前言
  • 一、Cookie
    • 1:Cookie是什么?
    • 2:Cookie的数据从哪来?
    • 3:Cookie的数据长啥样 ?
    • 4:Cookie的作用
    • 5:Cookie到哪里去?
    • 6:Cookie怎么存的?
    • 二.代码
  • 三、Session
  • 总结


前言

提示:这里可以添加本文要记录的大概内容:


提示:以下是本篇文章正文内容,下面案例可供参考

一、Cookie

1:Cookie是什么?

Cookie:是浏览器在本地持久化存储数据的一种机制。

2:Cookie的数据从哪来?

Cookie的数据是浏览器返回给浏览器的。

3:Cookie的数据长啥样 ?

Cookie中是键值对中的数据,并且这些键值对中的数据都是程序员自定义的。

4:Cookie的作用

Cookie和Session_第1张图片

5:Cookie到哪里去?

Cookie中的内容会在下次访问该网站的时候,自动被带到http请求中。

6:Cookie怎么存的?

 浏览器按照不同的"域名"分别存储cookie.域名和域名之间的cookie是不同的。

 Cookie是存储在硬盘上。Cookie往往会有超时时间。

二.代码

我在springboot中写的代码

package com.example.demo.demos.web;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.Mapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;

@Controller
public class MyController {

    @RequestMapping ("/getCookies")
    @ResponseBody
    public String getCookies(HttpServletRequest request) {
        Cookie[] cookies = request.getCookies();

        if (cookies != null) {
            for (Cookie cookie : cookies) {
                System.out.println("Cookie Name: " + cookie.getName());
                System.out.println("Cookie Value: " + cookie.getValue());
            }
        } else {
            System.out.println("No cookies found");
        }

        // 这里可以返回视图或其他逻辑
        return "cookieView";
    }
}

刚打开8080的窗口肯定是没有cookie的
打开f12
Cookie和Session_第2张图片

我们自己加一个cookie的值,然后刷新
Cookie和Session_第3张图片

三、Session

package com.example.demo.demos.web;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpSession;

@Controller
public class LoginController {
    // 显示登录页面
    @RequestMapping("/login")
    @ResponseBody
    public String showLoginPage() {
        return "login";
    }
    // 处理登录请求
    @RequestMapping("/login2")
    @ResponseBody
    public String login(@RequestParam String username, @RequestParam String password, HttpSession session, Model model) {
        if (username == null || password == null || username.equals("") || password.equals("")) {
            model.addAttribute("message", "当前请求参数不完整");
            return "login";
        }

        // 验证用户名和密码是否正确,这里简单模拟一个合法用户
        if (!username.equals("zhangsan") || !password.equals("123")) {
            model.addAttribute("message", "当前用户名或密码错误");
            return "login";
        }

        // 登录成功,创建session
        session.setAttribute("username", username);
        session.setAttribute("time", System.currentTimeMillis());

        // 重定向到index页面
        return "redirect:/index";
    }

    // 显示首页
    // 显示首页
    @RequestMapping("/index")
    @ResponseBody
    public String showIndexPage(HttpSession session, Model model) {
        // 在index页面显示用户名信息
        String username = (String) session.getAttribute("username");
        Long time = (Long) session.getAttribute("time");

        // 如果用户名或时间戳为null,执行相应的处理逻辑
        if (username == null || time == null) {
            return "User information not available";
        }

        // 打印用户名和时间戳到控制台
        System.out.println("用户名: " + username + " 时间戳: " + time);

        // 返回一个字符串作为响应
        return "Welcome, " + username + "!";
    }


}

总结

好了,博客到这里结束

你可能感兴趣的:(Java,EE,java)