柏竹 柏竹
首页
后端
前端
  • 应用推荐
关于
友链
  • 分类
  • 标签
  • 归档

柏竹

奋斗柏竹
首页
后端
前端
  • 应用推荐
关于
友链
  • 分类
  • 标签
  • 归档
  • Java基础

  • JavaWeb

    • Tomcat
    • JavaWeb Servlet
    • JSP
    • 过滤监听器
    • 会话跟踪
      • Cookie
        • Cookie应用
      • Session
        • Session应用
        • Session生命周期
      • Session和Cookie的区别
    • MVC设计模式
    • Ajax
    • JSON
    • JspSmartUpload应用
  • 拓展技术

  • 框架技术

  • 数据库

  • 数据结构

  • Spring

  • SpringMVC

  • SpringBoot

  • SpringClound

  • Ruoyi-Vue-Plus

  • 后端
  • JavaWeb
柏竹
2020-02-18
目录

会话跟踪

# 会话跟踪

会话跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。保持对用户会话期间的数据管理。常用的会话跟踪技术是Cookie与Session。

Cookie 通过在 客户端记录 信息确定用户身份 Session 通过在 服务器端记录 信息确定用户身份

# Cookie

Cookie是客户端请求服务器后,服务器发给客户端的⼀个辨认标识,保存在客户端,当客户端再次向服务器发送请求时,会携带着这个辨认标识,服务器就可以通过这个标识来识别 客户端的身份 或 状态等...

# Cookie应用

应用步骤:

  1. 存数据 实例 Cookie对象(String key, String value)
  2. 响应返回 HttpServletResponse.addCookie(Cookie cookie)方法 对指定的 cookie对象 进行添加至响应中(可多次添加数据)
  3. 客户端识别读取 , HttpServletRequest.getCookies() 获取 得到 Cookies对象数组
  4. 对其数组进行遍历 cookie对象 ,Cookie.getName()方法 判断对应 保存的key 进行获取 value值
  5. 符合条件的 key 对其值进行 范围保存value值

Cookie保存

@Override
protected void doPost(HttpServletRequest req , HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("Post请求============");
        String user = req.getParameter("user");
        //创建保存 cookie对象
        Cookie cookie = new Cookie("uname",user);
        //添加对象
        resp.addCookie(cookie);
}

Cookie读取

// 方式No.1
<%
    Cookie[] cookies = request.getCookies();
    if (cookies != null) {
      for (Cookie c : cookies) {
        if (c.getName().equals("uname")) {
          pageContext.setAttribute("uname",c.getValue());
          break;
        }
      }
    }
%>

// 方式No.2
${cookie.<键名>.vlaue}

Cookie定时销毁

Cookie cookie = new Cookie("username", "aaa");
//设置Cookie的有效时间为30s
cookie.setMaxAge(30);
response.addCookie(cookie); 

Cookie中文编码

// 存数据前 将String 转换 编码
String name = URLEncoder.encode("张三", "utf-8");
Cookie cookie = new Cookie("name", name);
    
// 取数据前 将String 反转 编码
String name = URLDecoder.decode( cookie.getName() ,"utf-8");

点击Cookie更多方法 (opens new window) 点击了解HttpServletResponse (opens new window)

注意:

  • 未对Cookie有效时长设置 ,则Cookie在浏览器关闭自动销毁
  • Cookie数据 会保存在当前的客户端
  • Cookie不适保存隐私信息

# Session

Session是客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上的数据 Session对象 对应的类为 javax.servlet.http.HttpSession类

# Session应用

应用步骤:

  1. 获取HttpSession对象,通过 HttpServletRequest.getSession()方法 获取对象
  2. 保存对象属性,通过 HttpSession.setAttribute(String key , String value)方法 存储数据
  3. 读取数据,通过HttpSession.getAttribute(String key)方法 获取数据

点击更多HttpSession方法 (opens new window) 点击更多HttpServletRequest方法 (opens new window)

# Session生命周期

Session保存在服务器端 Session在用户第⼀次访问服务器的时候自动创建。需要注意只有访问JSP、Servlet等程序时才会创建 Session对象,只访问HTML、IMAGE等静态资源并不会创建Session

点击了解Session生命周期 (opens new window)

Session销毁操作有哪些?

  • 关闭服务器
  • session对象调用 invalidate()
  • session对象设置了自动销毁时间 session.setMaxInactiveInterval(60) (60s销毁)
  • session默认30min自动销毁(从你上一次访问服务器开始计时开始

注意:

  • Session对象 重定向/转发时,session数据不会丢失 (重定向请求数据会丢失)
  • Session 用于存储有意义的数据(减少服务器压力)
  • Session 有生命周期时长的限制(默认30min失效

# Session和Cookie的区别

  • Cookie数据保存在客户端
  • Cookies不会占服务器资源
  • Session数据保存在服务器端
  • Session的客户端SessionID标识符,用存服务端的Session存储空间
#Cookie#Session
上次更新: 2023/03/12, 00:43:49

← 过滤监听器 MVC设计模式→

最近更新
01
HTTPS自动续签
10-21
02
博客搭建-简化版(脚本)
10-20
03
ruoyi-vue-plus-部署篇
07-13
更多文章>
Theme by Vdoing | Copyright © 2019-2024 | 桂ICP备2022009417号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式