`

关于session存储可变对象和不可变对象

阅读更多

HttpSession可以存储键/值对,而其中值可以是不可变对象,也可以是可变对象,下面举例说明。

假设键的类型是Integer.

(1)不可变对象

HttpSession session = request.getSession();
Integer value=(Integer)session.getAttribute("key");
if(key==null){
    //创建value
}else{
    //更新value
}

session.setAttribute("key",value);

 由上面的例子可以看出,session存储的不可变对象(比如int, String类型),一旦建立,不能改变它,每次放置新对象,都是用setAttribute方法替代就对象。

(2)可变对象

HttpSession session =request.getSession();
ArrayList<String> value=(ArrayList<String>)session.getAttribute("key");
if(value==null){
     //创建value;
}

String valueItem=request.getPatameter("valueItem")//从jsp页面读取值
if((valueItem)!=null&&(!valueItem.trim().equals(""))){
    value.add(valueItem)
}
 session存储可变对象,实际存储的是可变对象的引用,更新session时,无需使用setAttribute,直接更新该可变对象即可。
分享到:
评论

相关推荐

    关于session.doc

    Session机制是现代Web开发中不可或缺的一部分,它解决了HTTP协议无状态的局限性,使得开发人员能够构建出更加复杂和强大的Web应用。理解和掌握Session机制的基本原理和使用方法对于每一个Web开发者来说都是非常重要...

    Tomcat集群Session的Redis共享存储

    然而,当单个Tomcat实例扩展为集群时,Session管理变得复杂,因为默认情况下,每个Tomcat实例都有自己的Session存储,无法在实例间共享。 为了解决这个问题,引入了Redis,一个高性能的键值存储系统,作为Session的...

    Session-JavaWeb专题

    - 数据库:对于需要高可用性和可扩展性的应用,可以将 Session 数据存储在数据库中。 - 分布式缓存:如 Redis 等,适用于分布式系统。 ##### 1.3 消亡 - Session 的有效期可以由开发者设定,也可以依赖于浏览器的...

    Session详解

    然而,随着Web应用复杂性的增加,特别是动态内容的引入,状态保持变得不可或缺。例如,电子商务网站需要跟踪用户的购物车信息,这就需要一种机制来识别并区分不同的用户。 为解决HTTP的无状态性,引入了Cookie机制...

    Jsp_Session详解.

    为了实现跨多个应用服务器的Session共享,开发者需要使用外部存储系统(如数据库、缓存服务器等)来保存Session数据,或者使用专门的Session管理技术(如黏性会话、集中式Session存储等)。 在本文中,作者详细解释...

    Tomcat memcached Session依赖jar包

    比如,`kryo序列化`可能指的是Kryo库,它是一个快速、高效的对象图形序列化框架,可用于将Java对象转换为字节流,从而更有效地存储在memcached中。 2. **Tomcat Session Manager**:Tomcat提供了一种名为`...

    Laravel开发-laravel-mongodb-session

    在本文中,我们将深入探讨如何...laravel-mongodb-session驱动使这一过程变得简单,让开发者能够充分利用MongoDB的灵活性和Laravel的强大功能。正确配置和使用此驱动,可以帮助我们构建更适应现代Web需求的高性能应用。

    Memcached_Session_Manager jar

    总结起来,Memcached_Session_Manager jar是用于Tomcat集群环境的一个解决方案,它借助Memcached作为中央会话存储,通过javolution和kryo提高序列化效率,确保在分布式环境中正确、高效地管理用户会话。使用这个组件...

    JSP九大内建对象案例讲解

    在深入探讨JSP(JavaServer Pages)的九大内建对象之前,我们首先简要回顾一下JSP技术。...掌握这些内建对象,对于任何希望利用JSP技术构建高效、健壮的Web应用程序的开发者来说,都是必不可少的基础知识。

    Redis替换Session

    在Web开发中,它经常被用来替代传统的Session存储机制,以解决Session在高并发和分布式环境下的诸多问题。 标题“Redis替换Session”指的是将Web应用中的用户Session管理从服务器的内存或数据库转移到Redis中进行。...

    Session相关知识点PDF版本

    总结,Session是Web开发中不可或缺的一部分,它为保持用户状态提供了安全且高效的方法,尤其在处理登录鉴权、个性化设置等场景中发挥着重要作用。然而,随着Web应用规模的扩大,Session的管理也成为了一项挑战,这...

    spring session实现分布式会话管理

    总的来说,Spring Session 是应对分布式系统中会话管理挑战的有效工具,它简化了会话数据的存储和访问,增强了系统的可扩展性和可靠性。通过合理的配置和实践,我们可以充分利用 Spring Session 实现高效且安全的...

    分布式session 共享

    总的来说,分布式Session共享是微服务架构中不可或缺的一部分,它涉及到如何在多个独立服务之间共享和管理用户的状态信息。常见的解决方案包括使用中央化的存储系统(如Redis),通过Token或JWT实现无状态认证,以及...

    C#不同域名之间的Session共享

    然而,当涉及到跨域(即不同域名)的Session共享时,问题就变得稍微复杂了。本篇文章将深入探讨C#中如何实现不同域名之间的Session共享,以及这一功能的重要性和应用场景。 Session共享的主要目的是在多个网站或...

    分布式session方案

    ② 非粘性 Session 处理方式原理:Memcached 做主从复制,写入 Session 都往从 Memcached 服务上写,读取都从主 Memcached 读取,Tomcat 本身不存储 Session。 优点:可容错,Session 实时响应。 实现方式:可以...

    实现session身份认证机制

    1. **Session**: 一个session是服务器存储的关于用户的一段数据,通常包括用户ID等关键信息。当用户登录后,服务器会为该用户创建一个唯一的session ID,并将其发送给客户端。 2. **Cookie**: 客户端(浏览器)用来...

    JAVA基础面试题(面向对象基础)

    String是不可变的,每次修改都会生成新的对象,而StringBuffer在内部维护一个可变的字符数组,允许在原对象上进行修改,避免了不必要的内存开销。 运行时异常与一般异常的主要区别在于,运行时异常是程序执行过程中...

    EJB3.0开发Session Bean.rar

    无状态Session Bean不保留任何关于客户端的信息,而有状态Session Bean可以存储客户端特定的信息,以提供个性化的服务。 **3. Session Bean的类型** - **无状态Session Bean (Stateless Session Bean)**:每个...

    经典面向对象思想 经典面向对象思想

    `String`类表示不可变的字符序列,一旦创建就不能改变;`StringBuilder`和`StringBuffer`都用于创建可变的字符串,但`StringBuffer`线程安全而`StringBuilder`不是。在非多线程环境中,通常推荐使用`StringBuilder`...

    asp.net内置对象

    **定义**: `PageContext`对象提供了对当前JSP页面内的所有对象及命名空间的访问权限,可以访问到本页所在的`Session`和`Application`中的属性值。 **主要用途**: - **统一管理页面对象**: 提供了一种统一的方式...

Global site tag (gtag.js) - Google Analytics