zoukankan      html  css  js  c++  java
  • siteFactory 防刷新模块RefreshModule

    一般防刷新都是在服务器端实现的,思路如下
     生成一个随机标签,保存到Session里(或是类似的缓存里),同时把标签发到客户端,通过表单隐藏字段,Cookie等手段.
     用户回发时(提交页面)会对比这2个标签,相同就表示正常提交,不同的话则表示刷新.
     说到这里,想起 <<Asp.net 2.0 高级编程>>里的一个错误,作者在讲解httpmodule时展示了一个防刷新模块,这个模块没考虑多用户的情况,在打开一个浏览器测试时是正确的,但是当你开2个浏览器时就会出错.

      下面是SiteFactory的实现思路
      在客户端页面的post操作时,附加一个隐藏字段,这个值是一个随机生成的32位Guid(貌似没有十六进制的F),
      服务器端维护一个队列,队列里的数据是这些Guid,当客户发出post动作时,会比较提交上来的guid是否存在于队列里,
      如果存在就表示是刷新页面操作,反正就表示正常提交,这个时候会把提交上来的Guid入队,如果队列长度达到设定值,则进行一次出队操作.具体代码看PowerEasy.Web.dll程序集
  • 相关阅读:
    为什么项目经理非常难有节操的选举
    二叉查找树的删除操作
    二叉查找树的前驱后继
    替罪羊树
    树链剖分
    DFS序
    bzoj3224: Tyvj 1728 普通平衡树(平衡树)
    splay树入门(带3个例题)
    红黑树
    AVL树
  • 原文地址:https://www.cnblogs.com/wxf82610/p/1488308.html
Copyright © 2011-2022 走看看