用ISAPI方式实现Web页面的自动更新

原创 2001年04月18日 09:30:00

用ISAPI方式实现Web页面的自动更新

作者:崔本强

对于某些网站管理员来说,最痛苦的事情莫过于每天必做的重复工作。譬如:从新闻页面中删除旧的新闻标题,换上新的新闻标题;如果想让读者能看到以前的新闻,还要更改随时间改变的FormField值。等等。用DELPHI编写一个WebServer端的ISAPI程序,可以大大减轻工作量。
---- ISAPI方式的服务器端程序,有以下特点:内存开销小,多个客户端链接与一个链接内存开销等同;速度快。由于DLL运行一次后便常驻内存,当有新的链接时,直接从内存发送数据,有效地提高了速度。

---- 我用DELPHI4编写的这个程序,具有以下功能:

---- 1、根据日期变化,自动修改FormField的时间值(此值宫浏览器端选择)。

---- 2、自动生成新闻目录。管理者只需把新的新闻拷贝至此目录即可,程序能自动生成新闻首页的页面。

---- 重点:

---- 1、在一个目录中搜索符合条件的文件,返回句柄: HANDLE FindFirstFile(LPCTSTR lpFileName,LPWIN32_FIND_DATA lpFindFileData);

---- 2、根据FindFirstFile返回的句柄继续搜索下一个文件: BOOL FindNextFile(HANDLE hFindFile,LPWIN32_FIND_DATA lpFindFileData );

---- 3、关闭指定搜索句柄: BOOL FindClose(HANDLE hFindFile);

---- 4、WIN32_FIND_DATA该结构存储FindFirstFile和FindNextFile找到文件的各项信息,其结构如下:

typedef struct _WIN32_FIND_DATA {
DWORD dwFileAttributes;
FILETIME ftCreationTime;
FILETIME ftLastAccessTime;
FILETIME ftLastWriteTime;
DWORD nFileSizeHigh;
DWORD nFileSizeLow;
DWORD dwReserved0;
DWORD dwReserved1;
TCHAR cFileName
[ MAX_PATH ];
TCHAR cAlternateFileName[ 14 ];
} WIN32_FIND_DATA;
程序的action内容:
name
pathinfo
enabled
updata
WebActionItem1
/DispNews true

源代码如下:
unit Unit1;

interface

uses

Windows, Messages,
SysUtils, Classes,
HTTPApp,ShellApi, ExtCtrls;

type
TWebModule1 = class(TWebModule)
Timer1: TTimer;
procedure WebModule1updataAction
(Sender: TObject; Request: TWebRequest;
Response: TWebResponse;
var Handled: Boolean);
procedure WebModule1WebActionItem1
Action(Sender: TObject;
Request: TWebRequest; Response:
TWebResponse; var Handled: Boolean);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
WebModule1: TWebModule1;

implementation

{$R *.DFM}
//
//本部分是执行不带入口的dll。
功能:生成新闻中心的首页,
//主要目的是下拉菜单
的时间动态改变
procedure TWebModule1.
WebModule1updataAction
(Sender: TObject;
Request: TWebRequest;
Response: TWebResponse;
var Handled: Boolean);
var DHTML:string;
var I:integer;
begin

DHTML:='< html >';
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="1" name="tm" >';
//下拉列表中包含
前推十天的日期
DHTML:=DHTML+'< option
selected value="'+FormatDateTime('mmdd',
date)+'" >今天< /option >';
DHTML:=DHTML+'< ption value="'
+FormatDateTime('mmdd', date-1)+'"
>昨天< /option >';
DHTML:=DHTML+'< option value="'
+FormatDateTime('mmdd', date-2)+'"
>前天< /option> ';
for i:=1 to 7 do
DHTML:=DHTML+'< option value="'
+FormatDateTime('mmdd',
date-2-I)+'" >'+FormatDateTime
('m"月"dd"日"', date-2-I)+'< /option >';

DHTML:=DHTML+'< /select >
< input type="submit" value="提交" name="B1" >';
DHTML:=DHTML+'< /p >';
DHTML:=DHTML+'< /form >';
DHTML:=DHTML+'< /body >';
DHTML:=DHTML+'< /html >';
Response.Content:=DHTML;

end;

//根据request传送的参数
确定要显示的文件目录
//并从该目录中取
出所有的htm文件
//如果没有该目录,
则向浏览器发送提示信息
procedure TWebModule1.
WebModule1WebAction
Item1Action(Sender: TObject;
Request: TWebRequest;
Response: TWebResponse;
var Handled: Boolean);
Var ReqDir:Tstrings;
//保存Request要求的参数
Var DHTML,SeleDir:string;
var FileNameData:
WIN32_FIND_DATA;
var SearchFileHandle:THandle;
begin
ReqDir:=NIL;
ReqDir:=Request.
ContentFields;
DHTML:='< html >';
DHTML:=DHTML+'< head >';
DHTML:=DHTML+'
< title >新闻中心< /title >';
DHTML:=DHTML+'
< /head >';
DHTML:=DHTML+'
< body >';
DHTML:=DHTML+'
< p align="center" >
< font face="宋体" size="5"
color="#0000FF" >
新闻中心< /font >< /p >';
//DHTML:=DHTML
+ReqDir.Values['tm'];
SeleDir:=ReqDir.
Values['tm'];

// 获得搜索句柄
SearchFileHandle:=FindFirstFile
(Pchar('C:/MyWeb/news/'+SeleDir+'
/*.htm'),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+'< /html >';
Response.Content:=DHTML;
end;

//在上午八点到九点之间,
Timer被激发一次,创建下一天的文件夹
procedure TWebModule1.
Timer1Timer(Sender: TObject);
begin
if FormatDateTime('h',
time)='8' then
mkdir(IntToStr(StrToInt
(FormatDateTime('mmdd', date))+1));
end;

end.

---- 实际使用时,可根据自己的需要,将已有的Web页面编辑进程序中;同时,编写合适的时间处理函数修改FormField的值也是必须的,因为在本程序中,并未涉及到月初月末时间变化。

基于Selenium的web自动化框架(python)

1 什么是selenium Selenium 是一个基于浏览器的自动化工具,它提供了一种跨平台、跨浏览器的端到端的web自动化解决方案。Selenium主要包括三部分:Selenium IDE、Sel...
  • xinke453
  • xinke453
  • 2017年06月11日 15:39
  • 497

windows,linux下SVN实现自动更新WEB目录

通过SVN进行版本库管理,每次提交后,都要在SVN服务器更新最新上传的版本到WEB目录进行同步。操作比较烦琐,而且效率也低。使用SVN钩子脚本进行WEB目录同步,可很好的解决这方面的问题。由于测试机器...
  • yuchen_0515
  • yuchen_0515
  • 2014年08月19日 12:03
  • 845

带你实现开发者头条(一) 启动页实现

对于很多初学者或者刚工作的Android新手来说,我们的项目经验还停留在做demo的阶段,有没有一种很low的感觉,并且当你真正上手做大项目的时候又不知道把自己学到的东西用上去。。有一种自己家里有座金...
  • lowprofile_coding
  • lowprofile_coding
  • 2016年04月16日 21:21
  • 4758

最新-如何在Windows server 2008中配置IIS 75的ISAPI和CGI限制

服务器越来越多的使用windows2008R2作为服务器操作系统,IIS7.5是安装在win7、win8、win10里的web服务器的管理程序,win2003、win2000的web服务器使用的是ii...
  • qqxinxi
  • qqxinxi
  • 2017年03月26日 18:20
  • 3057

【网页制作】——WEB标准三要素:html,css,javascrip

网页主要是由三部分组成的:结构,表现和行为。如果用一本书来表现,一本书分为了章,篇,节和段落,这就构成了一本书的”结构“,而这个组成部分用什么字体,什么字号,什么颜色,就称为了这本书的”表现“。由于传...
  • changyinling520
  • changyinling520
  • 2016年04月30日 23:28
  • 1821

页面跳转两种方式

在界面显示过程用,一般都是通过用户提交页面请求到Servlet,在通过Servlet处理后跳转到相应的界面,进行数据的显示。一般页面跳转有两种方式,分别是重定向(response.sendRedire...
  • u010927139
  • u010927139
  • 2015年06月12日 10:18
  • 1486

【Web开发原理】HTTP协议详解

一、概念 协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则,超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏...
  • moshenglv
  • moshenglv
  • 2016年07月23日 11:28
  • 717

自动更新ssi页面的思路汇总

最近在试图将页面静态化,有三种思路,    1 静态生成html,需要在发布文章的时候点击生成,缺点是需手工生成,而且每一次改动都需要重新生成整个页面。实时性差吗,不能保证是最新发布的。    2 a...
  • hawk140
  • hawk140
  • 2016年08月28日 11:46
  • 239

影响网页加载速度的因素有哪些及优化方案

网页打开速度是影响用户体验的首要因素。 硬件因素包括:服务器端、客户端和网速。服务器端主要包括:服务器的地 域,是否双线,处理能力等等;客户端的因素主要包括:用户的硬件配置、用户使用的浏览器、是...
  • zhangzhuosmail
  • zhangzhuosmail
  • 2014年01月20日 09:59
  • 477

web前端页面性能优化小结

PS:结合了精英的思想和自己的一些小小的总结~ 影响用户访问的最大部分是前端的页面。网站的划分一般为二:前端和后台。我们可以理解成后台是用来实现网站的功能的,比如:实现用户注册,用户能够为文章发表评...
  • abc456456456456
  • abc456456456456
  • 2014年12月08日 10:38
  • 1597
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用ISAPI方式实现Web页面的自动更新
举报原因:
原因补充:

(最多只允许输入30个字)