知识大全 用ISAPI方式实现Web页面的自动更新
Posted 文件
篇首语:著论准过秦,作赋拟子虚。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 用ISAPI方式实现Web页面的自动更新相关的知识,希望对你有一定的参考价值。
用ISAPI方式实现Web页面的自动更新 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
对于某些网站管理员来说 最痛苦的事情莫过于每天必做的重复工作 譬如 从新闻页面中删除旧的新闻标题 换上新的新闻标题 如果想让读者能看到以前的新闻 还要更改随时间改变的FormField值等等 用DELPHI编写一个WebServer端的ISAPI程序 可以大大减轻工作量 ISAPI方式的服务器端程序 有以下特点 内存开销小 多个客户端链接与一个链接内存开销等同 速度快 由于DLL运行一次后便常驻内存 当有新的链接时 直接从内存发送数据 有效地提高了速度我用DELPHI 编写的这个程序 具有以下功能
根据日期变化 自动修改FormField的时间值(此值供浏览器端选择)
自动生成新闻目录 管理者只需把新的新闻拷贝至此目录即可 程序能自动生成新闻首页的页面
重点
在一个目录中搜索符合条件的文件 返回句柄 HANDLE FindFirstFile(LPCTSTR lpFileName LPWIN _FIND_DATA lpFindFileData);
根据FindFirstFile返回的句柄继续搜索下一个文件 BOOL FindNextFile(HANDLE hFindFile LPWIN _FIND_DATA lpFindFileData );
关闭指定搜索句柄 BOOL FindClose(HANDLE hFindFile);
WIN _FIND_DATA该结构存储FindFirstFile和FindNextFile找到文件的各项信息 其结构如下
typedef struct _WIN _FIND_DATA DWORD dwFileAttributes; FILETIME ftCreationTime; FILETIME ftLastAccessTime; FILETIME ftLastWriteTime; DWORD nFileSizeHigh; DWORD nFileSizeLow; DWORD dwReserved ; DWORD dwReserved ; TCHAR cFileName [ MAX_PATH ]; TCHAR cAlternateFileName[ ]; WIN _FIND_DATA; 程序的action内容 name pathinfo enabled updata WebActionItem /DispNews true
源代码如下 unit Unit ;
interface
uses
Windows Messages SysUtils Classes HTTPApp ShellApi ExtCtrls;
type ebModule = class(ebModule) Timer : TTimer; procedure WebModule updataAction (Sender: TObject; Request: ebRequest; Response: ebResponse; var Handled: Boolean); procedure WebModule WebActionItem Action(Sender: TObject; Request: ebRequest; Response: ebResponse; var Handled: Boolean); procedure Timer Timer(Sender: TObject); private Private declarations public Public declarations end;
var WebModule : ebModule ;
implementation
$R * DFM // //本部分是执行不带入口的dll 功能 生成新闻中心的首页 //主要目的是下拉菜单的时间动态改变 procedure ebModule WebModule updataAction (Sender: TObject; Request: ebRequest; Response: ebResponse; var Handled: Boolean); var DHTML:string; var I:integer; begin
DHTML:= < > ; DHTML:=DHTML+ < head > ; DHTML:=DHTML+ < title > 新闻中心< /title > ; DHTML:=DHTML+ < /head > ; DHTML:=DHTML+ < body > ; DHTML:=DHTML+ < p > 请选择日期 < /p > ; DHTML:=DHTML+ < form method= POST action= AutoUpDt dll/DispNews ; DHTML:=DHTML+ < p > < select size= name= tm > ; //下拉列表中包含 前推十天的日期 DHTML:=DHTML+ < option selected value= +FormatDateTime( mmdd date)+ >今天< /option > ; DHTML:=DHTML+ < ption value= +FormatDateTime( mmdd date )+ >昨天< /option > ; DHTML:=DHTML+ < option value= +FormatDateTime( mmdd date )+ >前天< /option> ; for i:= to do DHTML:=DHTML+ < option value= +FormatDateTime( mmdd date I)+ > +FormatDateTime ( m 月 dd 日 date I)+ < /option > ;
DHTML:=DHTML+ < /select > < input type= submit value= 提交 name= B > ; DHTML:=DHTML+ < /p > ; DHTML:=DHTML+ < /form > ; DHTML:=DHTML+ < /body > ; DHTML:=DHTML+ < / > ; Response Content:=DHTML;
end;
//根据request传送的参数 确定要显示的文件目录 //并从该目录中取出所有的文件 //如果没有该目录 则向浏览器发送提示信息 procedure ebModule WebModule WebAction Item Action(Sender: TObject; Request: ebRequest; Response: ebResponse; var Handled: Boolean); Var ReqDir:Tstrings; //保存Request要求的参数 Var DHTML SeleDir:string; var FileNameData: WIN _FIND_DATA; var SearchFileHandle:THandle; begin ReqDir:=NIL; ReqDir:=Request ContentFields; DHTML:= < > ; DHTML:=DHTML+ < head > ; DHTML:=DHTML+ < title >新闻中心< /title > ; DHTML:=DHTML+ < /head > ; DHTML:=DHTML+ < body > ; DHTML:=DHTML+ < p align= center > < font face= 宋体 size= color= # FF > 新闻中心< /font >< /p > ; //DHTML:=DHTML +ReqDir Values[ tm ]; SeleDir:=ReqDir Values[ tm ];
// 获得搜索句柄 SearchFileHandle:=FindFirstFile (Pchar( C:\\MyWeb\\news\\ +SeleDir+ \\* ) FileNameData); if SearchFileHandle< > INVALID_HANDLE_VALUE then begin DHTML:=DHTML+ < P >< a href= / +SeleDir+ / +FileNameData cFileName+ > +FileNameData cFileName+ < /a >< /p > ; //根据搜索句柄向后搜索 while FindNextFile (SearchFileHandle FileNameData ) do DHTML:=DHTML+ < P >< a href= / +SeleDir+ / +FileNameData cFileName+ > +FileNameData cFileName+ < /a >< /p > ; //关闭搜索句柄 fileClose(SearchFileHandle); end else DHTML:=DHTML+ 对不起 没有您需要的新闻 ;
DHTML:=DHTML+ < /body > ; DHTML:=DHTML+ < / > ; Response Content:=DHTML; end;
//在上午八点到九点之间 Timer被激发一次 创建下一天的文件夹 procedure ebModule Timer Timer(Sender: TObject); begin if FormatDateTime( h time)= then mkdir(IntToStr(StrToInt (FormatDateTime( mmdd date))+ )); end; end;
cha138/Article/program/Delphi/201311/8517相关参考
ASP.NET开发宝典:设计Web页面 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  
用ASP+DLL实现WEB方式修改服务器时间 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 首先
Javascript刷新页面的几种方法 复制代码代码如下: historygo()locationreload()location=locationlocationassign(location)
WEB页面工具语言XML(二)定义 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! XML是一个精
知识大全 基于asp.net的web页面动态控件创建以及使用
摘要web设计中有很多场合页面的控件要动态创建甚至只能动态创建这样可以增加页面的灵活性但是给程序员带来了一些麻烦比如要使用动态创建的控件怎么使用都是要求解决的问题本文基于aspnet简要介绍了页面的
WEB页面工具语言XML(一)产生背景 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! XML同H
实现Web页面上的右键快捷菜单 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 样式代码 <
浅谈ASP中Web页面间的数据传递 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 往往使用动态网
显示页面show.asp--基于web的QQ程序 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
实现异步调用WebService,防止页面超时 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 普