struts2如何解决同一action多次请求的数据缓存问题?

xb278xb 2014-05-04 11:33:53
谢谢朋友们关注本问题,可能标题概述的不是很准确,下面我通过实际情况说下问题,然后还请大家出谋划策。

背景描述:项目使用spring+struts2+hibernate框架,全部使用注解完成,现在需要完成一个较为普通的查询页面。页面主要包含的功能是条件筛选+数据列表(翻页)。条件筛选:主要是访问的时候初始化好多筛选条件到页面,然后用户点击不同的筛选条件后会进行数据查询,然后展示数据并附带数据翻页。

问题描述:由于框架的搭建使用的struts2,然后每次访问都是重新new一个新的,这样没有线程的安全考虑。主要的问题就是,如何同一个用户,同一个session中访问同一个action,如何保存一些条件数据呢?

翻页实现:目前我们的翻页是使用一个公司的框架,主要是在action中声明Page对象,然后初始化查询语句,然后执行查询,获取结果和分页信息,然后框架默认会把Page对象缓存如session中,然后用户点击下一页访问这个action的时候,在构造函数中会从session中取出Page对象,然后执行翻页操作,获取数据返回页面。这样翻页是没有问题的,大家觉得这样的设计是否合理或可能存在的问题?

筛选条件缓存:筛选条件是一个条件的List,这个查询的页面会存在很多个筛选的条件,类似与 现在的电子商务查询搜索后然后通过不同的条件筛选结果。同问题,当翻页请求action 的时候,回跳转到jsp的时候,筛选的条件一直需要初始化查询,这样才能在页面进行显示。

目前一直的办法:个人经验有限,还请大家出谋划策。1:目前讨论觉得使用Hibernate的二级缓存机制来完成,这样每次在业务模块执行查询就OK了,初始化的数据也每次请求在新的action中都进行初始化查询,这样是否有问题呢?
2:类似于Page的方式,将数据缓存到session中,然后页面输出展示?
谢谢大家!
...全文
515 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
baidu321 2014-12-04
  • 打赏
  • 举报
回复
我也在做类似项目,关于action 缓存数据问题,我是在action中增加了一个static对象,如页面有个name,那么java有一个private String name;private static String static_name; 然后setName里面,增加static_name = name. 这样是保存住了,但是不太理解,既然是每次请求发送生成一个action,那么action对应的static对象不也是新的么
xb278xb 2014-05-12
  • 打赏
  • 举报
回复
引用 3 楼 u011401692 的回复:
我同样是觉得将查询条件放在session中
恩,确实是个办法,得要区分不同模块的查询条件key的,目前我是将查询条件放置在url中,方便url的转发和共享~
xb278xb 2014-05-12
  • 打赏
  • 举报
回复
引用 2 楼 hutiefang 的回复:
1放在session中 如果用户还在使用 但是有其他人跟新了数据。你的数据就不准确了。 2你的数据了是多少?10w 100w 还有缓存大小多少? 3根据数据特点的不同 缓存策略不同的。非业务数据什么的直接读模式。。不频繁更新的数据如何如何,频繁更新的数据如何缓存。这些东西都要考虑。
不好意思,没有及时回复。 1:放入session中的话,session的有限范围不是每个人每个浏览器的是一个独立的么?这个session中的数据会串么?我等会查下,不是很理解为什么会串的。 我目前使用session来存放的,key值为class.name+field.name来作为键的,类名+变量名~,这样在不同的模块之间是否就能最低限度的减少相同对象的数据混乱了? 2:数据量目前不是很大的,以后会增长的。 3:主要是查询筛选比较频繁的~ 目前实现是每次查询翻页都去先查询一下总页数的,就是每次筛选都是重新生成sql语句,这样如果有新数据更新的话可以及时显示出来的,session的话只有在翻页初始化的时候计算了总条数,如果有新数据就会监测不到的~ 谢谢!
DwGoing 2014-05-07
  • 打赏
  • 举报
回复
我同样是觉得将查询条件放在session中
hutiefang 2014-05-06
  • 打赏
  • 举报
回复
1放在session中 如果用户还在使用 但是有其他人跟新了数据。你的数据就不准确了。 2你的数据了是多少?10w 100w 还有缓存大小多少? 3根据数据特点的不同 缓存策略不同的。非业务数据什么的直接读模式。。不频繁更新的数据如何如何,频繁更新的数据如何缓存。这些东西都要考虑。
乔不思 2014-05-04
  • 打赏
  • 举报
回复
实际问题,实际对待。。。没有准确的答案,楼主的方案是可行的的。 关注中。。。。。。。。

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧