关于webx3的session
webx3中实现了一个session框架,可以通过webx.xml中的设置将session保存在不同的地方,常用的有服务器内存和cookie;还可以将session的不同部分分别保存到不同的地方。
session框架
session ID是唯一标示,一般将其保存在cookie中,这样相同cookie值的请求都看作是同一个session的请求。
session的生命周期:第一个请求时创建;在访问期间可以不断地更新;超过配置的最大不活动时间就会结束,还可以通过调用session.invalidate()方法,直接清除session的所有内容;
Session Store是session框架中最核心的部分,定义了session保存的位置,可以设置多个store,这样就可以将session不同的部分保存在不同的地方。
在session框架中,有一个重要的特殊对象,用来保存session生命期的状态。这个对象叫作session model。
Session Model是用来记录当前session的生命期数据的,例如:session的创建时间、最近更新时间等。
SessionModelEncoder
默认情况下,SessionModel对象将被转换成一个JSON字符串,然后这个字符串将被保存在某个session store中;读取时需要解码成SessionModel对象。
默认实现为:
<session-model-encoders>
<model-encoders:default-session-model-encoder />
</session-model-encoders>
Session Interceptor拦截器的作用是拦截特定的事件,甚至干预该事件的执行结果。
Cookie Store
Cookie Store的作用,是将session对象保存在客户端cookie中。Cookie Store减轻了服务器维护session数据的压力,从而提高了应用的扩展性和可用性。
但是读写cookie比较麻烦,还要在代码中设置很多参数:domain、path、httpOnly...等,所以通过操作HttpSession,session框架就帮我们读写cookie了(那些参数在配置文件里配置就ok)。webx主张把一切对cookie的读写,都转换成对session的读写。
Session Encoders
Session里保存的是Java对象,而cookie中只能保存字符串。如何把Java对象转换成合法的cookie字符串(或者将字符串恢复成对象)呢?这就是Session Encoder所要完成的任务。详细见下面。
Cookie Store需要依赖其它两个Request Contexts: <buffered>(将所有的输出到response.getWriter()或getOutputStream()的内容缓存在内存里,直到最后一刻才真正
输出到浏览器) 和 <lazy-commit>(拦截了response对象中引起提交的方法,将它们延迟到最后才执行。)
Cookie Store分为多值和单值;
- 多值Cookie Store是在一组cookie(如tmp0, tmp1, ...)中保存一组attributes的名称和对象。它所创建的cookie值,只有session框架自己才能解读,如<key,value>的形式。
- 单值cookie store就是在一个cookie中仅保存一个值或对象,如<object>。
Session Encoders和Session Value Encoder
这两个cookie store的结构是不一样的。因此解码的方法也不一样。单值的cookieStore使用Session Value Encoder解码;多值的cookieStore使用Session Encoder。
Session Encoders
Session Encoder需要转换一组session attributes的key-values。Session框架提供了一种encoder的实现,编码的基本过程为:序列化、加密(可选)、压缩、Base64编码、URL encoding编码。
保存session数据时,session框架将使用第一个encoder来将对象转换成cookie可接受的字符串;
读取session数据时,session框架将依次尝试所有的encoders,直到解码成功为止。
默认实现为:
<session-stores:encoders>
<session-encoders:serialization-encoder />
</session-stores:encoders>
Session Value Encoder
session Value Encoder只转换sessionattribute的值。
和SessionModelEncoder以及SessionEncoder类似,session框架也支持多个session valueencoders同时存在。
- 保存session数据时,session框架将使用第一个encoder来将对象转换成cookie可接受的字符串;
- 读取session数据时,session框架将依次尝试所有的encoders,直到解码成功为止。
这种编码、解码方案可让使用不同session value encoders的系统之间共享cookie数据,也有利于平滑迁移系统。
目前有两种基本的session value encoders实现。<simple-value-encoder>和<mappedvalues-encoder>
Simple Memory Store
SimpleMemoryStore是最简单的session store。它将所有的session对象都保存在内存里面。这种store不支持多台机器的session同步,而且也不关心内存是否被用尽。因此这种简单的store一般只应使用于测试环境。
<stores>
<session-stores:simple-memory-store id="simple" />
</stores>
相关推荐
在Webx框架中,主要由以下几个关键组件构成: 1. **控制器(Controller)**:控制器是处理HTTP请求的主要组件,它接收来自用户的请求,根据请求内容调用相应的业务逻辑,并将结果返回给用户。Webx中的控制器通常由...
在Webx框架的总体介绍中,首先需要理解的是框架的本质,即它所承担的角色和它在应用架构中的位置。Webx框架设计理念强调基础框架的构建,以及通过层次化的设计思路来简化应用开发。Webx的层次结构清晰,可以分成三个...
- **SpringExt**:SpringExt是Webx3中一个重要的组成部分,主要用于简化Spring框架的配置过程。它引入了XML Schema的概念,通过扩展点(Configuration Point)和捐献(Contribution)机制实现了对Spring配置文件的自动化...
Webx框架的基础设施服务部分主要涉及ResourceLoading服务指南,涵盖了资源的概念、表示、访问、遍历以及如何在Spring框架中利用ResourceLoader机制来装载资源。该部分还包括了SpringResourceLoader的缺点以及如何...
### Webx3 PDF(阿里巴巴前端Web框架):深入解析与技术要点 #### 引言 Webx是一款由阿里巴巴推出的前端Web框架,旨在提供一个高效、灵活且可扩展的基础架构来支持大规模Web应用的开发。本文章将从Webx框架的核心...
该文档为官方webx框架文档,对webx进行了全面的讲解,非常实用,并附学习的Demo 为什么要用Webx而不是其它的开源框架? 现在有很多Java的Web框架可供选择,并且它们也都是免费的。例如: • Struts • Webwork • ...
本知识点将详细介绍Webx框架的核心理念、架构层次、使用优势以及在实际开发中的应用方法。 Webx框架的历史可以追溯到2010年,当时设计者MichaelZhou出版了《Webx框架指南》,详细介绍了Webx框架的设计初衷和使用...
### WEBX3.0框架指南知识点汇总 #### 引言 **WEBX3.0框架**是一款基于Java Servlet API的通用Web开发框架,在阿里巴巴集团内部得到了广泛应用。此框架旨在简化Web应用的开发与维护过程,并提供了强大的功能支持,...
在讨论Webx框架之前,先来看看Webx的核心特点以及为何在众多开源框架中选择Webx。Webx历史的探讨为我们提供了框架的背景,从其起源到它演变成一个成熟的框架的过程。提到使用Webx而不是其他框架的理由,关键点在于...
**WebxTurbine**是Webx框架中的另一个重要组件,专注于页面的处理和渲染。 ##### **4.1 设计理念** - **页面驱动**:强调页面是应用程序的核心,所有的交互都围绕页面展开。 - **约定胜于配置**:通过预定义的约定...
3. **会话管理(Session Management)**:WebX提供了强大的会话管理功能,可以跨页面跟踪用户状态,确保安全性和一致性。 4. **权限控制(Access Control)**:WebX支持细粒度的权限控制,允许开发者定义用户角色和...
文档可能包含了一个关于Web应用框架WebX如何使用Session和Cookie的示例。WebX是一个基于Java的开源MVC框架,它提供了内置的Session管理和Cookie操作支持。开发者可以通过WebX提供的API方便地创建、读取、更新和删除...
随着技术的发展,2002年进入了中世纪阶段,阿里巴巴引入了EJB(Enterprise JavaBeans)服务,包括SLSB(Stateless Session Beans)和CMP(Container-Managed Persistence)。同时,Web服务器升级为Weblogic,Web层...
- **架构优化**:从WebLogic切换到Jboss,支持数据库分库,引入Spring框架代替EJB,并重构了Session框架。 - **新增组件**:TBStroe作为缓存框架,淘宝自建的CDN提高静态资源访问速度。 - **关键改进**:通过Spring...
“中世纪”时期,阿里开始采用WebX模板技术和EJB(SLSB、CMP、DAO等),使用Weblogic作为EJB服务器,Apache作为Web服务器。这一阶段引入了Façade和Delegate模式来组织业务逻辑,但EJB的复杂性和重量级特性限制了...
- **2005-2007年**:去EJB重构,使用Spring+iBatis+WebX框架,以及AntX等工具,底层架构涉及iSearch、消息队列+企业服务总线(MQ+ESB)、数据挖掘和CMS。 - **2008-2009年**:针对海量数据处理,引入Memcached集群、...
- **成熟阶段**(2007.12-至今):随着业务量的持续增长,淘宝在架构层面实现了更多的技术创新,包括应用透明伸缩、Session框架、高性能服务框架HSF、消息系统Notify等。 - **特点**:高度可扩展、高性能的服务框架...
- **中世纪到工业革命**:采用Spring框架和分布式缓存,优化了架构的可扩展性和性能,同时减轻了对数据库的压力。 4. **设计理念** - **无状态Web应用**:通过cookie实现session,提高系统的横向扩展性。 - **...