struts2如何解决同一action多次请求的数据缓存问题?
谢谢朋友们关注本问题,可能标题概述的不是很准确,下面我通过实际情况说下问题,然后还请大家出谋划策。
背景描述:项目使用spring+struts2+hibernate框架,全部使用注解完成,现在需要完成一个较为普通的查询页面。页面主要包含的功能是条件筛选+数据列表(翻页)。条件筛选:主要是访问的时候初始化好多筛选条件到页面,然后用户点击不同的筛选条件后会进行数据查询,然后展示数据并附带数据翻页。
问题描述:由于框架的搭建使用的struts2,然后每次访问都是重新new一个新的,这样没有线程的安全考虑。主要的问题就是,如何同一个用户,同一个session中访问同一个action,如何保存一些条件数据呢?
翻页实现:目前我们的翻页是使用一个公司的框架,主要是在action中声明Page对象,然后初始化查询语句,然后执行查询,获取结果和分页信息,然后框架默认会把Page对象缓存如session中,然后用户点击下一页访问这个action的时候,在构造函数中会从session中取出Page对象,然后执行翻页操作,获取数据返回页面。这样翻页是没有问题的,大家觉得这样的设计是否合理或可能存在的问题?
筛选条件缓存:筛选条件是一个条件的List,这个查询的页面会存在很多个筛选的条件,类似与 现在的电子商务查询搜索后然后通过不同的条件筛选结果。同问题,当翻页请求action 的时候,回跳转到jsp的时候,筛选的条件一直需要初始化查询,这样才能在页面进行显示。
目前一直的办法:个人经验有限,还请大家出谋划策。1:目前讨论觉得使用Hibernate的二级缓存机制来完成,这样每次在业务模块执行查询就OK了,初始化的数据也每次请求在新的action中都进行初始化查询,这样是否有问题呢?
2:类似于Page的方式,将数据缓存到session中,然后页面输出展示?
谢谢大家!