首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Spring boot - J2EE Bad Practices:存储在会话中的不可序列化对象

Spring Boot是一个开发框架,用于快速构建基于Java的企业级应用程序。它提供了一套强大的工具和库,简化了J2EE开发的复杂性。而J2EE Bad Practices是指在J2EE开发中常见的不良实践。

关于存储在会话中的不可序列化对象,不可序列化对象是指没有实现Serializable接口的对象。在Spring Boot中,将不可序列化对象存储在会话中是一个不良的实践。

会话是用于存储用户状态和数据的一种机制。通常情况下,会话数据会被序列化并存储在服务器的内存或持久化存储中。如果尝试存储一个不可序列化的对象,会引发异常,导致会话功能无法正常工作。

不可序列化的对象无法通过默认的Java序列化机制进行序列化和反序列化。而Spring Boot的会话功能依赖于Java的默认序列化机制。因此,当不可序列化对象被存储在会话中时,可能会导致程序出现异常或崩溃。

为了避免存储不可序列化对象在会话中的问题,可以采取以下几种做法:

  1. 序列化对象:将需要存储在会话中的对象实现Serializable接口。通过实现Serializable接口,对象可以被序列化和反序列化,从而可以正确地在会话中存储和恢复。
  2. 避免存储不可序列化对象:尽量避免将不可序列化的对象存储在会话中。可以考虑将需要存储的数据提取出来,只存储可序列化的数据,或者采用其他方式进行数据存储,如数据库或缓存。
  3. 使用其他会话管理方式:如果需要存储大量的不可序列化对象,并且必须使用会话管理功能,可以考虑使用其他会话管理方式。例如,可以使用分布式会话管理框架,如Spring Session,将会话数据存储在Redis等外部存储中。

总结起来,存储在会话中的不可序列化对象是一个J2EE开发的不良实践。为了避免此问题,可以通过实现Serializable接口、避免存储不可序列化对象或使用其他会话管理方式来解决。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

JWT在Spring Boot中的最佳实践:构建坚不可摧的安全堡垒

前言大家好,我是腾讯云开发者社区的 Front_Yue,本篇文章将介绍什么是JWT以及在JWT在Spring Boot项目中的最佳实践。在现今的Web应用中,安全性是至关重要的。...JSON Web Token(JWT)是一种开放标准(RFC 7519),它定义了一种紧凑的、自包含的方式,用于作为JSON对象在各方之间安全地传输信息。...在Spring Boot应用中,JWT经常被用作无状态的认证方式,使得客户端可以在每次请求时都带上JWT,从而进行身份验证。...二、Spring Boot中使用JWT在Spring Boot中,你可以通过以下步骤集成JWT:1....总结使用JWT进行用户认证和授权提供了灵活性和可扩展性,使得前后端分离的应用更容易管理用户会话。通过正确配置JWT工具类,我们可以轻松地在Spring Boot应用中实现JWT认证。

1.8K32
  • Spring全家桶之SpringSession「建议收藏」

    的使用 安装Redis单机版 共享简单数据 共享自定义对象 SpringSession 的 Redis 存储结构 设置session的失效时间 @EnableRedisHttpSession注解中相关属性讲解...注解中相关属性讲解 更换 SpringSession 的序列化器 第一章 HttpSession 一、 HttpSession 回顾 什么是 HttpSession 是 JavaWeb 服务端提供的用来建立与客户端会话状态的对象...更换 SpringSession 的序列化器 SpringSession 中默认的序列化器为 jdk 序列化器,该序列化器效率低下,内存再用大。...Spring Session MongoDB 提供了一个API 和实现,用于通过利用Spring Data MongoDB来管理存储在MongoDB 中的用户会话信息。..., 而自定义对象的属性不在白名单中,我们需要关闭属性的自动校验。

    2.3K30

    补习系列(15)-springboot 分布式会话原理

    对于服务器而言,Session 通常是存储在本地的,比如Tomcat 默认将Session 存储在内存(ConcurrentHashMap)中。...那么,这对现有的会话session 管理带来了麻烦,当一个带有会话表示的Http请求到Web服务器后,需求在请求中的处理过程中找到session数据, 而 session数据是存储在本地的, 假设我们有应用...序列化 接下来,继续尝试查看 Redis 所存储的会话数据 127.0.0.1:6379> hgetall "spring:session:app:sessions:8aff1144-a1bb-4474...spring-session 通过过滤器实现 HttpServletRequest 代理; 在代理对象中调用会话管理器进一步进行Session的操作。 这是一个代理模式的巧妙应用! C....: 在写入会话时设置超时时间,并将该会话记录到时间槽形式的超时记录集合中; 启用定时器,定时清理属于当前时间槽的会话数据。

    63420

    经典笔试篇-EJB及Spring篇

    对于客户机,SessionBean 是一种非持久性对象,它实现某些在服务器上运行的业务逻辑。...对于客户机,EntityBean 是一种持久性对象,它代表一个存储在持久性存储器中的实体的对象视图,或是一个由现有企业应用程序实现的实体。...EJB 实例业务方法时,如果对应EJB Object发现自己没有绑定对应的Bean 实例则从其去激活Bean 存储中(通过序列化机制存储实例)回复(激活)此实例。...该容器提供的接口严格遵守J2EE 规范中的WEB APPLICATION 标准。...177、请写出spring 中I0C 的三种实现机制。【中等难度】 答:三种机制为:通过setter 方法注入、通过构造方法注入和接口注入。 178、写出你熟悉的开源框架以及各自的作用。

    1.4K20

    Java面试之EJB & Spring

    对于客户机,SessionBean 是一种非持久性对象,它实现某些在服务器上运行的业务逻辑。...对于客户机,EntityBean 是一种持久性对象,它代表一个存储在持久性存储器中的实体的对象视图,或是一个由现有企业应用程序实现的实体。...EJB 实例业务方法时,如果对应EJB Object发现自己没有绑定对应的Bean 实例则从其去激活Bean 存储中(通过序列化机制存储实例)回复(激活)此实例。...该容器提供的接口严格遵守J2EE 规范中的WEB APPLICATION 标准。...16、请写出spring 中I0C 的三种实现机制。【中等难度】 答:三种机制为:通过setter 方法注入、通过构造方法注入和接口注入。 17、写出你熟悉的开源框架以及各自的作用。

    49230

    Spring技术内幕:设计理念和整体架构概述

    一方面,他们有深厚的技术基础,对应用的技术知其所以然,另一方面,在采坑的过程中不断总结,积累了很多经验。...spring-expression模块提供了一个强大的表达式语言用来在运行时查询和操作对象图,这种语言支持对属性值、属性参数、方法调用、数组内容存储、集合和索引、逻辑和算数操作及命名变量,并且通过名称从...spring的控制反转容器中取回对象。...Spring Cloud 为分布式系统开发提供工具集,基于Spring Boot,为基于JVM的云应用开发中的配置管理、服务发现、断路器、智能路由、控制总线、全局锁、决策竞选、分布式会话、集群状态管理等操作提供了一种简单的开发方式...,通过Spring Data,开发者可以用Spring提供的相对一致的方式访问位于不同类型的数据存储中的数据。

    2K30

    Spring Boot框架讲解教程-动力节点王鹤

    Spring Boot 框架快速入门教程以大量示例讲解了 Spring Boot 在各类情境中的应用,让大家可以跟着老师的思维和代码快速理解并掌握。...适用于 Java 开发人员,尤其是初学 Spring Boot 的人员和需要从传统 Spring 转向 Spring Boot 开发的技术人员。...Spring Boot简介 Spring 诞生时是 Java 企业版(Java Enterprise Edition,JEE,也称 J2EE)的 轻量级代替品。...Spring Boot为Spring平台及第三方库提供开箱即用的设置(提供默认设置),这样我们就可以简单的开始。多数Spring Boot应用只需要很少的Spring配置。...java对象 •024.SpringBoot使用jsp的步骤 •025.创建使用jsp的项目 •026.测试jsp的使用 •027.手工获取容器中对象 •028.使用CommandLineRunner

    50620

    【详解】SpringBoot2.0使用Redis

    Redis作为一款高性能的键值存储系统,在缓存、消息队列、会话存储等场景中有着广泛的应用。本文将介绍如何在Spring Boot 2.0项目中集成并使用Redis。...下面是一个简单的示例,展示如何在Spring Boot 2.0中集成和使用Redis。这个示例将包括以下几个部分:添加依赖配置Redis连接创建Redis操作工具类使用Redis存储和获取数据1....在Spring Boot 2.0中集成和使用Redis可以非常方便地完成。...如果你希望使用JSON格式存储对象,可以自定义序列化器。...运行应用启动你的Spring Boot应用,并使用Postman或其他工具测试上述API端点,验证Redis的操作是否成功。以上就是在Spring Boot 2.0中使用Redis的基本步骤。

    13410

    帅气的 Spring Session 功能,基于 Redis 实现分布式会话,还可以整合 Spring Security!

    ,获得读写外部存储器的 SessionWrapper 对象。...万分好奇,Spring Session 会把 Session 如何存储在 MongoDB 中,所以就有了本小节的入门。...在反序列化 Redis 的 key-value 键值对成 Session 时,如果 attributes 的 value 存在 POJO 对象的时候,因为不知道该 value 是什么 POJO 对象,导致无法反序列化错误...目前,艿艿暂时找不到特别合适的解决方案,所以就换回 Java 序列化方式。也因此,在使用 Spring Session 时,先老实使用 Java 序列化方式吧。...用户在 PC 浏览器上,添加商品到购物车中,我们选择将该信息存储到 Session 中。那么,如果此时用户在微信小程序中打开购物车,是看不到这个商品的。

    6.8K20

    5 本最佳的 Java 面向对象理论和设计模式的书籍

    在最初的几年开发中,我往往根据需求来编写代码,然而在更多的改动,更多的测试之后,往往引入更多的bug。多亏了我的好学精神,我了发现Head First Design Pattern。...这是这个主题的又一本书,它不仅涵盖了所有的面向对象基础(类,对象,继承,多态,抽象,封装),也包括了一些实用但不明显的细节,譬如私有方法,getter和setter方法,不可变对象,接口和监视器(monitor...Core J2EE Patterns: Best Practices and Design Strategies (2nd Edition) by Deepak Alur, Dan Malks, and...虽然现代的框架如Spring已经确保你在框架的层次接触到这些J2EE设计模式,譬如Spring MVC确保了MVC的使用,它也同时使用了前端控制器(DipatcherServlet)和视图解析器(ViewResolver...总之,不管你使用Spring MVC, Structs还是其他web框架,学习J2EE模式不仅能帮助你理解前人写的代码,也能让你写出更容易维护的代码。

    2K40

    从故纸堆里,回顾下Web技术的发展历程

    第一部分(第1~9章)主要讲述Spring Boot的相关技能,包括搭建Spring Boot开发环境、Spring Boot框架基础、JPA操作数据库、面向切面编程、基于Thymeleaf和FreeMarker...和MyBatis 框架中易于理解的版本,深入剖析了其中各个模块的实现,从代码中挖掘常用的设计模式,为读者理解Spring 系列框架的可扩展设计艺术提供了方法论和优秀实践。...MyBatis 源码剖析篇基于MyBatis 3.4 版本,帮助读者对SQL 语言、JDBC 及数据访问方式有更深入的了解,也能看到工厂、Builder、代理、装饰者等设计模式在MyBatis 中的大量应用...我也找到了在这之前的Web框架书,是 J2EE的,叫J2EE全实例教程,是03年出的,估计那个时候不少看这篇文章的朋友还在上小学,那个时候哪怕是最大的90后,也才在读初中。  ...,应该是现在分布式组件的老祖宗  在J2EE之前,就是ASP之类的技术,我也买了本旧书,这个是1999年出版的,上个世纪的书了,比所有的00后年纪还大。

    35620

    被百度严格拷打 62 分钟,汗流浃背!

    钱拷贝只复制对象的基本类型和引用类型的地址(不复制对象本身),深拷贝递归复制对象及其引用类型的对象。 使用序列化和反序列化:序列化是将对象转换为字节流的过程,反序列化是将字节流转换回对象的过程。...Session通常认为比Cookie更安全,因为敏感数据存储在服务器端。但仍然需要防范Session劫持(通过获取他人的Session ID)和会话固定攻击。...而在Spring Boot中,则是通过Spring Boot Starter依赖,可以一次性添加一系列的依赖库,从而简化依赖管理的工作量。...区别: 来源不同:@Resource注解来自于J2EE规范中;而@Autowired注解是Spring框架提供的。...在B+树中,数据都存储在叶子节点上,而非叶子节点只存储索引信息;而B树的非叶子节点既存储索引信息也存储部分数据。

    45910

    ActiveMQ使用入门

    但这些的远程调用是同步操作的,不可避免存在一些局限: (1)同步阻塞:客户对象发出调用后,必须等待服务对象完成处理并返回结果才能继续 执行; (2)紧密耦合:客户进程和服务对象进行都必须正常运行,服务对象的崩溃会导致客户...5 使用 Spring Boot 简化JMS开发 5.1 发送字符串消息 (1)创建 spring boot 项目,引入 spring-boot-starter-activemq  (2)在 application.yml...中配置 activemq 连接 (3)在Spring配置类中创建Destination(消息目的地)——Queue(队列)  (4)使用“JmsMessagingTemplate”实现消息生产者...5.2 发送对象消息 使用JmsMessagingTemplate还可从生产者向消费者以发送对象,对象实际上会被序列化 到消息队列中。...作为消息发送的对象需要:  (1)设置为可序列化 (2)修改application.yml,配置需要传输的类为信任对象  (3)定义消息队列 (4)消息生产者  (5)消息消费者  6 使用ActiveMQ

    2.1K50
    领券