Http Session and PortletSession的关系

来源:互联网 发布:js实现分页思路 编辑:程序博客网 时间:2024/05/21 19:34

    原blog地址:http://www.blogjava.net/jjshcc/archive/2011/11/09/363284.html

    这是偶然从上面地址看到的一篇blog,mark一下,以后可以翻翻。原文是英文的,我小小的翻译下,不喜勿喷。

       Http Session and PortletSession

    当用户初次连接一个portlet时,一个PortletSession立即被创建。PortletSession为单次使用portlet 保存临时变量。

    PorletSession是从HttpSession继承来的,和HttpSession一样的使用目的。PortletSession用于代表客户端和portlet间的一次持续对话。 为此,PortletSession能被用于在不同的request间共享必要的信息。PortletSession被用于在不同的request间共享数据而并不是不同的portlets间共享数据。在一个porlet中存储去其中的session中的数据本身不能被其它portlet共享。PortletSession是从request对象获取的。

      那么,所有的Portlet和Servlet都是被同一个类装载器装载的。所以一个不变的事实是session在这两种环境中都是可用的。

     一旦portlets被连接,PortletSession就拥有了命名空间:

        1)PORTLET_SCOPE :只能在同一个portlet中使用

        2)APPLICATION_SCOPE:可以在所有Porlet中使用,当然也能在Servlet/JSP等等中使用

    所以如果你想在任何Servlet和Portlet中共享session...
        1)在portlet中定义session的作用范围属性为APPLICATION_SCOPE
        2)只使用那些在servlet中被定义为APPLICATION_SCOPE的session属性,否则你会得到null值
 
    一旦从request中获取的PortletSession被接入,你就能通过API使用这些Session中的变量。
 
     针对JSR168 Struts Portlets我们可以利用WpsStrutsUtil包来获取PortletSession。

0 0
原创粉丝点击