日期:2014-05-17  浏览次数:20763 次

关于网站用户 轨迹还原的问题
大概需求是这样的:
用户访问的各种操作 要做轨迹保存下来 将来可以查看当时的轨迹并且可以查看当时的页面(不用考虑页面更新的问题)

我的想法是 把需要记录的操作请求 request对象保存到数据库 然后再写方法取出当时的request对象 在action里进行操作

不知道大家有什么号方法么,谢谢

------解决方案--------------------
动作执行完(并且成功)后,将数据传送到Server (可用Ajax) 由Server存到数据库。。。

Ps:我是新手 关注楼下
------解决方案--------------------
只需要保存操作发生的事件,当前浏览的页面,要跳转的页面,与提交的表单值就可以了吧.
做一个过滤器应该很轻松的能完成这样的功能.
------解决方案--------------------
把每次请求的地址记录下来不就行了,干嘛搞的那么复杂,保存request到数据库??
------解决方案--------------------

------解决方案--------------------
没有必要保存到数据库中去,要是用户数过多的话,你的数据表的垃圾记录太多...
我建议直接保存在cookier中....

------解决方案--------------------
你要细致到什么程度呢?一般来讲,分析用户的操作都是采用日志的形式,比如监控每个用户访问过的页面
,什么时候提交的表单,全部都是自定义一个日志形式,把你想要的信息,放入到日志中。具体怎么记录用户的行为到日志中,一般来讲可以采用拦截器,过滤器的形式。

一般来讲不建议将用户的操作记录放到数据库中,一来速度慢,二来数据库垃圾数据清理不易,三来维护也不容易
------解决方案--------------------
呵呵,那不如你把用户查询的历史轨迹封装为一个对象,他查询的历史记录相关信息分别放入不同的List中
比如页面历史记录放入到页面List中,查询的关键字放入关键字List中,然后封装好,存入到比如Berkeley DB这种嵌入式数据库中。量大的话,可以把封装后的对象放入到队列中,然后定时放入到嵌入式数据库。
这样做的好处是 1.速度可以得到保证 2.维护起来也比较方便 3.编程比较简单,封装好对象,可以充分的利用模式,比如观察者模式,当要查询记录时,可以激发封装了用户历史记录的对象之类

------解决方案--------------------
闻到了火药味。。。

用LinkedList保存是个办法 如果LZ够聪明的话 用过滤器记录下轨迹也不错 但是轨迹太长的话就不建议LZ这么做了 大可以换个树嘛。。
------解决方案--------------------
up
------解决方案--------------------
貌似数据量有点大,记录没个人的轨迹
关注下
------解决方案--------------------
我说了 量大就换成树吧 其实在每个人的SESSION中保存这么个东西就可以了
------解决方案--------------------
顶!虽然不知道说的是什么,学习了!
------解决方案--------------------
up
------解决方案--------------------
做一个控制层,任何需要记录的操作,都放到层里面
例如:
public void 添加(Object... args);
public void 删除(Object... args);

然后再用 log 根据不同的 ip 或者 用户,记录下来就行了。