我们现在需要做一个关于试验的系统,有很多表单需要用户填,又不能放在一个页面,并且如果用户没有点击最终的“完成”按钮,数据就不能写入数据,这样就遇到一种情况,如果用户每填完一个页面的数据就保存到数据库的话,那用户中途终止的话,这些已填的数据就成了垃圾数据!大家遇到这种情况都怎样做的啊?

解决方案 »

  1.   

    做一个List,每个list中添加页面的元素信息,然后放置在request中。一次添加就行了。
    最后在完成的时候,遍历list插入到数据库
      

  2.   

    现在的网上简历很多都是放在同一个页面的,你可以用ajax把部分的页面隐藏起来,当用户点击展开的时候再展开,这样看起来就美观了。如果实在是要用多个页面的话,那就得把数据先储存在session里面,然后再翻页,填完一页更新一次session。(购物车的原理是这样的)
      

  3.   

    ajax做假的分页也可以实现,通过传参一步步的实现也可以,如果楼主非要同步交互的话,那么,可以每点下一步的时候,将要保存的信息写入指定文件,然后再用户最终点完成时,再读文件保存入库,当然,要做好文件的命名工作哟。
      

  4.   

    每次点击下一步的时候,将页面数据存放在session中,点上一步时从session中取出值填充页面,最后完成的时候,一次性存数据库,取消就清空每个session中的值。
      

  5.   

    放在session里吧,很经典的购物车原理。
      

  6.   

    在上个页面获得后,用一个hidden隐藏域,放入隐藏域的value中,直接提交表单后,下页用request获取.很方便,不建议用session.ajax操作起来不好操作.重要是理清步骤
      

  7.   

    不能 放在request
    因为有可能会丢失,而且每次传递都要写,你们不累吗?
    放在session好了,虽然我一般很少用session,但是这样的需求不放在session,没天理了。
    放session 不管是map 还是list 随便你放。数据封装应该不难。
      

  8.   

    提交完成后 记得清楚这个session
      

  9.   

    不用session。你可以做个Map。把相对应的值一步一步传过去。然后到最后再取出来就对了。
      

  10.   

    1。不推荐用session,懒得去控制!如果是访问量大,也是一个开销。
    2。session你打算怎么设置时间?比方说一个用户填写了一半后,然后刚好有事离开一下,岂不是要重新填?交互性不好!推荐把参数传回去,用hidden!
      

  11.   

    不能session,要明白做的是注册,有很多要填的,每个都session?那万一同事很多人来注册,系统崩溃都有可能.不说了,lz自己看吧,根据自己的情况去选择.没有最适合的,只有更适合的.
      

  12.   

    编程没有完美的结果,有时候需要平衡和取舍
    你要说session不好,不好控制,很有道理
    你要说request传来传去,页面一多,传哪了也不知道,导致数据丢失,而且需要编写大量的代码,也有道理
    你一定要说哪个好?你觉得呢?你的项目经理觉得呢?个人感觉,SuperCodingMan的想法和我差不多,典型的购物车,既然是经典,总有他的道理。
      

  13.   

    如果有用struts框架,用一个formbean就可以了,如果没用框架,请参考2楼答案
      

  14.   

    存作用域就行了,或者直接放到一个ActionForm里面
      

  15.   

       用request一页一页的传吧,访问量大多的话session太耗资源了。
    提供一种思路给LZ参考
       首先把每个页面的数据写个实体进行封装。如果用的struts直接给每个页面配置一个ActionForm就能很好的封装了。没用就自己写实体。
    然后写一个实体把每个页面实体封装进去。
    页面之间直接传递这个实体,并将每个页面的数据填充到对应的实体里面,最后在后台取出请求中的实体进行操作。
    这样做的优势:
    1.可以直接根据页面实体判断哪个页面的数据没有填充完整,给用户跳转到那个页面补充完整的机会。
    2.可根据实体的数据完整性判断是否为垃圾数据。来决定插入与否。
    3.只传一个实体减少了一定的代码量(不用繁琐的request.setAttribute())。
    4.降低了由于数据过多,漏传的可能性。  
      

  16.   

    spring webflow
    个人感觉解决这类问题比较容易
      

  17.   

    不支持用session实现,这样性能太差了
      

  18.   


    会退后,修改完了,还是将把前一个页面的表单数据传递到下一个页面的地址栏里货隐藏域里的啊!
    不要用session,开销太大了,15楼和16楼说的是对的,跟我一个意思。
      

  19.   

    1.好像可以用ActionForm来实现,只不过这个ActionForm要定义很多变量,ActionForm不仅能分装页面上的数据,而且可以将该数据带到下个action中,也就是有能保存数据的效果,楼主可以试试。如果实在不行得话就用隐藏域吧,一步一步的将数据保存下去,最后提交。
    2.可以考虑用单例模式来实现
    定义一个类,定义一个类型为HashMap静态的成员变量,将每一步的信息保存到map中,最后在从map取数据提交到数据库中,这个跟Java实现缓存的原理有点类似,由于map是静态的变量,能被程序所共享。