session(会话技术)

本文讲解了浏览器端session的工作原理,如何通过JSESSIONID cookie保存和共享数据,以及作为域对象在服务器端的使用。重点介绍了session的创建、生命周期、作用范围和共享数据的应用实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.概述
在浏览器端保存数据,数据可以被查看、获取,数据安全性较低。重要的数据应
该存放在不容易获取到的位置。服务器是一个良好的选择。数据通过服务器共
享,这门技术就是session会话技术。

2.工作原理
每一个浏览器在访问服务器时,都会创建各自对应的session对象来保存数据。相
互之间不会影响,是因为在session对象身上会包含一个sessionid,可以通过这个id
来区分每一个浏览器对应的session。

a.本质原理:
本质是通过一个名称为JSESSIONID的cookie来进行工作的。这个cookie会保存在
浏览器中使用。

b.session的特点:
session是一门服务器的技术,将数据保存的服务器端。保存安全性要求较高的
数据。且存储时间较短的数据。

c.创建session对象
request.getSession();//如果服务器中有session对象,则取出使用,如果没有session
对象则创建一个新的session对象使用。
request.getSession(true);//如果服务器中有session对象,则取出使用,如果没有
session对象则创建一个新的session对象使用。
request.getSession(false);//如果服务器中没有session对象,则返回null,如果有
session对想则取出使用。(判断session是否存在时使用)

3.作为域对象使用
域对象:如果一个对象身上有一个可以被看见的范围,在这个范围内利用对象身
上的map实现数据的共享,这个对象就可以称之为域对象。

a.操作api:
在这里插入图片描述
b.生命周期:
request.getSession()方法调用的时候session对象产生。
1)意外身亡:在服务器意外关闭的情况下,session对象会被销毁。在服务器正常
关闭的情况下,如果session对象未被释放,则其中的内容会序列化到磁盘上,
这个过程,称之为钝化。当服务器再次启动的时候,会重新读取磁盘上这个文
件,这个过程称之为活化。
2)自杀:主动session.invalidate()方法会立刻释放当前session对象。
3)超时死亡:在[tomcat]/conf/web.xml中有session默认的最大生命时长配置
标签,默认值为30分钟。超过30分钟,则当前session会被释
放。

c.作用范围:
整个会话范围。

d.主要功能:
在整个会话范围内共享数据

e.代码实现:
1)SessionDemo1.java

package cn.tedu.session;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
//session共享数据--作为域对象使用
public class SessionDemo1 extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//1.获取session对象
		HttpSession session = request.getSession();
		//2.作为域对象使用--设置域属性
		session.setAttribute("name", "张三丰");
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}
}

2)SessionDemo2.java

package cn.tedu.session;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class SessionDemo2 extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//1.获取session对象
		HttpSession session = request.getSession(true);
		//2.获取域属性
		String name = (String) session.getAttribute("name");
		System.out.println("name:"+name);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值