编程资料集中营
 | 网站首页 | 文章中心 | 编程资料2 | 软件下载 | BT下载 | 八卦星闻 | 音乐在线 | 在线游戏 | 免费电影 | 进入问吧 | 
用Delphi开发动态Web Server程序,通常情况下,用户通过浏览器在Web站点上看到的网页大多是静态的,随着Internet/Intranet的飞速发展和普遍应用,静态网页已远远不能满足用户的实际需求,用户希望更多地看到根据要求而动态生成的网页。例如响应用户输入(选择)进行数据库查询、动态生成报表等。就目前而言,采用运行在WebServer端的CGI、ISAPI/NSAPI应用程序是一种主要的动态,
您现在的位置: 编程资料,学习资料,c,c++,vc,vc++,java,jsp,j2ee,j2me,asp,php >> 文章中心 >> delphi >> 文章正文
【字体:
用Delphi开发动态Web Server程序   进入问吧

本站地址:http://www.bajiao123.com

作者:佚名    文章来源:不详    点击数:    更新时间:2007-8-1    

用Delphi开发动态Web Server程序

  通常情况下,用户通过浏览器在Web 站点上看到的网页大多是静态的,随着Internet/Intranet 的飞速发展和普遍应用,静态网页已远远不能满足用户的实际需求, 用户希望更多地看到根据要求而动态生成的网页。例如响应用户输入(选择)进行数据库查询、动态生成报表等。就目前而言,采用运行在Web Server 端的CGI、ISAPI/NSAPI 应用程序是一种主要的动态生成网页的方式。
  下面就通过一个简单的例子来介绍如何开发一个响应用户输入的数据库查询Web Server 程序。
  首先,在Web 服务器端安装数据库引擎BDE, 并设置好数据库别名wsda,指向一个包含归档部门、归档年代、卷号、文件日期、文件字号、文件作者、标题等字段的数据库文件wsdak.dbf。
  接着建立一个HTML 文件wsdacx.htm,放在Web 服务器的确省目录下(如c:\webshare), wsdacx.htm 的内容如下:

   < HTML >< HEAD >< TITLE >文书档案查询< /TITLE >< /HEAD >
   < BODY >
   < h1 > 文书档案查询卡< /h1 >
   < HR >
   < FORM action="/scripts/wdcx.dll" method=post >
    请输入标题关键词:< input type="text" size="16" Maxlength="16" name="btgjc" >< BR >
   < INPUT TYPE=SUBMIT VALUE="查询" >< INPUT TYPE=RESET VALUE="重填" >
   < /FORM >
   < HR >
   < /BODY >< /HTML >

  ( 在本例HTML 的< FORM > 语句中,使用的是POST 方法, 可改为其他方法而无需修改下面的ISAPI 源程序, 为简单计,本例只列出了一个用户输入项)。
  在Delphi 中新建一个基于ISAPI 的Web Server Application,增加一个确省的动作事件,其代码如下:

   procedure TWebModule1.WebModule1WebActionItem1 Action(Sender: TObject;
    Request: TWebRequest; Response:TWebResponse; var Handled: Boolean);
   var
    MyDB : TDatabase;
    MyQuery : TQuery;
    Count : Integer;
    Input : TStrings;
   Begin
    Input:=nil;
    Case request.methodtype of mtpost: Input := request.ContentFields;
   mtget,mtput,mthead: Input := request.QueryFields;
    end;
    if input.values['btgjc']'' then
    begin
    MyDB := TDatabase.Create(nil);
    MyQuery := TQuery.Create(nil);
    try
    MyDB.AliasName := 'wsda';
    MyDB.DatabaseName := 'wsda';
    MyQuery.DatabaseName :=MyDB. DatabaseName;
    response.content:=
   ‘< HTML >< HEAD >< TITLE >查询结果< /TITLE >< /HEAD >' #13 +
   ‘< BODY >' #13 +
   ‘< H2 >< font face="隶书" color="green" >查询结果信息:< /font >< /H2 > ' #13 +
   ‘< table border=1 >' #13 +
   ‘< tr >' #13 +
   ‘< th > 卷号< /th >' #13 +
   ‘< th > 文件日期< /th >' #13 +
   ‘< th > 文件字号< /th >' #13 +
   ‘< th > 标题< /th >' #13 +
   ‘< tr >' #13; // #13 是换行符
   Myquery.sql.clear;
   Myquery.sql.add('select *from wsdak.dbf '+
   ‘where ( 标题like "%‘+input.values['btgjc'] +’%")');
   Myquery.open;
   Myquery.first;
   Count:= 0;
   while not MyQuery.eof do
   begin
   response.content:=response.content +1'< tr >' #13 +
   ‘< td >' +MyQuery.FieldByName('卷号').AsString +‘< /td >' #13 +
   ‘< td >' +MyQuery.FieldByName('文件日期').AsString +‘< /td >' #13 +
   ‘< td >' +MyQuery.FieldByName('文件字号').AsString +‘< /td >' #13 +
   ‘< td >' +MyQuery.FieldByName('标题').AsString +‘< /td >' #13 +
   ‘< tr >' #13;
   count:=count +1;
   MyQuery.Next;
   end;
   response.content:=response.content +'共查询到' +inttostr(count) +‘条信息< br >';
   finally
   response.content:=response.content +'< /table >< /BODY >< /HTML >';
    MyQuery.Close;
    MyDB.Close;
    MyQuery.Free;
    MyDB.Free;
   end;
   end
   else response.content:='请先输入标题关键词:';
   end;

  需要注意的是:必须在本单元文件的uses 子句中手工添加db 与dbtables 单元。为简单计,本例并没有使用TTable、Tquery、Tdatas

[1] [2] 下一页

   

进入问吧

本站地址:http://www.bajiao123.com

文章录入:admin    责任编辑:admin 
编程资料集中营