通行证: 用户 密码 域名空间  下载中心 社区论坛 信息公告 MY小屋
联系我们
设为首页
加入收藏

 

QQ,ASP,PHP,JSP,XML,SQL,.Net,编程 程序 网页图象 建站经验 私服
首页 | 新闻资讯 | 编程开发 | 网页设计 | 图形图象 | 网络媒体 | 网站模板 | 数 据 库 | 投稿
论坛 | 操作系统 | 系统优化 | 网络安全 | 黑客技术 | 硬件学堂 | 硬件报价 | 服 务 器 | 地图
专题 | 应用软件 | 聊天通讯 | Q Q 专栏 | 建站经验 | 在线工具 | 站长Club | 注 册 表 | 旧版
社会 | 游戏娱乐 | 设计欣赏 | 疑难解答 | 社区论坛 | 韩国素材 | 素材图库 | 广告服务 | 服务
当前位置:首页>>编程开发>>VC编程>>正文 新版上线![旧版]
注:打开慢时请稍等

创建ISAPI扩展

http://www.iyit.net  日期:2006-5-23 12:28:26  来源:网络转载   点击:

编辑:黑鹰 [发送给好友] [打印本页] [关闭窗口] [返回顶部]
上一篇:ISAPI概述
下一篇:在Web页中使用ISAPI扩展
转载请注明来源:www.iyit.net
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。

参加讨论】创建ISAPI扩展:    好了,现在让我们看一下我们的第一个ISA。这个例子中将利用ISAPIExtension Wizard(ISAPI扩展向导)来创建一个简单的ISAPI扩展。全部目的在于让你熟悉概念并介绍一些使用ISAPI的技术。例子程序接收来自客户机的一个串,稍作修改,然后用一个新页显示客户机发送来的这个串。下面介绍的过程将带着你一步步地创建示例ISA。你可以使用同样的过程来做需要创建的任何ISA扩展。我们假定你已经启动Visual C++ 并且使用的是6.0版。
    WEB链接 在创建自己的ISAPI扩展或过滤器时,最好的资源就是其它程序员编写的免费软件。alt.comp.freeware新闻组中列出了相当多的这样的软件。例如,在写本书的时候,AAIT Incorporated就推出了一个新的免费软件,称为CGI Expert(CGI专家)。它同时支持CGI、Win-CGI、ISAPI以及NSAPI接口。显然谁都想用免费产品,但是就像使用其它产品一样,一定要小心。不过它们确实对如何创建自己的定制扩展提供了极好的想法(或者可以提供一种解决方案使得你自己不必去编程了)。
    1. 使用File(文件)|New(新建)命令显示如下图所示的New(新建)对话框。请注意,我已经选择了ISAPI Extension Wizard(ISAPI 扩展向导)。

    2. 在工程名称域中键入想创建的ISA的名字。这个例子中使用的是DispStr,不过可以使用你想使用的任何名称。
    3. 单击OK,就会看到如下图所示的ISAPI Extension Wizard(ISAPI扩展向导)Step 1 of 1(第一步)对话框。在这里可以为你的ISA选择各种特性。注意对话框中有三个主要区域。选中第一个复选框,就可以创建过滤器;选中第二个复选框,就可以创建扩展。第三个区域定义如何将MFC与你的应用程序链接起来。

    4. 选中扩展选项,而不是过滤器选项。在Extension Description (扩展描述)域中,你应对你的ISA提供简短扼要的说明。该说明将以一个字符串的形式出现,你可在DLL中需要时使用它。当某人打开你的ISA的Properties(属性)对话框时,该说明并不出现在对话框中,所以需要给DLL的版本信息再添加点附加文本。
    5. 在Extension Description(扩展描述)域输入Display a string from the client(显示来自客户机的串)。
    6. 单击Finish(完成)就会看到如下图所示的New Project Information (新建工程信息)对话框。

    7. 单击OK,ISAPI Extension Wizard(ISAPI 扩展向导)就完成了所需的程序框架的创建。
    现在,为了使扩展具有实用功能,还要对ISAPI Extension Wizard(ISAPI 扩展向导)创建的框架做三件事。首先是为添加的新函数创建一个分析映射 ( Parsemap) 。在DispStr.cpp文件的顶部可以找到该分析映射。程序列表13.1 列出了应该给该分析映射加入的代码,以便我们能够从HTML页面访问这个新增函数。

    尽管只需要增加两行代码就能使这个例子工作,但我们真正关心的却是下面三行代码。ON_PARSE_COMMAND()宏允许定义一个新函数。注意,应提供函数名、所提供函数所在的类以及该函数使用的参数的类型。ON_PARSE_COMMAND()宏需要一个参数项,尽管你实际上可能并不需要任何参数就能使该函数正常运行。注意,因为缺省函数不需要任何参数,所以使用了ITS_EMPTY值。由于我们的新函数,DispStr棗需要一个字符串指针,所以它带有一个参数ITS_PSTR。
    然后下一行是ON_PARSE_COMMAND_PARAMS()宏。你必须告诉VisualC++如何处理你的函数的参数。例如,如果我们想强制用户为函数提供一个串值,就应在ON_PARSE_COMMAND_PARAMS()宏中,简单的放上String。因为实际上并不一定要求用户提供一个字符串才能使用函数工作,所以这里提供了一个缺省值 。注意如果你需要一个参数而用户没有提供的话,查询就会失败。最后还要用DEFAULT_PARSE_COMMAND() 宏告诉Visual C++用哪个函数作为缺省函数。由于这个例子的Default函数挺合适,所以就没有更改这个缺省的设置。
    其次,你需要给DispStr.H文件增加一个函数项。除非通过修改类说明来包含你的新函数,否则Visual C++对此将会一无所知,于是DLL也不会被编译。幸运的是,我们只要增加程序列表13.2中黑体显示的那一行代码就可以了。程序列表13.2列出了该行代码周围的代码行,以便于你知道新的一行应添加在什么地方。


    可以看出,增加函数调用声明很简单。不过现在你可能还不清楚声明的CHttpServerContext* pCtxt部分是从哪里来的。我们确实没有在前面的任何分析映射宏中对它进行说明。实际上 pCtxt 参数是缺省地传递给函数的。记住前面已经介绍过CHttpServer类可以为每个用户请求创建一个CHttpServerContext对象,这就是该参数的来源。你得到的是指向与用户对函数的调用相联的CHttpServerContext对象的指针。这也是对函数的多个调用进行区分的办法──每个调用都有一个完全不同的对象与之相关联。
    制作这个DLL函数还剩最后一件事──给DispStr.CPP文件添加函数代码。这个例子是将函数代码放在已有的Default()函数代码之后。程序列表13.3 显示的是这个例子使用的非常短的函数。这里没有什么花里胡哨的东西,其全部目的在于说明如何完成这件任务。


    这个函数本身很容易理解。我们做的第一件事是告诉Visual C++启动一个Web页,这就像给文档加入<HTML>和<HEAD> 标记一样。我们做的第二件事是输出一个标题,就像给文档加入<TITLE>标记一样。重载缺省标题的唯一途径是重载WriteTitle()函数,这是一件想干就能干成的事。现在有了标题,就该创建内容了。需要使用流操作符来发送信息。注意这个例子很轻松自如地使用了第8章介绍的所有标记。对标准HTML 文档能做的事也同样能够对ISAPI扩展做。待会儿将会说明这些标记是如何一起工作从而产生了Web页的。另外还应注意我们将从Web页得到的字符串发送回新Web页,甚至不必将值转换为文本,就可以使它们工作了。这个例子中使用的最后一个函数调用是EndContent(),它告诉Visual C++已经完成发送信息的任务了,这就象在文档末尾加上</HTML>一样。
    现在你就可以编译我们创建的ISAPI扩展了。一旦编译成功,就可以将DLL移到Web 服务器上。有好几个逻辑位置可以存放该DLL,不过最常用的两个位置是Scripts目录或一个特殊的Controls目录。我通常将自己的所有控件都放在Controls目录中以便于查找,不过实际的存放位置并不重要。唯一的原则是用户应该能够通过Web站点来访问包含该DLL的目录,而且你应该用Web服务器提供的Internet服务管理器将该目录标记为可执行的。
 相关文章
最新更新 热点排行 推荐新闻
用VC++自制王码五笔输入法安装包 
在线资源指导
实用组件介绍
如何以最佳方式购买组件
ActiveX和OCX组件资源
用VC++自制王码五笔输入法安装包 
在线资源指导
实用组件介绍
如何以最佳方式购买组件
ActiveX和OCX组件资源
建立安装程序
收 集 文 件
理解各种打包类型
打包应用程序
向应用程序增加基于HTML的帮助
VC++实现对远程计算机屏幕的监视
用VC++6.0的Sockets API实现一个聊天室
多线程技术在VC++串口通信程序中的应用
用VC++制作一个简单的局域网消息发送工
用VC 6.0实现串行通信的三种方法
优秀公益广告作品欣赏(8)
java数据类型转换
Windows XP专业版IIS连接数的更改
新开放QQ免费挂级网站
优秀公益广告作品欣赏(7)
免费在QQ上看在线电影电视听音乐
WEB服务器配置全攻略(三)
QQ珊瑚虫外挂4.0版本发布!
免费把QQ炫铃设为本机QQ的系统提示音
Office2007简体中文版浮出水面 美图抢
微软将在华推分期付款,充值卡PC 可低价
 AMD处理器AM2测试 风扇竟运行7分钟
exeplorer.exe错误的问题的总结、解决
ASP.NET 2.0 中的异步页功能应用
硬盘坏道修复及数据恢复宝典
免费登录搜索引擎入口大全
搜索引擎注册九大秘法
小心摄像头成为黑客偷窥你的眼睛
内存混插常见问题和解决方法
Office2007简体中文版浮出水面 美图抢
 友情链接
设置首 页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接
Copyrights © 2004-2006 iYiT.Net All Rights Reserved.
网站合作、广告联系QQ:147007642、466949678
易特网络技术 点击这里给我发消息