JavaWeb之Session的简单使用!!!

session使用

1.服务器端会话跟踪技术:将数据保存在服务器端

底层基于cookie实现封装的

2.常用的API:

2.1void session.setAttribute(k,v) session存入值 key=name,value 'yushengjun'

java 复制代码
/*
 * Copyright (c) 2020, 2023,  All rights reserved.
 *
 */
package cn.sessionTest;

import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.*;

import java.io.IOException;
import java.io.PrintWriter;

/**
 * <p>Project: scl-cookie - GetSessionA</p>
 * <p>Powered by scl On 2023-09-04 20:08:20</p>
 * <p>描述:<p>
 *
 * @author 孙臣龙 [1846080280@qq.com]
 * @version 1.0
 * @since 17
 */
@WebServlet("/getSessionA")
public class GetSessionA extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        HttpSession session = req.getSession();
        System.out.println(session.getId());
        session.setAttribute("name","scl");
        Cookie c = new Cookie("JSESSIONID",session.getId());
        c.setMaxAge(60*60); //1个小时有效期
        resp.addCookie(c);
        PrintWriter writer = resp.getWriter();
        writer.println("ok");
        writer.close();
    }
}

2.2Object session.getAttribute(k) 获取到session中的值

java 复制代码
/*
 * Copyright (c) 2020, 2023,  All rights reserved.
 *
 */
package cn.sessionTest;

import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.*;

import java.io.IOException;
import java.io.PrintWriter;

/**
 * <p>Project: scl-cookie - GetSessionB</p>
 * <p>Powered by scl On 2023-09-04 20:11:25</p>
 * <p>描述:<p>
 *
 * @author 孙臣龙 [1846080280@qq.com]
 * @version 1.0
 * @since 17
 */
@WebServlet("/getSessionB")
public class GetSessionB extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        HttpSession session = req.getSession();
        System.out.println(session.getId());
        String name =(String) session.getAttribute("name");
        PrintWriter writer = resp.getWriter();
        writer.println("sessionValue:"+name);
        writer.close();


    }
}

2.3void removeAttribute(k) 删除我们的session

session原理

1.当我们客户端发送请求达到服务器端时创建session,会得到一个sessionid,在将该

sessionid 响应在响应头<sessionid >

2.客户端(浏览器)接受响应头中的sessionid ,会将该sessionid的值 存放在浏览器中。

session本质上就是基于cookie实现封装的。

3.使用同一个浏览器发送请求时,访问通一个服务器端,会在请求头中设定该sessionid 的值,服务器端就会从请求头中获取到该sessionid 查找对应session。

session 数据存放在服务器端 cookie将数据存放在本地。

session细节

1.当客户端关闭后,服务器不关闭的话,获取到的session是否是同一个。因为客户端关闭后,cookie对象被销毁,客户端请求服务器会创建新的session。如果需要相同,可以设置cookie的最大存活时间,让cookie持久化保存两次获取Session是否为同一个

2.在默认情况下,不是同一个。如果需要两个Session相同,则可以创建一个Cookie对象,key为:JSESSIONID,设置一下最大存活时间,让Cookie持久化保存Session的ID,就可以实现客户端关闭,两次获取Session就是同一个。

java 复制代码
Cookie c = new Cookie("JSESSIONID",session.getId());
	    c.setMaxAge(60*60); //1个小时有效期
	    response.addCookie(c);

session与cookie区别

1.session用于存储一次会话的多次请求的数据,存在服务器端;

2.session可以存储任意类型,任意大小的数据。

session与Cookie的区别:

1.session存储数据在服务器端,Cookie在客户端;

2.session没有数据大小限制,Cookie有数据大小限制;

3.session数据安全,Cookie相对于不安全。

相关推荐
moshuying19 分钟前
扩散模型开始写代码、开网页了:350 亿参数,速度比 Jev 快一倍
前端·算法
qq_4017004135 分钟前
100 个 IoT 小项目,给 ESP32 入门补上实操
前端·网络·stm32
liyi_hz200837 分钟前
O2OA(翱途) V10.1 即将发布|功能再升级,安全再加固,协同更高效!
java·javascript·windows·开源软件
骑着蜗牛撵大象32740 分钟前
AI Agent 工程化开发实战(三):用 StateGraph 给智能体搭一条可回放的状态流水线
java·开发语言·jvm·ai·状态管理·langgraph·stategraph
输出输入1 小时前
学习前端主流书单推荐
前端
anyup1 小时前
uView Pro X 1.0.0 发布:全面支持 uni-app x 蒸汽模式,80+ 组件
前端·uni-app·ai编程
Brilliantwxx1 小时前
【Linux】 文件访问与路径解析:目录、文件名、dentry、路径缓冲与 dcache 全解析
linux·运维·服务器·开发语言·spring
apollo_qwe1 小时前
大模型 API 接通了,AI 聊天页面为什么还是不好用?
前端·vue.js·人工智能
爱勇宝1 小时前
你可能成不了技术大佬,然后呢?
前端·后端·程序员