Web服务器应用程序

来源:互联网 发布:广东聚游网络 编辑:程序博客网 时间:2024/05/13 05:44
    <HTML>    <HEAD><TITLE>信息查询</TITLE></HEAD>    <BODY>    <H3 ALIGN="CENTER">信息网站</H3>    <table border>    <TR BgColor="White">    <TH>汽车</TH><TH>房屋</TH><TH>人才</TH><TH>其它</TH>    <!-显示表格的标题--->    </TR>    <tr>    <!-------每一个<tr>和</tr>对定义表格的一行内容-------->    <!-------每一个<td>和</td>对定义表格的一个单元格的内容-------->       <td><a HREF="PGrid_src.dll/runquery?QIC">二手汽车</a></td>       <!-- PGrid_src.dll为脚本文件名,runquery 为入口路径,QIC 为查询参数--->        <td><a HREF="PGrid_src.dll/FWQuery?fwz">房屋租赁</td>       <td><a HREF="PGrid_src.dll/RCQuery?Rcz">人才招聘</a></td>       <td><a HREF="PGrid_src.dll/OtherQuery?SHC">商场超市</a></td>    </tr>    <tr>       <td><a HREF="PGrid_src.dll/runquery?Qjx">汽车驾校</a></td>       <td><a HREF="PGrid_src.dll/FWQuery?XZL">写字楼租赁</td>       <td><a HREF="PGrid_src.dll/RCQuery?Qiz">求    职</a></td>       <td><a HREF="PGrid_src.dll/OtherQuery?DIQ">电器专卖店</a></td>    </tr>    <tr>       <td><a HREF="PGrid_src.dll/runquery?Qmr">汽车美容</a></td>       <td><a HREF="PGrid_src.dll/FWQuery?Lop">楼盘信息</td>       <td><a HREF="PGrid_src.dll/RCQuery?JLZ">人才交流中心</a></td>       <td><a HREF="PGrid_src.dll/OtherQuery?SHJ">手机专卖店</a></td>    </tr>    <tr>       <td><a HREF="PGrid_src.dll/runquery?Qwx">汽车维修</a></td>       <td>..</td>       <td>..</td>       <td><a HREF="PGrid_src.dll/OtherQuery?JIC">建材装饰</a></td>    </tr>    <tr>       <td><a HREF="PGrid_src.dll/runquery?Jyz">汽车加油站</a></td>       <td>..</td>       <td>..</td>       <td><a HREF="PGrid_src.dll/OtherQuery?ZHX">装修公司</a></td>    </tr>    <tr>       <td><a HREF="PGrid_src.dll/runquery?Qzl">汽车租赁</a></td>       <td>..</td>       <td>..</td>       <td><a HREF="PGrid_src.dll/OtherQuery?QIJ">清洁公司</a></td>    </tr>    <tr>       <td><a HREF="PGrid_src.dll/runquery?Qsc">汽车市场</a></td>       <td>..</td>       <td>..</td>       <td><a HREF="PGrid_src.dll/OtherQuery?HKS">航空售票处</a></td>    </tr>    </table>    </BODY>    </HTML>    library PGrid_Src;//注意:使用不同的Delphi版本,所使用文件和数量有差别(本例使用Delphi 7创建)!!!    uses      ActiveX,      ComObj,      WebBroker,      ISAPIThreadPool,      ISAPIApp,    UGrid_Src in 'UGrid_Src.pas' {QueryWebModule: TWebModule};    {$R *.RES}    exports      GetExtensionVersion,      HttpExtensionProc,      TerminateExtension;    begin      Application.Initialize;      Application.CreateForm(TQueryWebModule, QueryWebModule);      Application.Run;    end.    unit UGrid_Src;    interface    uses    //定义使用系统单元文件       Windows, Messages, SysUtils, Classes, HTTPApp, Db, DBTables, DBWeb,       HTTPProd;    type    TQueryWebModule = class(TWebModule)    //说明Web模块上使用的所有组件和事件处理过程    Information_Query_Root: TPageProducer;    QiCheQuery: TQuery;    QiCheDetailQuery: TQuery;    FangWuQuery: TQuery;    FangWuDetailQuery: TQuery;    RenCaiQuery: TQuery;    RenCaiDetailQuery: TQuery;    //如下是事件处理过程的说明    procedure TQueryWebModuleInfoQueryAction(Sender: TObject;      Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);    procedure TQueryWebModuledetailqueryAction(Sender: TObject;      Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);    procedure TQueryWebModuleRootAction(Sender: TObject;      Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);    procedure QueryWebModuleFangWuQueryAction(Sender: TObject;      Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);    procedure QueryWebModuleFangWuDetailQueryAction(Sender: TObject;      Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);    procedure QueryWebModuleRenCaiDetailQueryAction(Sender: TObject;      Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);    procedure QueryWebModuleRenCaiQueryAction(Sender: TObject;      Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);    procedure QueryWebModuleOtherQueryAction(Sender: TObject;      Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);    procedure QueryWebModuleOtherDetailQueryAction(Sender: TObject;      Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);    private    { Private declarations }    public    { Public declarations }    end;    var      QueryWebModule: TQueryWebModule;    implementation    {$R *.DFM}procedure TQueryWebModule.TQueryWebModuleRootAction(Sender: TObject;Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);//缺省动作项的事件处理过程,它为用户提供选择画面begin response.content:=Information_Query_Root.content; //调用页面生成组件的content方法,形成响应Web客户请求的页面end;procedure TQueryWebModule.TQueryWebModuleInfoQueryAction(Sender: TObject;  Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);  //查询汽车信息动作项的事件处理过程,它形成汽车简要信息的Web页面,  //并为用户进一步查询详细信息提供超级链接。  var  i:integer;  CaptionStr,colstr1,colstr2,colstr3,str1:string;  begin    i:=0;    //由于Delphi的Case语句不支持字符类型的分支,所以需将客户请求的参数    //转换成相应的序数值    if Request.query='QIC' THEN  i:=0;    if Request.query='Qjx' THEN  i:=1;    if Request.query='Qmr' THEN  i:=2;    if Request.query='Qwx' THEN  i:=3;    if Request.query='Jyz' THEN  i:=4;    if Request.query='Qzl' THEN  i:=5;    if Request.query='Qsc' THEN  i:=6;    //为了减少程序的壅余、精炼程序,对与汽车有关的所有查询都采用同一个查询组件,    //实现动态查询和动态生成响应客户请求的HTML表格    QiCheQuery.close;    //关闭当前查询    QiCheQuery.sql.clear;    //清除当前查询的SQL语句    case i of      0:begin        //修改汽车的访问次数(客户每访问一次,访问次数加1)        //根据客户请求参数转换的序号生成响应的SQL语句和HTML表的显示标题        CaptionStr:='二手汽车';        QiCheQuery.sql.add('select * from QiChe where 编号 like '''+'QIC%''');        colstr1:='品牌';        colstr2:='型号';        colstr3:='车辆类型';        end;      1:begin        CaptionStr:='汽车驾校';        QiCheQuery.sql.add('select * from QiChejx where 编号 like '''+'Qjx%''');        colstr1:='名称';        colstr2:='地址';        colstr3:='交通';        end;      2:begin        CaptionStr:='汽车美容';        QiCheQuery.sql.add('select * from QiChemr where 编号 like '''+'Qmr%''');        colstr1:='名称';        colstr2:='保养项目';        colstr3:='地址';        end;      3:begin        CaptionStr:='汽车维修';        QiCheQuery.sql.add('select * from QiChewx where 编号 like '''+'Qwx%''');        colstr1:='名称';        colstr2:='维修类型';        colstr3:='服务时间';        end;      4:begin        CaptionStr:='汽车加油站';        QiCheQuery.sql.add('select * from Jiayouz where 编号 like '''+'Jyz%''');        colstr1:='名称';        colstr2:='品种';        colstr3:='服务时间';        end;      5:begin        CaptionStr:='汽车租赁';        QiCheQuery.sql.add('select * from QiChezl where 编号 like '''+'Qzl%''');        colstr1:='名称';        colstr2:='服务项目';        colstr3:='服务时间';        end;      6:begin        CaptionStr:='汽车市场';        QiCheQuery.sql.add('select * from QiChesc where 编号 like '''+'Qsc%''');        colstr1:='名称';        colstr2:='服务项目';        colstr3:='地址';        end;    end;    QiCheQuery.open;    //打开动态查询    QiCheQuery.First;    {形成HTML表的标题和表头信息,在该表中有四列信息,前三列为基本信息,第四列用于形成完成显示详细信息而必须的超级链接和条件,此处的条件是完成查询当前记录的    信息后部分}    Response.content:='<HTML><HEAD><TITLE>汽车信息</TITLE></HEAD><BODY>'#13+      '<H3 ALIGN="CENTER">'+CaptionStr+'</H3>'#13+'<table border>'#13;Response.content:=Response.content+'<TR BgColor="White"><TH>'+colstr1+'</TH><TH>'+colstr2+'</TH><TH>'+colstr3+      '</TH><TH>其它</TH></TR>';    while not QiCheQuery.EOF do    //当表的记录指针不在末尾时,获取当前表的所有前三个字段    begin      Response.content:=Response.content+Format('<tr><td>%s</td><td>%s</td><td>%s</td><td><a HREF="%S/rundetail?%s">%s</a></td></tr>'#13,[QiCheQuery.fields[1].AsString,QiCheQuery.fields[2].AsString,QiCheQuery.fields[3].AsString,Request.ScriptName,QiCheQuery.fields[0].AsString,'详细']);      //获取下一个记录      QiCheQuery.Next;    end;    Response.content:=Response.content+'</table></BODY></HTML>'#13;    //最终完成响应客户请求的HTML表格    end;procedure TQueryWebModule.TQueryWebModuledetailqueryAction(Sender: TObject;    Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);    //查询汽车的详细信息动作项的事件处理过程,它形成汽车详细信息的Web页面,    //并为用户进一步查询详细信息提供超级链接。    var    i:integer;    CaptionStr:string;    begin    i:=0;    //IF语句根据客户请求参数判别下一步应执行的查询。    if pos('QIC',Request.query)>0 THEN  i:=0;    if pos('Qjx',Request.query)>0 THEN  i:=1;    if pos('Qmr',Request.query)>0 THEN  i:=2;    if pos('Qwx',Request.query)>0 THEN  i:=3;    if pos('Jyz',Request.query)>0 THEN  i:=4;    if pos('Qzl',Request.query)>0 THEN  i:=5;    if pos('Qsc',Request.query)>0 THEN  i:=6;    QiCheDetailQuery.close;    //关闭当前的查询    QiCheDetailQuery.SQL.clear;    //清除当前查询的SQL语句    case i of      0:begin        //根据客户请求的参数,产生相应的查询语句和显示标题        CaptionStr:='二手汽车';        QiCheDetailQuery.sql.add('select * from QiChe where 编号='''+Request.Query+'''');        end;      1:begin        CaptionStr:='汽车驾校';        QiCheDetailQuery.sql.add('select * from QiChejx where 编号='''+Request.Query+'''');        end;      2:begin        CaptionStr:='汽车美容';        QiCheDetailQuery.sql.add('select * from QiChemr where 编号='''+Request.Query+'''');        end;      3:begin        CaptionStr:='汽车维修';        QiCheDetailQuery.sql.add('select * from QiChewx where 编号='''+Request.Query+'''');        end;      4:begin        CaptionStr:='汽车加油站';        QiCheDetailQuery.sql.add('select * from Jiayouz where 编号='''+Request.Query+'''');        end;      5:begin        CaptionStr:='汽车租赁';        QiCheDetailQuery.sql.add('select * from QiChezl where 编号='''+Request.Query+'''');        end;      6:begin        CaptionStr:='汽车市场';        QiCheDetailQuery.sql.add('select * from QiChesc where 编号='''+Request.Query+'''');        end;    end;    QiCheDetailQuery.open;response.content:= '<html><body><head<title>'+CaptionStr+'</title></head>'#13+'<table border><center>'#13;    {信息分成两屏显示,在第一屏中显示三个字段内容,而第二屏是从第四个字段开始显示.    表格显示形式为字段名和字段值,每个字段显示一行,用字段的总数(QiCheDetailQuery.fieldcount)控制循环次数}    for i:=1 to QiCheDetailQuery.fieldcount-3 do      response.content:=response.content+'<tr><td>'+        QiCheDetailQuery.fields[i].fieldname+'</td>'#13+'<td>'+        QiCheDetailQuery.fields[i].asstring+'</td></tr>'#13;      response.content:=response.content+'</center></table><hr>'#13        +'</body></html>'#13;    //最终完成响应客户请求的HTML表格    End;procedure TQueryWebModule.QueryWebModuleFangWuQueryAction(Sender: TObject;    Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);    //房屋信息动作项的事件处理过程,并形成响应客户的Web页面    //并为用户提供房屋的详细信息提供超级链接    var    i:integer;    CaptionStr,colstr1,colstr2,colstr3:string;    begin    i:=0;    //为了减少程序的壅余、对与房屋有关的所有查询都采用同一个查询组件,    //实现动态查询和动态生成响应客户请求的HTML表格    if Request.query='fwz' THEN  i:=0;    if Request.query='XZL' THEN  i:=1;    FangWuQuery.close;    FangWuQuery.sql.clear;    case i of      0:begin        CaptionStr:='房屋租赁';        FangWuQuery.sql.add('select * from Fwzl where 编号 like '''+'fwz%''');        colstr1:='楼盘名称';        colstr2:='区域';        colstr3:='地址';        end;      1:begin       CaptionStr:='写字楼租赁';        colstr1:='名称';        colstr2:='面积';        colstr3:='地址';        FangWuQuery.sql.add('select * from Xzlz where 编号 like '''+'XZL%''');        end;      end;    FangWuQuery.open;    {形成HTML表的标题和表头信息,在该表中有四列信息,前三列为基本信息,第四列用于形成完成显示详细信息而必须的超级链接和条件,此处的条件是完成查询当前记录的    信息后部分}    Response.content:='<HTML><HEAD><TITLE>房屋信息</TITLE></HEAD><BODY>'#13+      '<H3 ALIGN="CENTER">'+CaptionStr+'</H3>'#13+'<table border>'#13;    Response.content:=Response.content+'<TR BgColor="White"><TH>'+colstr1+      '</TH><TH>'+colstr2+'</TH><TH>'+colstr3+'</TH><TH>其它</TH></TR>';    while not FangWuQuery.EOF do    //当表的记录指针不在末尾时,获取当前表的所有前三个字段,    begin      Response.content:=Response.content+Format('<tr><td>%s</td><td>%s</td><td>%s</td><td><a HREF="%S//FWDetailQuery?%s">%s</a></td></tr>'#13, [FangWuQuery.fields[1].AsString,FangWuQuery.fields[2].AsString,FangWuQuery.fields[3].AsString,Request.ScriptName,FangWuQuery.fields[0].AsString,'详细']);      FangWuQuery.Next;      //获取下一个记录    end;    Response.content:=Response.content+'</table></BODY></HTML>'#13;    //最终完成响应客户请求的HTML表格end;procedure TQueryWebModule.QueryWebModuleFangWuDetailQueryAction(    Sender: TObject; Request: TWebRequest; Response: TWebResponse;    var Handled: Boolean);    //查询房屋详细信息动作项的事件处理过程,形成响应Web客户的页面    var    i:integer;    CaptionStr:string;    begin    i:=0;    //IF语句根据客户请求参数判别下一步应执行的查询。    if pos('fwz',Request.query)>0 THEN  i:=0;    if pos('XZL',Request.query)>0 THEN  i:=1;    FangWuDetailQuery.close;    FangWuDetailQuery.SQL.clear;    case i of      0:begin        CaptionStr:='房屋租赁';        FangWuDetailQuery.sql.add('select * from Fwzl where 编号='''+Request.Query+'''');        end;      1:begin        CaptionStr:='写字楼租赁';        FangWuDetailQuery.sql.add('select * from Xzlz where 编号='''+Request.Query+'''');        end;    end;    FangWuDetailQuery.open;    response.content:=        '<html><body><head<title>'+CaptionStr+'</title></head>'#13+        '<table border><center>'#13;    {信息分成两屏显示,在第一屏中显示三个字段内容,而第二屏是从第四个字段开始显示.表格显示形式为字段名和字段值,每个字段显示一行,用字段的总数(FangWuDetailQuery.fieldcount)控制循环次数}    for i:=1 to FangWuDetailQuery.fieldcount-3 do      response.content:=response.content+        '<tr><td>'+FangWuDetailQuery.fields[i].fieldname+'</td>'#13+'<td>'+        FangWuDetailQuery.fields[i].asstring+'</td></tr>'#13;     response.content:=response.content+         '</center></table><hr>'#13+'</body></html>'#13;     //最终完成响应客户请求的HTML表格end;procedure TQueryWebModule.QueryWebModuleRenCaiDetailQueryAction(    Sender: TObject; Request: TWebRequest; Response: TWebResponse;    var Handled: Boolean);//人才详细信息查询    var    i:integer;    CaptionStr:string;    begin    i:=0;    //IF语句根据客户请求参数判别下一步应执行的查询。    if pos('Rcz',Request.query)>0 THEN  i:=0;    if pos('Qiz',Request.query)>0 THEN  i:=1;    if pos('JLZ',Request.query)>0 THEN  i:=2;    RenCaiDetailQuery.close;    RenCaiDetailQuery.SQL.clear;    case i of      0:begin        CaptionStr:='人才招聘';        RenCaiDetailQuery.sql.add('select * from RenCaizp where 编号='''+Request.Query+'''');        end;      1:begin        CaptionStr:='求    职';        RenCaiDetailQuery.sql.add('select * from Qiuzhi where 编号='''+Request.Query+'''');        end;      2:begin        CaptionStr:='人才交流中心';        RenCaiDetailQuery.sql.add('select * from Jiaoliuzx where 编号='''+Request.Query+'''');        end;    end;    RenCaiDetailQuery.open;    response.content:= '<html><body><head<title>'+CaptionStr+'</title>        </head>'#13+'<table border><center>'#13;    {信息分成两屏显示,在第一屏中显示三个字段内容,而第二屏是从第四个字段开始显示.    表格显示形式为字段名和字段值,每个字段显示一行,用字段的总数(RenCaiDetailQuery.fieldcount)控制循环次数}    for i:=1 to RenCaiDetailQuery.fieldcount-3 do      response.content:=response.content+ '<tr><td>'        +RenCaiDetailQuery.fields[i].fieldname+'</td>'#13+'<td>'+        RenCaiDetailQuery.fields[i].asstring+'</td></tr>'#13;      response.content:=response.content+'</center>         </table><hr>'#13+'</body></html>'#13;      //最终完成响应客户请求的HTML表格end;procedure TQueryWebModule.QueryWebModuleRenCaiQueryAction(Sender: TObject;    Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);    //人才简要信息查询动作项的事件处理过程,它形成响应Web客户的页面    //并为用户提供查询人才详细信息的超级链接    var    i:integer;    CaptionStr,colstr1,colstr2,colstr3:string;    begin    i:=0;    //为了减少程序的壅余、精炼程序,对与人才有关的所有查询都采用同一个查询组件    //,实现动态查询和动态生成响应客户请求的HTML表格    if Request.query='Rcz' THEN  i:=0;    if Request.query='Qiz' THEN  i:=1;    if Request.query='JLZ' THEN  i:=2;    RenCaiQuery.close;    RenCaiQuery.sql.clear;    case i of      0:begin        CaptionStr:='人才招聘';        RenCaiQuery.sql.add('select * from RenCaizp where 编号 like '''+'Rcz%''');        colstr1:='招聘单位';        colstr2:='地址';        colstr3:='职位';        end;      1:begin        CaptionStr:='求    职';        colstr1:='姓名';        colstr2:='所在地区';        colstr3:='求职意向';        RenCaiQuery.sql.add('select * from Qiuzhi where 编号 like '''+'Qiz%''');        end;      2:begin        CaptionStr:='人才交流中心';        colstr1:='名称';        colstr2:='地址';        colstr3:='联系人';        RenCaiQuery.sql.add('select * from Jiaoliuzx where 编号 like '''+'JLZ%''');        end;    end;    RenCaiQuery.open;{形成HTML表的标题和表头信息,在该表中有四列信息,前三列为基本信息,第四列用于形成完成显示详细信息而必须的超级链接和条件,此处的条件是完成查询当前记录的    //信息后部分}    Response.content:='<HTML><HEAD><TITLE>人才信息</TITLE></HEAD><BODY>'#13+      '<H3 ALIGN="CENTER">'+CaptionStr+'</H3>'#13+'<table border>'#13;    Response.content:=Response.content+'<TR BgColor="White"><TH>'+colstr1+      '</TH><TH>'+colstr2+'</TH><TH>'+colstr3+'</TH><TH>其它</TH></TR>';    while not RenCaiQuery.EOF do    //当表的记录指针不在末尾时,获取当前表的所有前三个字段    begin      Response.content:=Response.content+Format('<tr><td>%s</td><td>%s</td><td>%s</td><td><a HREF="%S/RCDetailQuery?%s">%s</a></td></tr>'#13, [RenCaiQuery.fields[1].AsString,RenCaiQuery.fields[2].AsString,RenCaiQuery.fields[3].AsString,Request.ScriptName,RenCaiQuery.fields[0].AsString,'详细']);      RenCaiQuery.Next;      //获取下一个记录    end;    Response.content:=Response.content+'</table></BODY></HTML>'#13;    //最终完成响应客户请求的HTML表格end;procedure TQueryWebModule.QueryWebModuleOtherQueryAction(Sender: TObject;    Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);begin//其它项目简要信息查询end;procedure TQueryWebModule.QueryWebModuleOtherDetailQueryAction(    Sender: TObject; Request: TWebRequest; Response: TWebResponse;    var Handled: Boolean);begin//其它项目详细信息查询end;end.