Session基本使用及原理和使用细节

简介: Session基本使用及原理和使用细节

一、Session基本使用

服务端会话跟踪技术:将数据保存到服务端


JavaEE提供HttpSession接口,来实现一次会话的多次请求间数据共享功能

ea42ea43c4ef4252a1da9e64f3ef2c35.png

使用:


1、获取Session对象

HttpSession session = request.getSession();

2、Session对象功能:


void setAttribute(String name,Object o):存储数据到session域中

Object getAttribute(String name):根据key,获取值

void removeAttribute(String name):根据key,删除该键值对


代码示例:


ServletDemo1:

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
@WebServlet("/demo1")
public class ServletDemo1 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //存储到Session中
        //1.获取Session对象
        HttpSession session = request.getSession();
        //2.存储数据
        session.setAttribute("username","zs");
    }
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);
    }
}

ServletDemo2:

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
@WebServlet("/demo2")
public class ServletDemo2 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获取数据,从session中
        //1.获取Session对象
        HttpSession session = request.getSession();
        //2.获取数据
        Object username = session.getAttribute("username");
        System.out.println(username);
    }
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);
    }
}

访问demo1及demo2时控制台输出:

909b6a3e6cff49f790a080effe8754ca.png

二、Session原理

Session是基于Cookie实现的


8ac878d8094741ef9b0d3633f28cd778.png

关闭浏览器后重新访问demo1的浏览器开发者工具显示:

713340ceb9c04fe4bdfffa7d76b17ede.png

重新访问demo2的浏览器开发者工具显示:

7935426aab914e3f89f91cb6e72fffbc.png

三、Session使用细节

0f7ab606fb1b4d51a0ffe483defc4918.png

Session钝化、活化:


钝化:在服务器正常关闭后,Tomcat会自动将Session数据写入硬盘的文件中

活化:再次启动服务器后,从文件中加载数据到Session中


Session销毁:


默认情况下,无操作,30分钟自动销毁

<session=config>
    <session-timeout>30</session-timeout>
</session-config>

调用Session对象的invalidate()方法

目录
相关文章
|
8月前
|
存储 编解码 开发者
Cookie原理及使用细节
Cookie原理及使用细节
97 0
|
8月前
|
Java 数据库
线程池的原理和基本使用~
线程池的原理和基本使用~
|
存储 小程序 NoSQL
laravel5.8(九)session基本使用
Session这个玩意还是挺重要的。 Laravel对于session的支持还是很完全的。 一:文件位置 Session 配置文件位于 config/session.php。 默认情况下,Laravel 使用的 Session 驱动为 file 驱动,这对许多应用而言是没有什么问题的。 在生产环境中,你可能考虑使用 memcached 或者 redis 驱动以便获取更佳的 Session 性能,尤其是线上同一个应用部署到多台机器的时候,这是最佳实践。 1. 复制代码 Session 驱动用于定义请求的 Session 数据存放在哪里,Laravel 可以处理多种类型的驱动: 1. bash
79 0
|
存储 应用服务中间件 API
Session使用和原理分析图与实现原理
Session使用和原理分析图与实现原理
203 0
|
存储
Servlet Session基本概念和使用方法
Session是Web开发中的一种机制,用于在服务器端跟踪和管理用户的状态信息。它允许服务器在用户访问网站期间存储和检索与特定用户相关的数据。 当用户访问服务器时,服务器会为每个用户创建一个唯一的会话,并为该会话分配一个唯一的会话标识符(Session ID)。这个会话标识符通常通过Cookie在客户端保存,但也可以通过URL参数或其他方式传递。通过会话标识符,服务器能够识别特定用户的请求,并在会话中存储和检索数据。 通过使用Session,服务器可以在用户的整个访问过程中保持用户状态,并且可以在不同的页面和请求之间共享数据。这对于实现用户认证、数据共享、购物车管理等功能非常有用。 需要注意的
169 0
对于async和await的使用方式、作用效果不怎么理解 ?没关系,初步看这篇就够了
对于async和await的使用方式、作用效果不怎么理解 ?没关系,初步看这篇就够了
|
数据挖掘 Perl
Mummer 用法简析
Mummer 用法简析
154 0
|
Web App开发 存储 移动开发
​Cookie 从入门到进阶:一文彻底弄懂其原理以及应用
​Cookie 从入门到进阶:一文彻底弄懂其原理以及应用
2285 1
​Cookie 从入门到进阶:一文彻底弄懂其原理以及应用
Yii2的文档怎么写?具体步骤是怎样的?底层原理是什么?
Yii2的文档怎么写?具体步骤是怎样的?底层原理是什么?
131 0
|
缓存 前端开发 PHP
Yii2.0框架一共有哪些配置参数?底层原理是什么?
Yii2.0框架一共有哪些配置参数?底层原理是什么?
116 0