no Session问题

在SSH项目中进行数据库查询,控制台报错出现no Session错误信息:如下图


图1

这里我从两个场景说明no Session问题及其解决方案:

场景一:

         web层页面端由easyui实现,实体类Courier对象有set集合,集合里有FixedArea对象,下图为Courier实体类中的set集合属性:

图2

页面端发出查询所有Courier请求,在web层Action中需要将从数据库中查询到的Courier对象集合转成json格式数据,然后再页面端展示,此时控制台报错,如图一。

原因:

         在转Courier对象为json数据格式的时候,对象中有fixedareas集合属性,而jpa加载策略为延迟加载。在Action中转fixedareas集合为json数据,通过代理对象查询数据库,此时Action中session已经关闭。

解决方法:

        在源头解决,出现问题是因为在转fixedareas集合的时候,而在页面端展示的数据中没有fixedareas,所以将fixedareas集合属性排除掉不转json,具体做法如图3红框部分:

图3

场景二:

         从数据库中查询到数据,在Action中数据被压入值栈,页面端从值栈中取数据,此时控制台报错。

原因:

     和上面场景原因类似,延时加载,session从数据库中查找的对象是一个代理对象,只有id,当在页面端取数据时,才真正进行查询数据库,而此时session已经关闭。

图4

解决方法:

       采用延长session的存活时间,在web.xml中配置OpenSessionInViewFilter

图5
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,798评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,892评论 25 709
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 32,219评论 18 399
  • 这期是由一个追逐晴天,放弃雨天的老鸡汤引起的思考。 我读: 书籍:《毫无代价唱最幸福的歌》 两个踢球的少年 By:...
    zerofool阅读 4,023评论 0 0
  • 很多良好的愿望,不能单纯的用因果或是道德衡量,看懂这个故事,可以让人更有智慧的全面去看待和处理一件事情。 19世...
    议会制优于总统制阅读 3,405评论 0 0