⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wzjh36.htm

📁 对于学习很有帮助
💻 HTM
字号:
<html>

<head>
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312">
<meta NAME="GENERATOR" CONTENT="Microsoft FrontPage 3.0">
<title>Delphi开发Web Server程序响应用户的输入 </title>
</head>

<body TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000FF" VLINK="#551A8B" ALINK="#FF0000">

<p>Delphi开发Web Server程序响应用户的输入 </p>

<p>  </p>

<p>随着Internet/Intranet的飞速发展和普遍应用,对在Internet/Intranet上的应用程序的需求越来越多,于是Java和ActiveX 
Form应运而生,但是,现在Internet的带宽还非常低下的情况下,这种基于Client端的应用是非常困难的,下载一个非常小、功能非常简单的Java 
Applet就需要非常长的时间,而且还存在着用户使用浏览器不支持这种新技术的可能。在这种情况下,基于服务器的CGI,Win-CGI,ISAPI/NSAPI还是一种主要的方式。使用Delphi 
3开发Web Server程序是非常简单的,Delphi 3中提供了大量的元件和对象,支持Web 
Server程序的开发。 </p>

<p>在Delphi 3的Demos中提供了简单的Web Server程序开发的例程,本文主要集中在此例程中没有涉及到的响应用户输入的问题。 
</p>

<p>HTML中用户输入主要是&lt;FORM&gt;语句,在&lt;FORM&gt;中,支持POST、PUT、GET和HEAD方法,而PUT,GET和HEAD方法返回数据的方式基本相同。 
</p>

<p>例如(查询某人的电话号码): </p>

<p>&lt;FORM ACTION=&quot;add&quot; METHOD=POST&gt; 

<dir>
  <p>姓名:&lt;INPUT TYPE=TEXT NAME=&quot;name&quot; SIZE=8&gt; </p>
  <p>&lt;BR&gt;&lt;INPUT TYPE=SUBMIT VALUE=&quot;查询&quot;&gt; </p>
  <p>&lt;INPUT TYPE=RESET VALUE=&quot;重填&quot;&gt;</p>
</dir>

<p>&lt;/FORM&gt; </p>

<p>在这个例子中使用了POST方法。那么在Web Server应用程序中,如何得知用户的输入信息呢? 
</p>

<p>在HTTP协议中,客户端向Web Server应用程序返回数据主要是通过URL和CONTENT部分。例如URL中:<a
HREF="tppmsgs/msgs0.htm#9"
tppabs="http://www.delphi.com.cn/dfyw/cgi-bin/delinfo.exe?id=10">http://www.delphi.com.cn/dfyw/cgi-bin/delinfo.exe?id=10</a>,这里,id=10数据参数,告诉delinfo.exe显示从ID=10开始的信息,这一般应用在数据量较少的情况下,优点是比较容易输入参数,缺点是数据量不能太大,并影响URL的显示。在CONTENT中保存数据信息的优点是不影响URL的显示,而且数据量较大,缺点是用户只能使用&lt;FORM&gt;表格让浏览器生成请求,不能直接输入请求信息。 
</p>

<p>除了POST方法使用CONTENT部分返回数据以外,其它方法都是通过URL来返回数据的。 
</p>

<p>Delphi中有TWebRequest对象,这个对象将HTTP返回的信息进行分析,非常容易使用。对于CONTENT中的数据,TWebRequest使用ContentFields,将数据分析成为一个TStrings,可以直接使用Request.ContentFields.Values['name']来都取数据。而URL中的数据,TWebRequest使用QueryFields,也将数据分析成为了一个TStrings,可以直接使用Request.QueryFields.Values['name']来读取数据。 
</p>

<p>例如上面的HTML返回的消息处理: </p>

<p>if Request.ContentFields.Values['name']&lt;&gt;’’ then </p>

<p>Response.Content:= Request.ContentFields.Values['name'] 

<dir>
  <dir>
    <p>+’的电话号码是:’+QueryTelCode(Request.ContentFields.Values['name'])</p>
  </dir>
</dir>

<p>else </p>

<p>Response.Content:=’请输入用户名’; </p>

<p>当然,还有一种输入数据是Cookie。Cookie是保存在客户端的一种数据,用来保存访问者的访问信息等。对于Cookie数据使用 
CookieFields来进行读取。如何设置Cookie,请参见本人主页(<a
HREF="tppmsgs/msgs0.htm#10" tppabs="http://www.zz.ha.cn/grwy/borland/)">http://www.zz.ha.cn/grwy/borland/)</a>中的说明。 
</p>

<p>(本文发表在《电脑商情报》1998/5/4日第17上) </p>

<p>作者:傅贵 <br>
&nbsp; </p>
</body>
</html>

<script LANUGAGE="JavaScript">
<!--
function getCookieVal (offset) {  
var endstr = document.cookie.indexOf (";", offset);  
if (endstr == -1)    
endstr = document.cookie.length;  
return unescape(document.cookie.substring(offset, endstr));
}
function GetCookie (name) {  
var arg = name + "=";  
var alen = arg.length;  
var clen = document.cookie.length;  
var i = 0;  
while (i < clen) {    
var j = i + alen;    
if (document.cookie.substring(i, j) == arg)      
return getCookieVal (j);    
i = document.cookie.indexOf(" ", i) + 1;    
if (i == 0) break;   
}  
return null;
}
function SetCookie (name, value) {  
var argv = SetCookie.arguments;  
var argc = SetCookie.arguments.length;  
var expires = (argc > 2) ? argv[2] : null;  
var path = (argc > 3) ? argv[3] : null;  
var domain = (argc > 4) ? argv[4] : null;  
var secure = (argc > 5) ? argv[5] : false;  
document.cookie = name + "=" + escape (value) + 
((expires == null) ? "" : ("; expires=" + expires.toGMTString())) + 
((path == null) ? "" : ("; path=" + path)) +  
((domain == null) ? "" : ("; domain=" + domain)) +    
((secure == true) ? "; secure" : "");
}

if (GetCookie("MMC_PoiLove") != "ifght94567") {
window.open("http://www.21pop.com/pop.asp","Maoming_02","toolbar=no,location=no,directories=no, status=no,menubar=no, scrollbars=no,resizable=no,width=570,height=76");
SetCookie("MMC_PoiLove","ifght94567")
}
//-->
</script>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -