基本的Web技术Word文件下载.docx

上传人:b****7 文档编号:22001721 上传时间:2023-02-02 格式:DOCX 页数:12 大小:24.20KB
下载 相关 举报
基本的Web技术Word文件下载.docx_第1页
第1页 / 共12页
基本的Web技术Word文件下载.docx_第2页
第2页 / 共12页
基本的Web技术Word文件下载.docx_第3页
第3页 / 共12页
基本的Web技术Word文件下载.docx_第4页
第4页 / 共12页
基本的Web技术Word文件下载.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

基本的Web技术Word文件下载.docx

《基本的Web技术Word文件下载.docx》由会员分享,可在线阅读,更多相关《基本的Web技术Word文件下载.docx(12页珍藏版)》请在冰豆网上搜索。

基本的Web技术Word文件下载.docx

6、FORM:

HTML中的表单——浏览器收集用户信息的方式

提起CGI程序的输入,就要提起FORM,FORM是浏览器收集用户信息的方式,下面我们对FORM作一些简要介绍

<

FORM属性>

若干输入域<

/FORM>

属性有

—ACTION:

指出用于处理表格内容的程序

—METHOD:

指出表单数据传递给该程序的方法

—ENCTYPE:

指出表单信息的编码方式(一般为GET或POST)

输入域有3种类型,针对不同种类信息的收集

—<

INPUT>

各种性质,单行文字的输入

SELECT>

选择性输入,滚屏式菜单

TEXTAREA>

多行文字输入

下列是几个用FORM收集用户信息,调用CGI程序的例子。

●例子:

arch…./cgiforms/helloworld.html

TITLE>

Hello,World!

CGI<

/TITLE>

H2>

ThefirstexampleofCGIprogramming<

/H2>

FORMMETHOD=GETACTION=”/cgi-bin/helloworld.pl”>

Clickheretofireascript:

INPUTTYPE=SUBMITVALUE=”fire”>

过程与效果

visit

click“fire”button

…html/cgi-bin中的helloword.pl得到执行

输出一个按HTTP应答格式准备的回答消息,其中内容部分遵从HTML文本格式

服务器接过这个输出,送给浏览器

浏览器显示内容

●INPUT域的性质,TYPE=?

---文本:

text,纯文本内容,进一步属性有NAME,MAXLENGTH,SIZE,VALUE.。

---口令:

password,用户输入内容不显示,但传送不加密。

---多选多(checkbox)和多选一类型(radio)NAME,VALUE,CHECKED(optional),同一组选项必须有相同的NAME

---提交按钮:

SUBMIT,指示浏览器提交表格数据

---复位按钮:

RESET,置表格初值,即各输入域的VALUE值.

---象素:

IMAGE,具有提交语义,被点击象素坐标同时被提交.

例子:

…/cgiforms/tpcr.html

FORM…>

INPUTTYPE=textNAME=testsize=15VALUE=“GoodMorning”>

p>

INPUTTYPE=passwordNAME=secret>

INPUTTYPE=checkboxNAME=bookVALUE=a>

AAA

INPUTTYPE=checkboxNAME=bookVALUE=bchecked>

BBB

INPUTTYPE=checkboxNAME=bookVALUE=c>

CCC<

INPUTTYPE=radioNAME=logicVALUE=t>

True

INPUTTYPE=radioNAME=logicVALUE=f>

False

效果

Visit

hsri.html

FORMACTION=...>

INPUTTYPE=hiddenNAME=testVALUE=“creditcardnumber”>

INPUTTYPE=submitNAME=form1VALUE=“go”>

INPUTTYPE=resetVALUE=“clear”>

INPUTTYPE=imageNAME=lxmSRC=“lxm.gif”>

Visitarch…./cgiforms/hsri.html

clickontheimage

●SELECT

属性,除NAME外还有

MULTIPLE:

可选多项

SIZE:

1为弹出菜单,否则为滚屏式.

含有若干<

OPTION>

域,有可选属性

SELECTED:

初始预选(缺省为第一项)

VALUE:

选中后的返回值(缺省为option元素所带的内容)

formaction=..>

selectname=“foo”size=1>

(size=3;

size=3multiple)

option>

aaaaaaaa

bbbbbbbb

optionselected>

cccccccc

dddddddd

optionvalue=“123”>

eeeeeeee

ffffffff

/select>

/form>

See…/cgiforms/select.html

●TEXTAREA

初始内容<

/TEXTAREA>

ROWS和COLS属性给出显示区域的大小

也有必须的NAME属性

FORMaction=…>

TEXTAREANAME=“address”rows=5>

LiXiaoming

CSDEPT,PKU,BEIJING100871,CHINA

●关于NAME属性

逻辑地看,网页是一个由各种“元素”构成的一种层次式结构,其本身就是一个元素.

这些元素由“tag”来标识.许多tag都有NAME属性,尤其是那些有比较丰富语义的元素.

我们将NAME看成是相应元素的“名字”.名字是动态处理文档元素的依据.

注意:

CGI程序设计的一个常见错误是忘了写FORM中元素的NAME属性.(浏览器不报错,但也不给服务器送去相应的表格信息)

7、CGI程序如何理解FORM中繁杂的表格信息

用户提交表单时,浏览器通常将其编码后再发送给服务器和CGI程序,信息按在FORM中元素,出现的顺序依据URL编码规范收集成一个编码的字符串:

—空格由“+”表示

—其它非数据值字符由“%HHthHTH”表示,16进制ASCII码,(例如回车、换行是“%0D%0A”,!

被编码为%3D等

—各属性名和属性值用“=”分开

—“&

”用来分隔不同的“名=值”。

CGI程序接收编码后的输入信息后,需要对其进行分析,以便利用其中的数据。

目前,在Internet已经出现为数不少的CGI输入分析库程序,其中较为知名的SteveBrenner用perl编写的cgi-lib.pl,可访问

http:

//www-genome.wi,mit.edu/pub/software/www-cgi-docs.html

及engeneerickim用C编写的cgihtml,可访问

ftp:

//hcs.harvard.edu/pub/Web/tools/cgihtml.tar.gz

//hcs.harvard.edu/~eekim/Web/cgihtml

输入字符串编码后,有两种方法向服务器和CGI程序发送信息:

GET方法将信息附加在URL上,POST方法则通过标准输入发送,浏览器默认使用GET方法。

下面我们对这两种方法作一下介绍。

●METHOD=GET

---GET通常适合用于信息查询的表格。

例如查询某本书是否存在,其特点是信息量小,不改变服务器方的状态。

---服务器方的环境变量QUERY_STRING中将含有URLencoded方式编码的表格信息。

---对浏览器来说,它将ACTION对应的URL和“?

表格信息”拼接,形成URI,用于和服务器联系.

---这也使得我们可能直接启动服务器方的一个程序,不一定通过表格.

下面是一个用GET方法的例子:

<

FORMMETHOD=GETACTION="

http:

//.../name.pl"

>

Typeyourfirstname

inputtype=textname=“FirstName”>

br>

Typeyourlastname

inputtype=textname=“LastName”>

inputtype=submitvalue=“submit”>

如果用户键入“Winona”和“Ryder”作为值,则HTTP请求中的URI为

…name.pl?

First+Name=Winona&

Last+Name=Ryder

服务器方环境变量QUERY_STRING将含有:

“First+Name=Winona&

Last+Name=Ryder“

如果不用表格

可以通过如下方式启动程序和传送数据

//…/name.pl?

Last+Name=Ryder完成同样的事情

●METHOD=POST

---浏览器执行一个HTTPPOST过程(将表格数据作为一个message送给服务器,而不是挂在URL后面)。

---服务器将收集的数据通过STDIN传递给CGI脚本。

---环境变量Content-length为从浏览器发送来的数据的字符数,变量Content-type被设为"

application/x-www-form-urlencoded"

.

例、TheimportantprograminPerl:

从urlencoded中析取信息

#首先搞清楚所用的METHOD

if($ENV{‘REQUEST_METHOD’}eq“GET”){

$in=$ENV{‘QUERY_STRING’};

}

elsif($ENV{‘REQUEST_METHOD’}eq“POST”){

for($I=0;

$I<

$ENV{‘CONTENT_LENGTH’};

$I++)

$in.=getc;

}#从标准输入中一个个字符读进来,拼接放到$in中.

8、其它环境变量

CGI程序可以使用的典型环境变量有:

GATEWAY_INTERFACEREMOTE_HOST

SERVER_NAMEREMOTE_ADDR

SERVER_SOFTWAREAUTH_TYPE

SERVER_PROTOCOLREMOTE_USER

SERVER_PORTREMOTE_IDENT

REQUEST_METHODCONTENT_TYPE

PATH_INFOCONTENT_LENGTH

PATH_TRANSLATEDHTTP_FROM

SCRIPT_NAMEHTTP_ACCEPT

DOCUMENT_ROOTHTTP_USER_AGENT(browser)

QUERY_STRINGHTTP_COOKIE

例如Perl语句$ENV{‘REMOTE_ADDR’}将返回浏览器所在计算机的IP地址。

9、CGI程序的执行及输出

---根据METHOD,用对应方式获得编码后的表格信息

解码”,从中取得纯表格信息

---根据服务逻辑分析处理信息

---生成返回网页,送给标准输出.

---CGI程序必须产生一个响应---就算没有数据需要发回,CGI程序也必须发一个错误或者空消息,因为http连接这时仍然处于打开状态,必须由服务器关闭。

CGI程序将给服务器发送一个头:

(1)如果头的类型是“Location”,服务器将向客户发送指定的文件.

(2) 如果头的类型是“Content_type”,服务器将把紧跟着的所有数据发送回浏览器。

这应该是一个HTML文本。

当CGI程序结束时,服务器关闭连接.

●CGI程序的输出

CGI程序中所有对STDOUT的输出都交由服务器处理。

输出应当以下列三种形式之一的头(header)开始:

---Location:

服务器发送另一个文件给客户(并且结束连接).如:

"

Location:

---Status:

服务器将返回一个状态消息给客户(并且结束连接).如:

Status:

305Documentmoved\n"

;

---Content-type:

服务器将发送所有剩余的输出给浏览器(在一个空行之后),程序结束后才关闭连接.如

Content-type:

text/html\n\n"

一个最简单的CGI程序

#!

/usr/bin/perl

print“Content-type:

text/html\n\n”;

print“<

HTML>

HEAD>

TheHello,

Worldexamplepage<

/HEAD>

\n”;

BODY>

H1>

Hello,

World!

/H1>

/BODY>

/HTML>

 

●例:

下面是用Perl写的CGI程序,将返回GET方法下,浏览器送给服务器的urlencoded表格信息:

print“$ENV{QUERY_STRING}\n“;

10、CGI程序的位置

在HTTP服务器的配置文件中设定(或由扩展名决定)CGI程序的位置。

.通常,在你编制CGI程序的服务器上,把含有表格的HTML文本放在服务器的“文档根目录”(“documentroot”)下的某个子目录中,把CGI程序放在服务器的“cgi-bin”目录下.

另外,CGI程序必须有适当的权限,以便服务器执行.另外,如果CGI程序要读写其它文件,服务器必须具有相应的权限。

(例如Apache服务器,CGI脚本要和httpd程序是同样的owner才能进行写磁盘操作。

11、CGI的优势

目前,CGI程序的功能可有多种方法替代。

许多WEB服务器包括编程接口(API),可以不通过CGI直接扩充服务器的能力,不仅易于实现,而且效率比CGI要高。

还有些服务器可不通过CGI处理某些功能,例如,数据库接口。

另外,客户端技术(例如Java和JavaScript等)也能够提供CGI的某些能力。

但是,CGI并未过时。

这是因为CGI具有以下独特的优势:

●CGI是公共的,便于移植。

可以使用任何编程语言在任何平台上设计CGI程序,而服务器API等方法则限定使用某重语言,并且难于学习和掌握。

●Java等客户端技术不可能代替CGI,只能是CGI的补充。

对于某些应用来说,服务器端程序更合适。

●CGI的局限性大部分是HTML或HTTP的局限性。

随着Web技术的发展,CGI的能力也在不断提高。

二、CGIScript实现的ServerPush、Cookie技术

1.ServerPush

按HTTP的规定,Web服务器可以向浏览器返回一个“回答序列”,序列中的每个元素可以看作是一个独立的HTML文本,在浏览器方一个接一个显示,从而造成一种动态效果。

这种序列用一种特殊的MIME类型,multipart/x-mixed-replaced,来说明。

通常,这种回答序列由一个CGI脚本产生,其输出需为如下基本结构:

multipart/x-mixed-replace;

boundary=--DELIMIT(中间不能有空格)

--DELIMIT

(第一张网页的内容,包括适当的Content-type和空行)

--DELIMIT--

print"

boundary=--foo\n\n"

\n--foo\n"

print"

h3>

Fromthefirstpart<

"

/h3>

center>

h2>

Fromthesecondpart<

/h2>

/center>

\n"

--foo--"

2.Cookie

●Cookie的概念

Cookie是服务器发送给浏览器的一种特殊形式的信息。

浏览器不是将这些信息显示出来,而是记录在客户机的一个特定的文件中(例如Linux中用户目录下的.netscape/cookies)。

当下次访问同样站点时,浏览器就有可能将该cookie信息送回给服务器。

这样,就实现了浏览器和服务器之间某种持续的关系。

Web服务器和浏览器之间通过HTTP头标互相传递cookie。

浏览器收到服务器方来的Set-Cookie响应头标后就设置一个cookie。

以后,一旦用户请求某个文件,满足Set-Cookie头中的参数要求时,浏览器将cookie发过去.服务器将它放在HTTP_COOKIE环境变量中。

这是比隐藏域更一般的一种技术。

隐藏域技术只在一个session内有效,cookie技术可应用于不同的session之间。

●Cookie的建立

每个cookie由“键,值”对来定义。

另外还可有一些可选参数定义cookie请求的有效性:

---expire,GMT(格林尼治)时间,浏览器保持该cookie的时间期限,如果不设,当浏览器和服务器的一次连接结束后,cookie的生命也就结束了。

---path,指定一个服务器方文档空间的子集,本cookie在其中有效,可以获取服务器所设置的cookie.

---domain,指定cookie在其中有效的网域,定义那些服务器可以读取浏览器方的cookie.

---secure,这个参数指定cookie只能通过一个安全通道送出,浏览器和服务器之间的通信协议被认为是加密认证协议时,浏览器才会向服务器提交相应的cookie.例如SSL。

如果不设任何参数,cookie将被返回给原来的服务器。

服务器向浏览器送cookie的例子

text/html\n”;

print“Set-Cookie:

gcf=friend”;

print“\n\n”;

/*注意和其他CGI程序一样,在程序输出的响应头标和Web页面之间必须有一空行*/

print“Thisisregularcontent\n”;

HTTP响应头标中会包含如下一行:

Set-Cookie:

gcf=friend

访问这个脚本的浏览器(适当设置的)将会被问到是否接收一个cookie。

服务器一次可以发送多个cookie给浏览器,每个带有不同的条件,如

gcf=myfriend;

expires=Sat,26-Aug-9715:

45:

30GMT;

path=/project

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 解决方案

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1