用delphi6+Apache 开发动态网站(创建一个简单的网页)

简介:                  用delphi6+Apache 开发动态网站(一)                  -------创建一个简单的网页       随着Internet 的飞速发展,动态网页的开发方法五花八门,有ASP,JSP,PHP,CGI等等,其中web server...

                 用delphi6+Apache 开发动态网站(一)

                 -------创建一个简单的网页

 

    随着Internet 的飞速发展,动态网页的开发方法五花八门,有ASP,JSP,PHP,CGI等等,其中web server主要

集中在IIS,Apache等上,MS 的IIS 以其强大的功能吸引了很多的开发者,ASP 是IIS 上用的最多的网页开发

方法,可是ASP 对开发非MS 产品的数据库程序时,简直就是一场恶梦,同时IIS 的漏洞越来越多,系统管理员

每天都得注意最新的漏洞补丁,否则不是被黑客攻翻就是被病毒感染,最近的redcode,bluecode,nimda就是例子。

具有速度快,安全性好,跨平台而且是完全免费的apache http server吸引了越来越多的开发者,而borland 新推

出的delphi6 开始支持Apache,功能强大的delphi 和 快速安全的apache 是一对非常好的动态网站开发方式,而且

delphi6 的工程源码几乎不用动就可以用kylix 编译,并在Linux 下的apache 上运行,厉害吧,动手吧,让

我们开始做一个简单的网页吧!

  1.环境设置

   先从http://www.apache.org 上下载apache http server for windows 版,最新的版本是1.3.22,

然后安装到服务器上,调试阶段最好现在本机上安装,反正apache 支持win9x:),安装完毕后,在IE里面输入

http://localhost,会正常显示apache 默认页,说明安装成功!

 2.现在打开delphi6 ,点菜单file-new-other,在new页里面选web server aplication,出现下面图片

选择Apache shared Module(DLL),系统就会建立一个空的工程.把工程另存为test,unit1另存为wmp.pas.

delphi 就会生成以下的工程代码

library test;

 

uses

  WebBroker,

  ApacheApp,

  wmp in 'wmp.pas' {WebModule1: TWebModule};

 

{$R *.res}

 

exports

  apache_module name 'Project1_module';

 

begin

  Application.Initialize;

  Application.CreateForm(TWebModule1, WebModule1);

  Application.Run;

end.

把'Project1_module' 改为'test_module'

 

然后在applicaiotn.Initilize 后面加入一下代码(很重要),

 ModuleName:='test_module';

 ContentType:= 'test-handler';

以上是让apache 加载dll是用的,如果与apache 的配置不一样的话,是无法运行的.

然后设置WebModule1的name 为wm(这仅仅是为了以后编程简单^_^),

打开wm的actions,出现一个editing wm.actions窗口,点击add new,出现一个新的item,

设置其name 为index,pathinfo 为/index,default 为true,

然后到events 页双击onaction

code editor出现一下代码:

 procedure Twm.wmindexAction(Sender: TObject; Request: TWebRequest;

  Response: TWebResponse; var Handled: Boolean);

begin

 

end;

 

加入一下代码

procedure Twm.wmindexAction(Sender: TObject; Request: TWebRequest;

  Response: TWebResponse; var Handled: Boolean);

const

 chweek:array [1..7]of string[2]=('日','一','二','三','四','五','六');

var

  s:string;

  yy,mm,dd:word;

begin

    decodedate(date,yy,mm,dd);

    s:='今天是'+inttostr(yy)+'年'+inttostr(mm)+'月'+inttostr(dd)+'日';

    s:=s+' 星期'+chweek[dayofweek(date)];

    s:=s+'</font〉 欢迎你访问delphi窑洞!';

    Response.content := s;

end;

 

end;

 

OK! 编译,如果按F9 会出现错误!(因为它是个DLL呀!)

 

把编译出来的test.dll 拷到apache 目录下的modules目录

然后用文本编辑器打开apache 目录下的conf目录里面的httpd.conf

最上面加入一下文本

 LoadModule test_module "C:/Program Files/Apache Group/Apache/modules/test.dll"

 <Location /test〉

               SetHandler test-Handler

 </Location〉

如果httpd.conf 里面的ClearModuleList 前面没有# 的话,一定要加上!!!!

现在先stop apache server,然后再start apache server

在IE 里面输入http://localhost/test

怎样出来了吗?

浏览器里面是不是显示

今天是2001年10月30日 星期二 欢迎你访问delphi窑洞!

如果你看到这样的话,那么你成功了!

还算简单吧!

下一步,显示一个静态网页,先输入以下的网页代码到一个html文件里面

<head〉

<meta http-equiv="Content-Type" content="text/html; charset=gb2312"〉

</head〉

<title〉delphi窑洞</title〉

<style type="text/css"〉

<!-- td {  font-family: "宋体"; font-size: 9pt}

       body {  font-family: "宋体"; font-size: 9pt}

       select {  font-family: "宋体"; font-size: 9pt}

       a.news         {color:#ff0033;text-decoration:none}

        a.news:hover   {color:#000000;text-decoration:underline}

       A {text-decoration: none; color: navy; font-family: "宋体"; font-size: 9pt}

       A:hover {text-decoration: none; color: red; font-family: "宋体"; font-size: 9pt;}

       .white {color: white}

       .silver {color: silver}

       .ourfont {font-size: 9pt ; line-height:9pt; }

  --〉

</style〉

<script〉

<!-- Beginning of JavaScript Applet -------------------

function scrollit_r2l(seed)

{ var m1  = "欢  迎  访  问  delphi 窑 洞" ;

 var m2  =" ";

       var msg=m1+m2;

       var out = " ";

       var c = 1;       

if (seed 〉 100)

{                seed-=2;

                var cmd="scrollit_r2l(" + seed + ")";  

             timerTwo=window.setTimeout(cmd,200);}    

    else if (seed <= 100 && seed 〉 0)

     {                for (c=0 ; c < seed ; c++)

      

                      {       out+=" ";}  

       out+=msg;         seed-=2;     

   var cmd="scrollit_r2l(" + seed + ")";     

   window.status=out;        

 timerTwo=window.setTimeout(cmd,200); }       

      else if (seed <= 0)

{                if (-seed < msg.length)

                  {

                       out+=msg.substring(-seed,msg.length);        

                       seed-=2;                       

                       var cmd="scrollit_r2l(" + seed + ")";

                       window.status=out;                    

       timerTwo=window.setTimeout(cmd,200);}

       else {               window.status=" ";      

                 timerTwo=window.setTimeout("scrollit_r2l(100)",75);

}

}

}

// -- End of JavaScript code --〉

</script〉

 

 

<body topmargin="0" leftmargin="0"  bgcolor="#F1FEFE" bgproperties="fixed" onload="timerONE=window.setTimeout('scrollit_r2l(100)',500);"〉

<table width="100%" valign="top" cellspacing="0" cellpadding="1" border=0〉

  <tr valign="top" border=0 〉

    <td height=96 align="center" 〉 <img src="http://www.51delphi.com/logo.jpg"  border=0 〉 </td〉

  </tr〉

   <tr height=16〉

  <td width="100%" 〉

     <#date〉

</td〉

 </tr〉

  <tr〉

 <td width="100%"〉

       <table width="100%" valign="top" border="0"  〉

         <td width="7" valign="left" bgcolor="#FFCF60"〉<img src="http://www.51delphi.com/topleft.gif" width="7" height="7"  border=0 〉</td〉

<td valign="bottom" bgcolor="#FFCF60" align="center" class="L17"〉 

<a href="http://www.51delphi.com" class="title"〉&nbsp;&nbsp;首页&nbsp;&nbsp;</a〉<span class="L"〉|</span〉

<a href="http://www.51delphi.com/soft.asp" class="title"〉&nbsp;&nbsp;软件下载&nbsp;&nbsp;</a〉<span class="L"〉|</span〉

<a href="http://www.51delphi.com/book.asp" class="title"〉&nbsp;&nbsp;技术资料&nbsp;&nbsp;</a〉<font color="#FFFFFF" class="L"〉|</font〉

<a href="http://www.51delphi.com/chat.asp" class="title"〉&nbsp;&nbsp;交流天地&nbsp;&nbsp;</a〉<span class="L"〉|</span〉

<a href="http://www.51delphi.com/link.asp" class="title"〉&nbsp;&nbsp;网络资源&nbsp;&nbsp;</a〉<span class="L"〉|</span〉

<a href="http://www.51delphi.com/tl.asp" class="title"〉&nbsp;&nbsp;技术论坛&nbsp;&nbsp;</a〉<span class="L"〉|</span〉

<a href="http://www.51delphi.com/ly.asp" class="title"〉&nbsp;&nbsp;给我留言&nbsp;&nbsp;</a〉

            </td〉

           

<td valign="top" align="right" bgcolor="#FFCF60" width="7"〉<img src="http://www.51delphi.com/topright.gif" width="7" height="7"  border=0 〉</td〉

     </table〉

 </td〉

 </tr〉

 </table〉

 

取名为title.html,

回到delphi 里面,在wm 里面放置一个PageProducer控件,命名为title,

双击此控件,出现一下代码

procedure Twm.PageProducer1HTMLTag(Sender: TObject; Tag: TTag;

  const TagString: String; TagParams: TStrings; var ReplaceText: String);

const

 chweek:array [1..7]of string[2]=('日','一','二','三','四','五','六');

 

var

  s:string;

  yy,mm,dd:word;

 

begin

      if tagstring='date' then

       begin

           decodedate(date,yy,mm,dd);

           s:='今天是'+inttostr(yy)+'年'+inttostr(mm)+'月'+inttostr(dd)+'日';

           s:=s+' 星期'+chweek[dayofweek(date)];

           s:=s+'欢迎你访问delphi窑洞';

           ReplaceText:=s;

      end;

end;

改写Twm.wmindexAction过程为以下:

procedure Twm.wmindexAction(Sender: TObject; Request: TWebRequest;

  Response: TWebResponse; var Handled: Boolean);

begin

      title.HTMLFile:=defpathname+'/title.html';

    Response.content := title.Content;

end;

好!编译,stop apache and start apache!

在IE 里面输入http://localhost/test

OK! yeah!

其他的东西你可以用类似方法添加,现在就取决于你的网页设计能力了:)

今天就写到这里,下次写存取数据库的方法及动态网页!byebye!

 

   

 

 

 

 

 

 

目录
相关文章
|
6月前
|
Apache 数据库
杨校老师课堂之基于Apache的数据库连接池DBCP的工具类开发
杨校老师课堂之基于Apache的数据库连接池DBCP的工具类开发
30 0
|
4月前
|
存储 分布式计算 物联网
Apache IoTDB进行IoT相关开发实践
当今社会,物联网技术的发展带来了许多繁琐的挑战,尤其是在数据库管理系统领域,比如实时整合海量数据、处理流中的事件以及处理数据的安全性。例如,应用于智能城市的基于物联网的交通传感器可以实时生成大量的交通数据。据估计,未来5年,物联网设备的数量将达数万亿。物联网产生大量的数据,包括流数据、时间序列数据、RFID数据、传感数据等。要有效地管理这些数据,就需要使用数据库。数据库在充分处理物联网数据方面扮演着非常重要的角色。因此,适当的数据库与适当的平台同等重要。由于物联网在世界上不同的环境中运行,选择合适的数据库变得非常重要。 原创文字,IoTDB 社区可进行使用与传播 一、什么是IoTDB 我
188 9
Apache IoTDB进行IoT相关开发实践
|
3月前
|
Linux Apache 数据安全/隐私保护
kali向Apache上部署网页
kali向Apache上部署网页
122 5
|
4月前
|
Java 持续交付 项目管理
Maven是一款基于Apache许可的项目管理和构建自动化工具,在Java开发中极为流行。
Maven是一款基于Apache许可的项目管理和构建自动化工具,在Java开发中极为流行。它采用项目对象模型(POM)来描述项目,简化构建流程。Maven提供依赖管理、标准构建生命周期、插件扩展等功能,支持多模块项目及版本控制。在Java Web开发中,Maven能够自动生成项目结构、管理依赖、自动化构建流程并运行多种插件任务,如代码质量检查和单元测试。遵循Maven的最佳实践,结合持续集成工具,可以显著提升开发效率和项目质量。
59 1
|
4月前
|
Apache 开发者 Java
Apache Wicket揭秘:如何巧妙利用模型与表单机制,实现Web应用高效开发?
【8月更文挑战第31天】本文深入探讨了Apache Wicket的模型与表单处理机制。Wicket作为一个组件化的Java Web框架,提供了多种模型实现,如CompoundPropertyModel等,充当组件与数据间的桥梁。文章通过示例介绍了模型创建及使用方法,并详细讲解了表单组件、提交处理及验证机制,帮助开发者更好地理解如何利用Wicket构建高效、易维护的Web应用程序。
60 0
|
5月前
|
存储 分布式计算 物联网
Apache IoTDB进行IoT相关开发实践
IoTDB是专为物联网(IoT)设计的开源时间序列数据库,提供数据收集、存储、管理和分析。它支持高效的数据写入、查询,适用于处理大规模物联网数据,包括流数据、时间序列等。IoTDB采用轻量级架构,可与Hadoop和Spark集成,支持多种存储策略,确保数据安全和高可用性。此外,它还具有InfluxDB协议适配器,允许无缝迁移和兼容InfluxDB的API和查询语法,简化物联网项目的数据管理。随着物联网设备数量的快速增长,选择适合的数据库如IoTDB对于数据管理和分析至关重要。
256 12
|
5月前
|
存储 分布式计算 物联网
Apache IoTDB进行IoT相关开发实践
The article introduces IoTDB, an open-source time-series database designed for efficient management of IoT-generated data. It addresses challenges like real-time integration of massive datasets and security. IoTDB supports high-performance storage,
150 0
Apache IoTDB进行IoT相关开发实践
|
6月前
|
存储 Apache 文件存储
在Apache环境下为Web网站增设访问控制:实战指南
在Apache服务器上保护网站资源涉及启用访问控制模块(`mod_authz_core`和`mod_auth_basic`),在`.htaccess`或`httpd.conf`中设定权限,如限制对特定目录的访问。创建`.htpasswd`文件存储用户名和密码,并使用`htpasswd`工具管理用户。完成配置后重启Apache服务,访问受限目录时需提供有效的用户名和密码。对于高安全性需求,可考虑更复杂的认证方法。【6月更文挑战第20天】
398 4
|
6月前
|
存储 分布式计算 物联网
Apache IoTDB进行IoT相关开发实践
IoTDB是面向物联网的时序数据库,专注于时间序列数据管理,提供高效的数据处理、集成Hadoop和Spark生态、支持多目录存储策略。它还具有InfluxDB协议适配器,允许无缝迁移原本使用InfluxDB的业务。文章讨论了IoTDB的体系结构,包括数据文件、系统文件和预写日志文件的存储策略,并介绍了如何配置数据存储目录。此外,还提及了InfluxDB版本和查询语法的支持情况。IoTDB在物联网数据管理和分析中扮演关键角色,尤其适合处理大规模实时数据。
110 5
|
5月前
|
安全 Java Apache
如何安装与使用Spring Boot 2.2.x、Spring Framework 5.2.x与Apache Shiro 1.7进行高效开发
【7月更文第1天】在现代Java Web开发领域,Spring Boot以其简化配置、快速开发的特点备受青睐。结合Spring Framework的成熟与Apache Shiro的强大权限控制能力,我们可以轻松构建安全且高效的Web应用。本篇文章将指导你如何安装并使用Spring Boot 2.2.x、Spring Framework 5.2.x以及Apache Shiro 1.7来构建一个具备基础权限管理功能的项目。
88 0

推荐镜像

更多
下一篇
DataWorks