用C++Builder6制作Apache动态服务页
敬业的IT人
互联网
佚名
2008-1-3 21:57:16
3、 点击上图中的OK按钮,源程序文件即生成,其中包括:Project1.cpp,Unit1.cpp,Unit1.h均为缺省文件名,其中unit.cpp与unit.h中定义了TwebModule1,所有的名称中,除Project1.cpp外均可更改为其它更合适名称。那么Project1.cpp的名称如何更改?当将工程由Project1.bpr另存为am.bpr时,project1.cpp便自动更名为am.cpp,但project1.cpp与am.cpp的内容无变化,如下便是am.cpp内容,内容虽多,但手工修改的仅有两处:
将下述源文件中标示为黑粗斜体字的Project1_module修改为am_module(这与上述二.2.c的内容遥相呼应,但请注意二.2.c中模块名为_am_module,多一下横线作为前辍,而此处则没有),之后除非想把工程名改为其它名称,否则保存am.cpp即可,am.cpp的其它内容最好不要修改。
//删除部份注释后的am.cpp内容
#include <WebBroker.hpp>
#include <ApacheApp.hpp>
#pragma hdrstop
USEFORM("Unit1.cpp", WebModule1); /* TWebModule: File Type */
#define Application Webbroker::Application
#pragma link "ApacheApp.obj"
#pragma link "webbroker.obj"
#pragma link "ReqMulti.obj"
#pragma link "WebSnap.lib"
#pragma link "WebDSnap.lib"
extern "C"
{
Httpd::module __declspec(dllexport) Project1_module;
}
//---------------------------------------------------------------------------
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*)
{
try
{
if (reason == DLL_PROCESS_ATTACH) {
Apacheapp::set_module(&Project1_module);
Application->Initialize();
Application->CreateForm(__classid(TWebModule1), &WebModule1);
Application->Run();
}
}
catch (Exception &exception)
{
}
return 1;
}
//---------------------------------------------------------------------------
#undef Application
//---------------------------------------------------------------------------
4、 打开unit1.cpp,TwebModule1便会在Object Treeview中列出来,右键单击其它子项Actions,在弹出菜单中选击Add item,则Actions下会增加一子项0-WebActionItem1。要使HTTP客户端得到这个动作项的响应,方法有多种,其中一种方式如下:
在Object Treeview下方的Object Inspector中修改0-WebActionItem1这下动作项的属性(Properties):
MethodType值为mtGet
PathInfo值为/index
再修改其事件(Events):
OnAction事件为OnStart(可用其它名称),则CB6给Web模块自动生成OnStart函数(或方法),请在函数体内输入如下内容:
Response->Content=”<html><head><font size=36>Apache动态网页</font>”\
“<title>网页标题</title>”\
“<base href=http://127.0.0.1></head> <body> Apache来也</body><html>”;
5、 编译连接,生成am.dll,然后按二所述配置,打开IE,在地址栏中输入http://127.0.0.1/index,效果如何?试试吧,不要太着急,请看请楚文中每一个句子。
四、其它:
1、 Apache的动态模块配置中有一项名堂叫作:资源定位格式为(举例说明):
<Location /index>
SetHandler am-handler
</Locaton>
此意为将http://主机名或IP/index的HTTP请求定位到_am_module,所以此处am-handler中的’am’一定要与模块名相同,至于index,可以替换为其它合法的字符组合,如:
<Location /main>
SetHandler am-handler
</Locaton>
此时,必须如此请求动态网页:http://127.0.0.1/main。
2、 CB6中Web模块TwebModule的Actions项的子项,有一属性,也是事件,名为Producer,而在CB6的工具栏的Internet项中,有许多Producer,名称类似xxxxProducer,试用一下吧,他们的优先级低于OnAction事件。
- 最新文章
- 在C++ Builder中使用ActiveX控件显示Flas..[01-03]
- 改变控件的窗口样式[01-03]
- C++Builder中不规则窗体的快速显示[01-03]
- 用C++ Builder开发ISAPI[01-03]
- C++ Builder 3.0中各种资源的利用[01-03]
- 用C++Builder开发动画DLL[01-03]
- 相关文章
- C++BUILDER动态建立菜单及菜单事件[01-03]
- C++Builder编程中动态更改自定义打印纸张[01-03]
- BCB动态生成30个按钮对象[01-03]
- 在BCB中实现菜单资源的动态加载[01-03]
- WINDOWS下的动态鼠标光标控制[01-03]
- C++Builder中动态库的链接问题[01-03]
