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程序集
  • 相关阅读:
    sql测试
    sql时间和日期函数
    递归算法
    冒泡排序
    Ajax
    省市区下拉框三级联动
    Repeater用法
    WIndows form Linq多表联合
    C# 递归算羊
    C# 定义一个学生的结构体,输入学生信息,学号,姓名,身高,按身高排序输出
  • 原文地址:https://www.cnblogs.com/wdfrog/p/1077499.html
Copyright © 2011-2022 走看看