CN102236682A - 维持用户状态信息的方法和装置 - Google Patents
维持用户状态信息的方法和装置 Download PDFInfo
- Publication number
- CN102236682A CN102236682A CN 201010167372 CN201010167372A CN102236682A CN 102236682 A CN102236682 A CN 102236682A CN 201010167372 CN201010167372 CN 201010167372 CN 201010167372 A CN201010167372 A CN 201010167372A CN 102236682 A CN102236682 A CN 102236682A
- Authority
- CN
- China
- Prior art keywords
- context
- affairs scope
- state information
- user state
- affairs
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种维持用户状态信息的方法和装置,属于计算机技术领域。所述方法包括:侦听用户发来的处理页面的请求;查找与所述请求对应的事务范围上下文;根据所述事务范围上下文中的用户状态信息处理所述页面,在处理完成后将所述页面中的用户状态信息更新到所述事务范围上下文中。所述装置包括:检测模块、查找模块和处理模块。本发明利用事务范围上下文存储并更新用户状态信息,实现了网络应用中用户状态信息的维持,对用户状态信息是否为可序列化不做任何限制,极大地提高了应用的灵活性,且保证了页面的响应速度。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种维持用户状态信息的方法和装置。
背景技术
JSF(Java Server Faces)是新一代的应用技术标准,吸收了很多Java Server Pages以及其他的Web应用框架的特性。JSF为Web应用开发定义了一个事件驱动的、基于组件的模型。在JSF Web应用中,特别是在Ajax引入之后,经常会出现跨请求范围的http请求,即一个页面的渲染、展现及响应用户事件可以涉及到多个向服务器发送的http请求,这种情况下需要服务器端能够在多个请求之间维护用户的状态信息,如保存用户的姓名和地址、放入购物车中的商品信息等等。
JSF框架定义了与页面对应的Backing Bean,可以用来存储用户的状态信息,包括以下四种:Application Bean(应用Bean)、Session Bean(会话Bean)、Request Bean(请求Bean)和None Bean。这四种Backing Bean的范围(Scope)各不相同。其中,Application Bean的范围最大,整个网站都可以共享数据;Session Bean在会话范围内共享数据,由会话衍生出的所有页面都可以共享数据,且在会话超时销毁之前,用户状态信息均会保存在服务器端的内存中;Request Bean的范围比Session Bean的范围小,它可以在指定的页面间传递数据,如在当前页面和向前页面之间传递参数。None Bean的范围最小,将数据保存在临时的范围内。
当用户的请求为短时间内的跨范围请求时,如果采用Session Bean则会在会话超时销毁之前一直占用服务器的内存来保存用户的状态信息,造成服务器资源的浪费。为了解决这个问题,现有技术提出了如下两种方案:第一种,在页面中放置一些隐藏的输入控件,将用户的状态信息赋值到这些隐藏输入控件中,每次用户发送http请求时将隐藏输入控件中的状态信息一起提交到服务器端,如果服务器端改变这些状态,则在响应代码中将这些隐藏输入控件中的状态更新以备下次请求时使用。第二种,将用户的状态信息放入到某个JSF组件的某个属性中,JSF框架本身会在每次请求处理过程中还原组件状态,恢复组件保存的状态信息。
但是,第一种方案需要修改服务器端的程序代码,以实现隐藏输入控件的状态更新,比较麻烦,而且还要求用户的状态信息必须是可序列化的,才能将其存储在隐藏输入控件中,另外,在客户端与服务器间频繁地发送用户的状态信息会占用带宽,极大地影响页面的响应速度。第二种方案也要求用户的状态信息必须是可序列化的,才能将其存储在JSF组件中,而且,存储在JSF组件中会加大页面状态的大小,也会影响页面的响应速度。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种维持用户状态信息的方法和装置。所述技术方案如下:
一种维持用户状态信息的方法,所述方法包括:
侦听用户发来的处理页面的请求;
查找与所述请求对应的事务范围上下文;
根据所述事务范围上下文中的用户状态信息处理所述页面,在处理完成后将所述页面中的用户状态信息更新到所述事务范围上下文中。
一种维持用户状态信息的装置,所述装置包括:
检测模块,用于侦听用户发来的处理页面的请求;
查找模块,用于查找与所述检测模块侦听到的所述请求对应的事务范围上下文;
处理模块,用于根据所述查找模块找到的所述事务范围上下文中的用户状态信息处理所述页面,在处理完成后将所述页面中的用户状态信息更新到所述事务范围上下文中。
本发明实施例提供的上述技术方案,利用事务范围上下文存储并更新用户状态信息,根据事务范围上下文中的用户状态信息来处理页面,实现了网络应用中用户状态信息的维持,无需依赖隐藏输入控件或者JSF组件,对用户状态信息是否为可序列化不做任何限制,用户状态信息可以是可序列化的,也可以是不可序列化的,极大地提高了应用的灵活性。而且,该方法无需在客户端与服务器间频繁地发送用户状态信息,保证了页面的响应速度。
附图说明
图1是本发明实施例1提供的维持用户状态信息的方法流程图;
图2是本发明实施例2提供的维持用户状态信息的方法流程图;
图3是本发明实施例3提供的维持用户状态信息的装置结构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
实施例1
参见图1,本实施例提供了一种维持用户状态信息的方法,包括:
101:侦听用户发来的处理页面的请求;
102:查找与该请求对应的事务范围上下文;
103:根据该事务范围上下文中的用户状态信息处理上述页面,在处理完成后将该页面中的用户状态信息更新到该事务范围上下文中。
本实施例提供的上述方法,是由网络侧来执行的,通常为网络侧的服务器执行。用户发送处理页面的请求是指用户从客户端向服务器发送请求。该页面是指网络应用中的页面,如某个网站的网页等等,本发明实施例对此不做具体限定。用户请求对某个页面进行处理,包括多种,例如但不限于:点击一个新的链接请求打开一个新的页面,点击一个提交按钮请求提交用户姓名和地址等信息,点击一个确认按钮请求确认购物车中已保存的购物信息,等等,本发明实施例对此不做具体限定。
本实施例中的事务范围上下文是指Transaction Scope上下文,通常用来存储与事务相关的信息,在本实施例中,还可以用来存储页面中的用户状态信息,并且在处理页面的过程中,如果用户状态信息发生改变,则将改变后的用户状态信息更新到事务范围上下文中,使得事务范围上下文中保存的用户状态信息始终都是最新的用户状态信息。
本实施例中的用户状态信息是指页面中用来描述用户状态的各种信息,通常为多种,包括但不限于:用户的姓名、地址、电话、邮箱、购买的商品等等,本发明实施例对此不做具体限定。
本实施例提供的上述方法,利用事务范围上下文存储并更新用户状态信息,根据事务范围上下文中的用户状态信息来处理页面,实现了网络应用中用户状态信息的维持,无需依赖隐藏输入控件或者JSF组件,对用户状态信息是否为可序列化不做任何限制,用户状态信息可以是可序列化的,也可以是不可序列化的,极大地提高了应用的灵活性。而且,该方法无需在客户端与服务器间频繁地发送用户状态信息,保证了页面的响应速度。另外,本实施例对原有的JSF存活范围进行扩展,提出了一种新的存活范围:事务级别的范围,该存活范围比Session Bean的范围小,比Request Bean的范围大,而且不会像Session范围一样大量占用服务器的内存,可以满足短时间内跨请求范围状态维持的需求,使用这个存活范围来保存用户状态信息,简单方便,实用性强。
实施例2
参见图2,本实施例提供了一种维持用户状态信息的方法,包括:
201:侦听用户发来的处理页面的请求。
具体地,可以采用阶段侦听器来侦听用户是否发来处理页面的请求。本实施例中,通常是用户每次发来页面处理请求时,开始侦听用户的请求,而且是在该请求结束之前一直处于侦听状态,当该请求结束后,结束侦听。本发明实施例中的请求包括跨范围请求。
202:判断是否有与侦听到的请求对应的事务范围上下文,如果有,则执行203,否则,执行205。
判断是否有与侦听到的请求对应的事务范围上下文,可以采用多种方式,本发明实施例对此不做具体限定,例如,可以采用如下方式:
判断侦听到的请求的请求参数中,是否有预先设置的标识;
如果有,则可以根据该标识查找与该标识对应的事务范围上下文,该标识对应的事务范围上下文就是与该请求对应的事务范围上下文;
如果没有,则表明没有与该请求对应的事务范围上下文,则可以创建一个事务范围上下文。
其中,预先设置的标识形式不限,如可以设置一个参数cid等等,本发明实施例对此不做具体限定。
203:查找与该请求对应的事务范围上下文,根据该事务范围上下文中的用户状态信息处理上述页面。
本实施例中的事务范围上下文中存储有用户状态信息,且为与该事务范围上下文对应的请求相关的用户状态信息。
其中,根据该事务范围上下文中的用户状态信息处理上述页面,是指先获取该事务范围上下文中存储的用户状态信息,根据该用户状态信息中各种参数的值来处理用户请求的页面,在该处理过程中用户状态信息可能改变,也可能不改变。例如,先从事务范围上下文中获取到用户购物车中的商品数量为2,在处理当前页面的过程中,用户又选择了一个商品放入购物车中,则可以计算得出当前购物车中的商品数量变化为3。所述处理页面是指与用户请求对应的操作,包括多种,如打开新的页面,接收用户提交的信息并显示给用户,发送一封邮件,删除购物车中已有的一个商品等等,本发明实施例对此不做具体限定。
204:在页面处理完成后,将该页面中的用户状态信息更新到上述事务范围上下文中,并更新该事务范围上下文的最后使用时间,根据当前请求是否结束决定是否继续侦听,如果未结束则可以返回步骤201继续侦听,如果已结束,则退出当前流程。
其中,将该页面中的用户状态信息更新到上述事务范围上下文中,是指用当前页面中的用户状态信息替换该事务范围上下文中已有的用户状态信息,使得该事务范围上下文中保存的用户状态信息为最新的用户状态信息。所述更新该事务范围上下文的最后使用时间,是指将当前时间作为最后使用时间保存到该事务范围上下文中。记录事务范围上下文的最后使用时间,可以用来决定是继续维持该事务范围上下文,还是销毁该事务范围上下文,从而对事务范围上下文进行管理。
205:此时为用户第一次发来页面请求,则为该请求创建一个事务范围上下文,并将创建的事务范围上下文与该请求绑定。
其中,将创建的事务范围上下文与该请求绑定,可以具体包括:
在该请求的请求参数中设置一个标识,关联该标识与创建的事务范围上下文,以绑定创建的事务范围上下文和该请求。其中,将该标识设置在请求参数中,可以保证用户以后的请求都会携带该标识。该标识的具体形式本发明实施例对此不做限定。
进一步地,为了对创建的事务范围上下文进行管理,还可以将创建的事务范围上下文注册到事务上下文管理器中,该事务范围上下文管理器不仅存储有事务范围上下文中的各种信息,包括用户状态信息,同时还存储有与事务范围上下文有关的信息,包括但不限于:事务范围上下文的最后使用时间等等,本发明实施例对此不做具体限定。
206:对用户当前请求的页面进行处理,在处理完成后将该页面中的用户状态信息保存到创建的事务范围上下文中,并记录该事务范围上下文的最后使用时间,根据当前请求是否结束决定是否继续侦听,如果未结束则可以返回步骤201继续侦听,如果已结束,则退出当前流程。
其中,记录该事务范围上下文的最后使用时间是指将当前时间作为最后使用时间保存到该事务范围上下文中。
本实施例提供的上述方法,进一步地,还可以包括:
对事务范围上下文管理器中注册的事务范围上下文进行扫描,如果某个事务范围上下文在事务上下文管理器中的维持时间超出指定的时间时,则在事务上下文管理器中销毁该事务范围上下文。其中,指定的时间可以根据需要预先设置,如15分钟、20分钟等等。判断一个事务范围上下文的维持时间是否超出指定的时间,可以具体如下:
用当前时间减去该事务范围上下文的最后使用时间,如果差值大于指定的时间,则可以销毁该事务服务上下文,不用在事务范围上下文管理器中继续维持该事务范围上下文;如果差值小于或等于指定的时间,则可以在事务范围上下文管理器中继续维持该事务范围上下文。
本实施例提供的上述方法,利用事务范围上下文存储并更新用户状态信息,根据事务范围上下文中的用户状态信息来处理页面,实现了网络应用中用户状态信息的维持,无需依赖隐藏输入控件或者JSF组件,对用户状态信息是否为可序列化不做任何限制,用户状态信息可以是可序列化的,也可以是不可序列化的,极大地提高了应用的灵活性。而且,该方法无需在客户端与服务器间频繁地发送用户状态信息,保证了页面的响应速度。另外,本实施例对原有的JSF存活范围进行扩展,提出了一种新的存活范围:事务级别的范围,该存活范围比Session Bean的范围小,比Request Bean的范围大,而且不会像Session范围一样大量占用服务器的内存,可以满足短时间内跨请求范围状态维持的需求,使用这个存活范围来保存用户状态信息,简单方便,实用性强。
实施例3
参见图3,本实施例提供了一种维持用户状态信息的装置,包括:
检测模块301,用于侦听用户发来的处理页面的请求;
查找模块302,用于查找与检测模块301侦听到的请求对应的事务范围上下文;
处理模块303,用于根据查找模块302找到的事务范围上下文中的用户状态信息处理页面,在处理完成后将页面中的用户状态信息更新到事务范围上下文中。
本实施例中,上述装置还可以包括:
创建模块,用于如果查找模块302未找到与上述请求对应的事务范围上下文,则创建一个事务范围上下文;相应地,处理模块303还用于,将创建模块创建的事务范围上下文与上述请求绑定,并处理该页面,在处理完成后将该页面中的用户状态信息保存在创建的事务范围上下文中。其中,处理模块303可以包括:
绑定单元,用于在检测模块301侦听到的请求的请求参数中设置一个标识,关联该标识与上述创建的事务范围上下文,以绑定该创建的事务范围上下文和上述请求。
本实施例中,进一步地,处理模块303还可以用于,在根据事务范围上下文中的用户状态信息处理页面后,更新该事务范围上下文的最后使用时间。
本实施例中,上述创建模块还可以用于,在创建事务范围上下文后,在事务上下文管理器中注册该创建的事务范围上下文;相应地,上述装置还可以包括:
管理模块,用于当上述创建的事务范围上下文在事务上下文管理器中的维持时间超出指定的时间时,在事务上下文管理器中销毁该事务范围上下文。
本实施例提供的上述装置可以具体为网络侧的服务器,在该装置上可以实施上述方法实施例中描述的方法,具体过程与方法实施例中的过程相同,此处不再赘述。
本实施例提供的上述装置,利用事务范围上下文存储并更新用户状态信息,根据事务范围上下文中的用户状态信息来处理页面,实现了网络应用中用户状态信息的维持,无需依赖隐藏输入控件或者JSF组件,对用户状态信息是否为可序列化不做任何限制,用户状态信息可以是可序列化的,也可以是不可序列化的,极大地提高了应用的灵活性。而且,该装置无需与客户端频繁地传送用户状态信息,保证了页面的响应速度。另外,本实施例对原有的JSF存活范围进行扩展,提出了一种新的存活范围:事务级别的范围,该存活范围比Session Bean的范围小,比Request Bean的范围大,而且不会像Session范围一样大量占用服务器的内存,可以满足短时间内跨请求范围状态维持的需求,使用这个存活范围来保存用户状态信息,简单方便,实用性强。
最后需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(ROM)或随机存储记忆体(RAM)等。
本发明实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。上述提到的存储介质可以是只读存储器,磁盘或光盘等。上述的各装置或系统,可以执行相应方法实施例中的方法。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种维持用户状态信息的方法,其特征在于,所述方法包括:
侦听用户发来的处理页面的请求;
查找与所述请求对应的事务范围上下文;
根据所述事务范围上下文中的用户状态信息处理所述页面,在处理完成后将所述页面中的用户状态信息更新到所述事务范围上下文中。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
如果未找到与所述请求对应的事务范围上下文,则创建一个事务范围上下文;
将所述创建的事务范围上下文与所述请求绑定,并处理所述页面,在处理完成后将所述页面中的用户状态信息保存在所述事务范围上下文中。
3.根据权利要求2所述的方法,其特征在于,将所述创建的事务范围上下文与所述请求绑定,包括:
在所述请求的请求参数中设置一个标识,关联所述标识与所述创建的事务范围上下文,以绑定所述创建的事务范围上下文和所述请求。
4.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
在根据所述事务范围上下文中的用户状态信息处理所述页面后,更新所述事务范围上下文的最后使用时间。
5.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在创建所述事务范围上下文后,在事务上下文管理器中注册所述创建的事务范围上下文;
当所述事务范围上下文在所述事务上下文管理器中的维持时间超出指定的时间时,在所述事务上下文管理器中销毁所述事务范围上下文。
6.一种维持用户状态信息的装置,其特征在于,所述装置包括:
检测模块,用于侦听用户发来的处理页面的请求;
查找模块,用于查找与所述检测模块侦听到的所述请求对应的事务范围上下文;
处理模块,用于根据所述查找模块找到的所述事务范围上下文中的用户状态信息处理所述页面,在处理完成后将所述页面中的用户状态信息更新到所述事务范围上下文中。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
创建模块,用于如果所述查找模块未找到与所述请求对应的事务范围上下文,则创建一个事务范围上下文;
所述处理模块还用于,将所述创建模块创建的事务范围上下文与所述请求绑定,并处理所述页面,在处理完成后将所述页面中的用户状态信息保存在所述事务范围上下文中。
8.根据权利要求7所述的装置,其特征在于,所述处理模块包括:
绑定单元,用于在所述检测模块侦听到的所述请求的请求参数中设置一个标识,关联所述标识与所述创建的事务范围上下文,以绑定所述创建的事务范围上下文和所述请求。
9.根据权利要求6或7所述的装置,其特征在于,所述处理模块还用于,在根据所述事务范围上下文中的用户状态信息处理所述页面后,更新所述事务范围上下文的最后使用时间。
10.根据权利要求7所述的装置,其特征在于,所述创建模块还用于,在创建所述事务范围上下文后,在事务上下文管理器中注册所述创建的事务范围上下文;
所述装置还包括:
管理模块,用于当所述事务范围上下文在所述事务上下文管理器中的维持时间超出指定的时间时,在所述事务上下文管理器中销毁所述事务范围上下文。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010167372 CN102236682A (zh) | 2010-05-06 | 2010-05-06 | 维持用户状态信息的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010167372 CN102236682A (zh) | 2010-05-06 | 2010-05-06 | 维持用户状态信息的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102236682A true CN102236682A (zh) | 2011-11-09 |
Family
ID=44887337
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010167372 Pending CN102236682A (zh) | 2010-05-06 | 2010-05-06 | 维持用户状态信息的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102236682A (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101030228A (zh) * | 2007-03-28 | 2007-09-05 | 华为技术有限公司 | 页面导航方法和装置及应用服务器 |
CN101568938A (zh) * | 2006-12-22 | 2009-10-28 | 雅虎公司 | 数字媒体对象的链接翻新 |
CN101697139A (zh) * | 2009-11-06 | 2010-04-21 | 金蝶软件(中国)有限公司 | 一种远程过程调用方法、装置和注册库 |
-
2010
- 2010-05-06 CN CN 201010167372 patent/CN102236682A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101568938A (zh) * | 2006-12-22 | 2009-10-28 | 雅虎公司 | 数字媒体对象的链接翻新 |
CN101030228A (zh) * | 2007-03-28 | 2007-09-05 | 华为技术有限公司 | 页面导航方法和装置及应用服务器 |
CN101697139A (zh) * | 2009-11-06 | 2010-04-21 | 金蝶软件(中国)有限公司 | 一种远程过程调用方法、装置和注册库 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101611422B (zh) | web数据使用平台 | |
CN103699372B (zh) | 从中央存储装置引导计算机系统 | |
EP2763374B1 (en) | Method and apparatus for supporting scalable multi-modal dialog application sessions | |
CN102681865B (zh) | 分布式系统中的协调升级 | |
JP5305581B2 (ja) | ポートレット構成データを交換するための方法、ポータル、およびコンピュータ・プログラム | |
CN100527081C (zh) | 实现数据升级的计算机处理系统和数据升级方法 | |
CN102708064A (zh) | 从休眠中多阶段恢复 | |
CN101636742A (zh) | 对有时间限制的消息的有效处理 | |
US6990605B2 (en) | Methods and apparatus for recovering work of one computer by another computers | |
CN101512523A (zh) | 把内容动态上下文相关地集成到门户网站应用程序中的系统和方法 | |
US7606824B2 (en) | Databinding workflow data to a user interface layer | |
US7529750B2 (en) | Accessing information on a network | |
CN107544298A (zh) | 一种摄像头调用方法和装置 | |
CN110598107A (zh) | 查询系统的管理方法和计算机存储介质 | |
CN102135895A (zh) | 系统升级方法及系统 | |
CN103098055B (zh) | 移动客户关系管理中的递归导航 | |
CN102024010A (zh) | 数据处理系统及其处理方法 | |
US7254542B2 (en) | Portal data passing through non-persistent browser cookies | |
US20060031194A1 (en) | Decision support implementation for workflow applications | |
US20070168203A1 (en) | Context-based mapping of a content repository in a context driven component execution environment | |
CN101211366B (zh) | 用于从多个异类数据源提供信息的方法和系统 | |
WO2008010212A2 (en) | A network cache and method for managing files | |
US20070074101A1 (en) | Smart form completion of form values | |
US20100094815A1 (en) | Method and apparatus for performing type-aware change tracking in a document | |
CN102236682A (zh) | 维持用户状态信息的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20111109 |