论坛首页 Java企业应用论坛

数据存放(Session or request),希望能找到平衡点!

浏览 71081 次
该帖已经被评为精华帖
作者 正文
   发表时间:2006-07-04  
我现在的解决方案就是用request + cache解决. 目前感觉这样解决是最简单有效的方案. 还有spring web flow 好像可以解决这个问题, 但是太过于复杂, 另外不知道怎么和webwork结合. 另外在 jsf中 好像可以用save state 将信息保存到客户端, 也算是一种解决方案了.
0 请登录后投票
   发表时间:2006-07-04  
step by step最好就用DHTML来处理,把各步骤做在div里面,一次只显示一个div其他隐藏,所有步骤完成之后一起提交。这样也可以再返回以前的步骤做修改,不会丢数据,而且不用惊动server端
0 请登录后投票
   发表时间:2006-07-05  
smilelee74 写道
step by step最好就用DHTML来处理,把各步骤做在div里面,一次只显示一个div其他隐藏,所有步骤完成之后一起提交。这样也可以再返回以前的步骤做修改,不会丢数据,而且不用惊动server端


很多情况下面,后一页面内的内容是根据前一页的选择来决定的. 所以这些情况下, 想不惊动server端是不行的了
0 请登录后投票
   发表时间:2006-07-05  
表面上的后一页,前一页,实际数据都在client的同一页面,数据是同享的
0 请登录后投票
   发表时间:2006-07-06  
说到放在hidden input里面的安全问题,是不是可以把这个hidden里的东西先encrypted啊.但我觉得这个想法没多大用,因为hidden里一般放的是上一页的参数,如果是恶意用户,他同样可以在上一页里自己修改参数再提交.
0 请登录后投票
   发表时间:2006-07-26  
robbin 写道
nkoffee 写道
lingcm 写道
我现在所在的项目就有这样的问题,数据从数据库里面取出来的数据很多情况都是放在session里面的!主要原因是一般的功能都有XXXXinput.jsp  ,  XXXXdetail.jsp , XXXXconfirm.jsp , XXXXack.jsp 因为上面的页面都有可能出错,所以很多list如果放到request里面出错后将会丢失(需要重新到数据库里面去捞)

    现在项目里面的做法是,把这些可能出错回来还要显示的数据都塞到session里面。然后每个function都有一个functionID号,在每个function 的init的时候会remove掉所有以这个functionId相关的session中的值,(当然这个是在框架里面封装了,只要调用removeAllfuncationVariable()方法就可以了)。但是这样会使用户的session迅速膨胀。用户如果能按照正常流程跑还行,因为每个function结束后都会把用户带到这个这个function的init 方法去清session的,但是用户如果在中途退出我们就没有办法控制了!

   另外公司里面有些其它项目就禁止使用session,所有的东西都是放到resquest里面然后每次出错什么的都是重新到数据库里面再捞一次数据。不知道各位在项目里面是怎么做的?有没有个平衡点的?有没有什么心得可以共享的

web应用中很难避免一些长用户类型的事务,
比如新建某个东西要经历若干个页面,类似于app中的wizard,
面对这样的问题,也很难不用session来存放数据,

原则是尽量避免这样的长事务,尽量避免往session里塞东西,
无法避免的话就要注意好管理这些数据。
多说无益,建议你看一下atleap里面的的BaseAction,参考一下它的存取session的数据并使用。
另外虽然对session数据的使用要分外小心,但是并不说明session的使用只能局限于用户登陆信息


经历多个页面导航的情况实际上就是pageflow了,应该采用标准的pageflow方案去解决。

为什么说session里面最好只放登陆信息,不要放别的?这个话题说来就话长了,涉及到应用服务器的session管理机制。总之,根据我多个大项目解决内存问题,和做群集的经验,session是最容易出问题的地方,切记!除非万不得已,绝对不要操作session。

我做的那个项目就是经常容易out of memory,一开始我以为是服务器启动时,创建的DAO对象过多呢!现在明白了,我也挺同意robbin意见,既然是流程,就多使用几次request来实现好了,只要控制好流程的顺序好了啊!
0 请登录后投票
   发表时间:2006-08-16  
这种类型的数据最好是放在客户端的内存中,但是以目前的技术(我认为这样的技术应当由浏览器来实现)来说,好像还无法实现。
0 请登录后投票
   发表时间:2006-12-25  
Struts form大量使用session范围也有内存问题?
0 请登录后投票
   发表时间:2006-12-28  
学习,关注一下
0 请登录后投票
   发表时间:2006-12-28  
我目前做着一个手机网游服务器端的项目,没有用任何开源框架,只有自己写了一套MVC框架支撑起来的。数据在初始化时从数据库取出常用的数据存放在servletcontext里,从而在以后的操作中都不需要与数据库有关系,但是在后台的任何操作都会影响数据库和servletcontext中的数据,到目前为止还没发现什么问题。在后台需要查看数据时我是把servletcontext中的数据拷贝存到session中然后显示给客户端,我放在session是因为后台系统可能就只有几个几十个管理员。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics