会话跟踪技术:会话Cookie,URL重写和HttpSession

从零开始之驱动发开、linux驱动(七、字符驱动之led最终版) 我们上一接用的gpiolib非常杂乱,使用了两种 1.各硬件厂商实现的,如s3c_gpio_cfgpin(S5PV210_GPJ0(5), S3C_GPIO_SFN(1)) 2.系统公共的,如gpio_set_value(S5PV210_GPJ0(4),val) 其实公共的也是对各硬件厂商的封装,用那个都可以,个人建议用系统公共的,应为这样换芯片厂商,不影响任何使用。   2.错误处理基... 阅读详情
 
一,会话跟踪(session tracking)技术
会话是客户端发送请求,服务器返回响应的连接时间段。
HTTP是无状态协议:每次都是单独连接,不能维持客户的上下文信息。
会话跟踪技术是用于维持客户端和服务器端通信信息的技术。

三种典型客户端会话跟踪解决方案:
  1,Cookie;
  2,URL重写;
  3,隐藏表单域;

二,会话Cookie
用于会话跟踪的Cookie叫做会话Cookie。Servlet规范中会话跟踪的cookie名字必须是JSESSIONID,保存在浏览器的内存中。区别于保存在外部存储设备的cookie。
对于存储在内存中的cookie,是不能被不同的浏览器进程共享,共享只能发生在同一个浏览器进程的不同窗口(对个窗口共享一个进程)中。对于存储在外部设备的cookie,可以多浏览器共享。


三,url重写
在浏览器不支持或禁用cookie的情况下,使用url重写代替cookie来跟踪用户会话。
每个页面都必须使用servlet或jsp动态生成(动态页面)。因为附加在URL上的sessionID是动态产生,所以对于静态页面的跳转,URL重写机制无能为力。
即使使用动态页面,如果用户离开了会话并且通过书签或链接再次回来,会话信息也会丢失,因为存储下来的链接含有错误的标识信息。

必须将所有发送到客户端的url进行编码,调用HttpServletResponse接口中的encodeURL()方法和 encodeRedirectURL()方法来实现。在调用sendRedirect()方法之前使用encodeRedirectURL()方法.

四,隐藏表单域
只能用于特定操作中。仅当每个页面都由表单提交而动态生成的时候,才可以使用隐藏表单域,用来存储相关会话信息。

五,servlet中的会话跟踪
javax.servlet.http.HttpSession接口是servlet提供会话跟踪解决方案。
HttpSession对象存放在服务器端,只是对cookie和url重写技术的封装应用,所以要求服务器支持cookie,可以全局切换到url重写。

1,访问与当前请求相关联的会话对象:getSession(boolean value)方法

  在会话过程中,web容器负责为客户端维护一个唯一的HttpSession对象。
  对于新会话,web容器创建使用实现了HttpSession接口的HttpSession对象封装当前请求会话的信息(散列表的方式存储)。
 
  使用HttpServletRequest的getSession()方法访问HttpSession对象。
   在后台,系统从cookie或URL重写附加的数据中提取出用户ID。以ID为key,遍历之前创建的HttpSession对象内建的散列表。
   如果找不到匹配的会话ID,系统重新创建一个新的会话。默认情况下(不禁用Cookie)还会创建一个名为JSESSIONID,值为唯一标识用户表示会话ID的输出cookie。 
  因为调用getSession()方法会影响到后面的响应,所以只能在发送任何文档内容到客户端之前调用getSession()方法。

  区别:getSession(boolean value)方法:如果系统没有找到与请求关联的会话ID,true表示返回新会话。false表示方法返回null。

2,访问和设置与会话相关联信息,维护会话的状态:HttpSession的getAttribute()方法和setAttribute()方法

  散列表:HttpSession对象内建数据结构,用于存储 当前请求会话的数据(会话的属性)。可以存储任意数量的key-value对。
  使用HttpSession的getAttribute()方法和setAttribute(String key,Object value)方法读取和设置当前请求会话数据(即对散列表的操作),维护会话的状态。
  setAttribute方法会替换任何之前的属性。如果不想被替换,则需要在设置之前使用removeArrtibute(String key)方法移除该属性。
 
  setAttribute方法会触发所有实现了HttpSessionBindingListener接口的valueBound方法,做一些初始化状态的操作。
  removeArrtibute方法会触发所有实现了HttpSessionBindingListener接口的valueUnbound方法,做一些消除状态的操作。

  对于分布式WEB应用程序,将web应用程序标记为可分布式执行,系统需要能够将会话对象在机器之间传递,这时需要将会话的属性实现Serializable接口。

3,废弃会话数据
  只移除自己编写的的servlet创建的数据:removeArrtibute(String key)方法
  (web应用程序中删除)删除整个会话:invalidate()方法,可以用该方法注销用户。
  (Web服务器中删除)将用户从系统中注销并且删除所有与该会话关联的会话:logout()方法。一定要与其他web应用程序协调loggout命令的使用。
 
4,会话超时时间间隔
  getMaxInactiveInterval()方法和setMaxInactiveInterval()方法读取和设置在没有访问的情况下,会话保存的最长时间。秒为单位。负数表示会话从不超时。超时由服务器来维护。

5,会话最后次被客户端访问的时间:getLastAccessedTime()方法
  可以用来确定客户端在二次请求之间会话的非活动时间。

6,获取会话被创建的时间:getCreationTime()方法 返回long类型数据

7,返回分配给session的唯一标识ID,为字符串。getId()方法

六,浏览器会话与服务器会话
浏览器会话
  默认情况下,会话跟踪基于存储在浏览器内存中的cookie,区别于存储在外围存储设备上的cookie。
  需要servlet显示的读取JSESSION cookie,设置最大时效和路径并添加到客户端,否则退出浏览器就会中断会话。
服务器会话
  服务器需要将会话保存在内存中,在会话处于非活动状态超过设定的间隔(会话超时)就移除会话。

七,对绑定到session中的对象(属性)初始化和消除状态。HttpSessionBindingListener监听器接口和HttpSessionBindingEvent事件类。

Servlet容器通过实现HttpSessionBindingListener监听器接口的监听器来监听HttpSessionBindingEvent事件。

HttpSessionBindingListener监听器接口方法:
1,valueBound(HttpSessionBindingEvent event):对象被绑定到session中时该方法通知对象。做初始化操作。
2,valueUnbound(HttpSessionBindingEvent event): 对象被移除出session时该方法通知对象。做消除状态操作。

HttpSessionBindingEvent事件方法:
1,getName():获取触发事件的属性的名字。
2,getValue():获取触发事件的属性的值。
3,getSession():返回Session对象。


八,在 Java Servlet API中有关的监听器接口。

与Session相关的监听器接口
javax.servlet.http.HttpSessionActivationListener:如果绑定到Session中,当Session被钝化或激活时,Servlet容器将通知该对象。
javax.servlet.http.HttpSessionAttributeListener:如果想要在Session中的属性列表发生改变时得到通知,可以实现这个接口。
javax.servlet.http.HttpSessionListener:如果需要在Session创建后或者Session无效前得到通知,可以实现这个接口,实现该接口的类必须在web应用程序的部署描述符中进行配置。

与Servlet上下文有关的监听器接口:
javax.servlet.ServletContextAttributeListener:在Servlet上下文中的属性列表发生改变时得到通知,可以实现这个接口,实现该接口的类必须在web应用程序的部署描述符中进行配置。
javax.servlet.ServletContextListener:如果需要在Servlet上下文对象初始化时或被销毁的时候得到通知,可以实现这个接口,实现该接口的类必须在web应用程序的部署描述符中进行配置。

与请求相关的监听器接口:servlet2.4规范定义
javax.servlet.ServletRequestAttributeListener:Servlet请求对象中的属性发生改变时得到通知。
javax.servlet.ServletRequestListener:请求对象初始化或者被销毁时得到通知。
用 CL_ABAP_ZIP 在 ABAP 里打包任意文件:从前端多选到 ZIP 交付的一条龙实践 本文介绍了在SAP ABAP中实现文件打包交付的完整解决方案。文章首先区分了ZIP和GZIP的不同用途:ZIP用于多文件归档,GZIP用于单数据流压缩。核心流程包括四个步骤:文件选择、二进制上传、内存打包和ZIP输出,并提供了关键对象与函数的速查表。针对实际项目中常见的乱码、大文件处理等问题给出了解决方案,最后展示了一个完整的可运行示例代码,涵盖了从文件选择到下载的全流程实现。该方案适用于财务、质量、运维等多种业务场景,能够有效解决多文件交付的最后一公里问题。 阅读详情

相关推荐

FreeRTOS:卡在configASSERT( ( pxQueue ) )问题的解决

FreeRTOS卡在configASSERT( ( pxQueue ) )问题的解决

qq_42007164的博客 9564

Servlet

Servlet        一个可以处理HTTP请求的标准Java类,增强服务器端功能. 1、  生命周期 a)        init():服务器初始化Servlet,只在第一次请求时被初始化一次,只存在一个实例,所以不建议在Servlet中设置成员变量; b)       service():Servlet对象调用该方法响应客户端的请求。在该过程中会通过判断用户的请求方式来具体应用d

app19830306的专栏 508

多租户Saas架构设计分析(基础篇)

本篇先给大家介绍一下相关的概念和常见问题。 实践篇链接:https://blog.youkuaiyun.com/haponchang/article/details/104246317 SaaS简介 SaaS是Software-as-a-Service(软件即服务)的简称,“软件即服务”?是不是有点拗口?其实你就理解成为“按需租用别人提供的软件服务”就可以了,它是一种软件交付模式。...

haponchang的博客 1万+

Servlet中的会话跟踪

转自:http://blog.sina.com.cn/s/blog_4cc16fc50100bx9p.html为什么需要会话跟踪对于同一客户的多个请求,服务器不自动维护客户的上下文信息,会把多个请求当作是孤立的。Servlet会话跟踪步骤0.Servlet会话跟踪使用cookie

herosen的专栏 1137

centos7下安装gcc-10.3.0

生成多个系统版本的代码,如果你的操作系统是32位,默认就已经设置为 disable,这时gcc仅能生成32位的可执行程序;这里只开启了c,c++ 和fortran,因为支持的语言越多,就需要安装越多的相应静态与动态库,还有五花八门的依赖库,这会让管理变得困难,体积也会变得庞大。启用posix标准的线程支持,这个设置取决于宿主或目标操作系统的类型,其它可用值有:aix,dec,solaris,win32等,如果你是其它的类UNIX系统,就需要设置相应的值。指定安装路径,这里没有指定,就直接放到文件夹里就好。

lxystar2003的博客 1189

标准工时精益化管理:理论、方法与技巧

ECRS工时分析软件是一款综合性软件,包含了IE软件、IE改善软件、工业工程软件、作业改善/业务改善软件、动作分析软件、作业分析软件、ECRS分析法、ECRS改善手法、时间测量软件、工时测量软件、标准工时计算软件等功能。理论上,标准工时是指在标准的工作环境下,完成一道加工工序所需要花费的人工时间。不同企业、不同工序需要的辅助作业时间和损耗时间各不相同,因此企业需要灵活运用标准工时公式进行计算。总之,标准工时的制定需要综合考虑多种因素,企业可以灵活运用本文介绍的方法和技巧来优化制定流程。

VIOOVI_ECRS的博客 847

如果不确定客户端是否禁用cookie,则可以使用URL重写技术。

URL重写是指服务器程序对接收的URL请求重写写成网站可以处理另一个URL的过程。URL重写技术是实现动态网站会话跟踪的重要保障。在实际应用中,当不能确定客户端浏览器是否支持Cookie的情况下,使用URL重写技术可以对请求的URL地址追加会话标识,从而实现用户的会话跟踪功能。URL重写实现会话跟踪,要保证每个页面都必须使用Servlet或JSP动态页面。因为附加在URL上的sessionID是动态产生的,所以对于静态页面的跳转,URL重写机制无能为力。可以通过HttpServletResponse的enc

pang4793869的博客 450

遥感图像处理实战:DOTA数据集旋转框转YOLO格式全流程解析(附代码)

本文详细解析了将DOTA遥感数据集的旋转框标注转换为YOLO格式的全流程。针对遥感图像中物体朝向任意性的特点,文章重点阐述了将旋转框转换为外接水平框的数学原理与代码实现,并提供了批量转换脚本和可视化验证方法,帮助开发者高效处理数据,为基于YOLO的遥感目标检测项目奠定基础。

weixin_29082143的博客 398

如果不确定客户端是否禁用cookie ,则可以使用URL重写技术

3.如果不确定客户端是否禁用cookie ,则可以使用URL重写技术。

m0_51073424的博客 503

使用 Simulink + Simscape Electrical 实现一个变压器耦合式单相全波整流器的仿真模型

本文介绍了基于Simulink的变压器耦合式单相全波整流器建模与仿真方法。详细说明了从项目创建、模块添加、电路搭建到参数配置的完整建模过程,重点分析了整流器的效率与损耗特性,包括变压器损耗和二极管导通损耗。通过仿真展示了输入输出波形特征,并提出了选用高效元件、优化变压器设计等改进建议。该案例为电力电子系统建模提供了实用参考,有助于深入理解整流电路工作原理和性能优化方法。

amy_mhd的博客 187

数据中台之流程引擎:Activiti工作流引擎详解

一. 简介 BPM: BPM规范及BPM软件 BPMN: Activiti 7 1.工作流俩种方式 1.状态值跟踪法 1.工作流软件 2.工作流引擎对比 1.Activiti 2.JBPM5 3.flowable 4.liteflow 3.步骤 1.部署Activiti 1.流程定义 1.流程定义部署 1.启动流程实例 1.任务查询代办 1.用户办理任务 1.流程结束 二. 核心 Activiti 基础架构.png Activiti 7大接口.png RepositoryService:提供一系列管理流

GIS摆渡人 1688

转:会话跟踪技术:会话Cookie,URL重写和HttpSession

一,会话跟踪(session tracking)技术 会话是客户端发送请求,服务器返回响应的连接时间段。 HTTP是无状态协议:每次都是单独连接,不能维持客户的上下文信息。 会话跟踪技术是用于维持客户端和服务器端通信信息的技术。  三种典型客户端会话跟踪解决方案:  1,Cookie;  2,URL重写;  3,隐藏表单域; 二,会话Cookie 用于会话跟踪的Cookie叫做会话Cookie...

iteye_10512的博客 163

YOLO26涨点改进 | 检测头改进篇 | 利用ASFF改进YOLO26检测头,自适应空间特征融合模块,在所有的目标检测上均有大幅度的涨点效果

本文提出了一种自适应空间特征融合(ASFF)检测头YOLO26,用于解决目标检测中特征金字塔跨尺度特征不一致的问题。ASFF通过学习空间权重图,自适应地融合不同尺度的特征,抑制特征层间的冲突信息。实验表明,该方法在MSCOCO数据集上显著提升了检测精度(45FPS下AP达42.4%),且仅引入极小推理开销。ASFF模块具有可微分性、模型无关性和计算成本低等优势,能够有效改善特征尺度不变性,实现速度与精度的良好平衡。文章详细介绍了ASFF的原理、实现代码及其在YOLO模型中的集成方法。

Ai缝合怪、助力小伙伴高效发论文 553

会话跟踪的多种方法

一,会话跟踪(session tracking)技术  会话是客户端发送请求,服务器返回响应的连接时间段。  HTTP是无状态协议:每次都是单独连接,不能维持客户的上下文信息。  会话跟踪技术是用于维持客户端和服务器端通信信息的技术。    三种典型客户端会话跟踪解决方案:   1,Cookie;   2,URL重写;   3,隐藏表单域; 二,会话Cookie  用于会话

Prince_fmx的博客 1809

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

java 4种跟踪会话技术_java四种会话跟踪技术

? 5.5 本章小结本章主要讲解了Cookie对象和Session对象 的相关知识,其中Cookie是早期的会话跟踪技术,它将信息保存到客户端的浏览器中。 浏览器访问网站时会携带......9.2 实现会话追踪的4种方式 (1)使用持续Cookies(Persisten...在禁用 Cookie 时可以使用 URL 重写技术跟踪会话 D. 隐藏表单域将字...A.sendURL() B.redir...

weixin_35615591的博客 794

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

servlet会话跟踪

  关于servlet会话跟踪,一搜都能搜出很多。我也不免落入俗套,也总结了一把。希望我所总结的知识尽量是知识海洋里的一汪清泉。能帮助到我自己和哪怕一个人,那也是值得的。故事由来:  我们知道,http协议是个无状态的协议,所谓无状态就是指此时刻我们的状态是保持连接,下一刻我们的状态可能就是断开连接,状态是不稳定的,这就导致很多用户在上网时遇到问题,比如购物,我添加几次商品到购物车,如果没有会话跟...

m0_37899388的博客 293

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

实现会话跟踪的技术有哪些

实现会话跟踪的技术有哪些 由于HTTP协议本身是无状态的,服务器为了区分不同的用户,就需要对用户会话进行跟踪,简单的说就是为用户进行登记,为用户分配唯一的ID,下一次用户在请求中包含此ID,服务器据此判断到底是哪一个用户。 ①URL 重写:在URL中添加用户会话的信息作为请求的参数,或者将唯一的会话ID添加到URL结尾以标识一个会话。 ②设置表单隐藏域:将和会话跟踪相关的字段添加...

asdfawegw5646的博客 759

四种会话跟踪技术

会话跟踪技术主要有以下四种:(1)Cookie(2)url重写(3)隐藏表单域(4)Session。

m0_69602951的博客 531

会话http

会话跟踪技术:会话Cookie,URL重写和HttpSession 配置会话HttpSession的超时时间                HttpSessionBindingListener和HttpSessionAttributeListener的区别

lmj1436140682的博客 335

Java EE.Servlet.会话管理

一次会话是从客户打开浏览器开始到关闭浏览器结束。记录会话信息的技术称为会话跟踪。常见的会话跟踪技术有Cookie、URL重写和隐藏表单域。 1、Cookie Cookie是一小块可以嵌入到HTTP请求和响应中的数据。Web服务器将Cookie信息嵌入到响应的Header,而浏览器则在以后的请求中都将携带同样的Cookie。 2、URL重写 URL重写通过在URL...

weixin_30609287的博客 72

cookie和session总结

一、Cookie a. cookie 是解决会话跟踪的一种机制,除了cookie还有Session b. Cookie 实在浏览器访问WEB服务器的某个资源时,由WEB服务器在HTTP响应信息头中附带传送给浏览器的一个小文本文件。 c. 一旦WEB浏览器保存了某个Cookie,那么它在以后每次访问该WEB服务器时,都会在HTTP请求头中将这个Cookie回传给WEB服务器

jav_zhangwei的博客 436

会话管理和使用

一、HTTP协议 为什么要使用会话? 因为HTTP协议是无状态的协议,客户端浏览器发送给服务器的请求,服务器不知道都是谁发送过来的 HTTP是基于请求和响应的模式,不记录状态信息 二、会话 HttpSession接口提供的功能 在需要会话管理的时候: 创建会话对象HttpServletRequest接口的getSession方法 HttpSession getSession();表示如果没有绑定的会话则创建一个会话 HttpSession getSession(boolean f);false表示如果有存在

weixin_48431021的博客 210
上一篇: flex4与Java交互
下一篇: Java IO中字节流和字符流的区别
JavaEE_Flex
博客等级 码龄15年 0粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值