当前位置: 首页 > news >正文

HttpSession的关键属性和方法

1.当一个用户向服务器发送第一个请求时,服务器为其建立一个session,并为此session创建一个标识号;
2.这个用户随后的所有请求都应包括这个标识号。服务器会校对这个标识号以判断请求属于哪个session。
这种机制不使用IP作为标识,是因为很多机器是通过代理服务器方式上网,没法区分每一台机器。
对于session标识号(sessionID),有两种方式实现:cookies和URL重写。

HttpSession的使用
我们来看看在API中对session是如何定义和操作的。
当需要为用户端建立一个session时,servlet容器就创建了一个HttpSession对象。其中存储了和本session相关的信息。所以,在一个servlet中有多少个不同用户连接,就会有多少个HttpSession对象。
使用的机理是:
1.从请求中提取HttpSession对象;
2.增加或删除HttpSession中的属性;
3.根据需要关闭HttpSession或使其失效。

在请求中有两个重载的方法用来获取HttpSession对象。
HttpSession getSession(boolean create)/getSession();作用是提取HttpSession对象,如果没有自动创建。

获取到HttpSession对象后,我们就需要使用HttpSession的某些方法去设置和更改某些参数了。如:
void setAttribute(String name, Object value);
Object getAttribute(String name);
void removeAttribute(String name);

在javax.servlet.http包里一共定义了四个session监听器接口和与之关联的两个session事件。分别是:
HttpSessionAttributeListener and HttpSessionBindingEvent;
HttpSessionBindingListener and HttpSessionBindingEvent;
HttpSessionListener and HttpSessionEvent;
HttpSessionActivationListener and HttpSessionEvent.


HttpSessionAttributeListener
当session中的属性被添加,更改,删除时得到通知。这个接口上节讲过,主要看其它三个。

HttpSessionBindingListener
当一个实现了HttpSessionBindingListener的类被加入到HttpSession中(或从中移出)时,会产生HttpBindingEvent事件,而这些事件会被它本身接收到。
本接口定义了两个方法:
void valueBound(HttpSessionBindingEvent e);
void valueUnbound(HttpSessionBindingEvent e);
当多个实现了HttpSessionBindingListener的类被加入到HttpSession中时,各类的方法只对本类感兴趣,不会去理会其它类的加入。

转载于:https://www.cnblogs.com/TangGe520/p/8728610.html

相关文章:

  • GO語言基礎教程:數據類型,變量,常量
  • 写给ITpro同路人的十条建议
  • 在windows中安装Oracle 11g R2 数据库
  • Batch containing 11 record(s) expired due to timeout while requesting metadata
  • Drawable与Bitmap(转)
  • 依旧
  • SpringBoot Druid整合,SpringBoot 集成Druid
  • Exchange 2013 DAG报错“The fully qualified domain name for node “DAG” could notbefound”解决方法...
  • 20165211 2017-2018-2 《Java程序设计》第6周学习总结
  • Cocos2d-JS: 2.编译到安卓和iOS
  • CentOS程序包管理、下
  • Linux-RedHat 9.0 安装-总结
  • 用户登陆
  • 【OCM】Exam Souvenir 20140825
  • ThinkPHP5下自己写日志
  • Angular 响应式表单之下拉框
  • Hibernate最全面试题
  • If…else
  • Koa2 之文件上传下载
  • laravel 用artisan创建自己的模板
  • Odoo domain写法及运用
  • Python 基础起步 (十) 什么叫函数?
  • Rancher-k8s加速安装文档
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • springMvc学习笔记(2)
  • 从输入URL到页面加载发生了什么
  • 搞机器学习要哪些技能
  • 计算机在识别图像时“看到”了什么?
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • $.proxy和$.extend
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (27)4.8 习题课
  • (附源码)ssm高校志愿者服务系统 毕业设计 011648
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (四)鸿鹄云架构一服务注册中心
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .NET CF命令行调试器MDbg入门(三) 进程控制
  • .net反混淆脱壳工具de4dot的使用
  • .NET是什么
  • .NET业务框架的构建
  • .NET中GET与SET的用法
  • ::
  • ?.的用法
  • @modelattribute注解用postman测试怎么传参_接口测试之问题挖掘
  • [ C++ ] STL_list 使用及其模拟实现
  • [android] 天气app布局练习
  • [BIZ] - 1.金融交易系统特点
  • [EFI]Dell Inspiron 15 5567 电脑 Hackintosh 黑苹果efi引导文件
  • [flume$2]记录一个写自定义Flume拦截器遇到的错误
  • [HackMyVM]靶场Crossbow
  • [JavaScript]_[初级]_[关于forof或者for...of循环语句的用法]