goahead webserver的m283app.asp文件有什么作用

goahead webserver的m283app.asp文件有什么作用,第1张

1、 简介

廉价的硬件,功能强大的32 *** 作系统,以及无处不在的因特网,它们一起促成了网络应用和设备的飞速增长。大量的设备连接到网络上,于是人们希望通过一种通用、熟悉、快捷的方式来访问和控制它们。嵌入式web服务器正好迎合了这种需求,它们嵌入在网络设备之中,使用标准的浏览器就可以远程访问和控制它们。

然而,并不是所有的web服务器都可以担当如此重任,我们需要的是一个强大,安全,标准的,而且最好是久经考验的嵌入式web服务器。这里将要介绍的GoAhead嵌入式web服务器能够满足所有这些需求,包括西门子,霍尼韦尔,惠普等大型企业都在使用GoAhead。

2、 嵌入式web服务器的要求

2.1 易于与设备集成

易于与设备集成包含两个方面的意思,其一是将Web应用程序集成到实时 *** 作系统,其二是可以在Web应用中轻松访问硬件功能。由于GoAhead是开放源代码的,因此这一点不难做到。

2.2 支持将Web页面存储在ROM中

许多嵌入式系统并没有文件系统,因此有必要将web页面保存到ROM中。GoAhead支持对web页面进行编译并将它们链接到最终的可执行文件中。

2.3 加密和用户管理

GoAhead服务器支持使用SSL进行数据加密和认证。同时,它也支持摘要认证机制,一种总是加密密码的更安全的认证机制。用户管理功能允许不同的用户具有不同级别的访问权限。

除了上述要求之外,是否能够快速、方便的生成动态页面是衡量一个嵌入式web服务器的重要指标。GoAhead提供了多种方法编写动态页面,包括asp过程、GoForms过程和embedded JavaScript。GoAhead主要利用asp过程动态获取系统信息然后显示在页面上,GoForms过程则主要用来处理用户指令,例如控制设备和修改配置等。下面以一个动态显示系统当前正在运行的进程信息的小型web应用程序为例,阐述如何利用GoAhead构建嵌入式web应用程序,特别是asp和GoForms过程的使用方法。

GoAhead WebServer采用开放源代码方式,任何人都可以下载、评估并修改代码,目的是为了使GoAhead WebServer成为市场上最领先的嵌入式Web服务器。

支持的平台定制的平台

Windows NT/98/95ChorusOS

Windows CEpSOS

Embedd LinuxuCOS

LinuxIRIX

VxWorksHP-UX

QNXRTEMS

Lynx

3、Goahead Web Server 主要特性:

(1)支持ASP

(2)支持嵌入式JavaScript

(3)标准的CGI执行

(4)内存中的CGI处理GoFrom

(5)扩展的API

(6)快速响应,每秒可处理差超过50个请求

(7)完全和标准兼容

(8)如果不包含SSI,仅要求60K的内存,包含SSI,要求500K内存

(9)Web页面可以存在ROM或文件系统中

(10)支持多种 *** 作系统,包括eCos 、LINUX 、LynxOS 、QNX 、VxWorks 、WinCE、 pSOS等。

4、ASP技术介绍

ASP是Microsoft开发的代替CGI脚本的动态服务网页程序,可以实现与数据库和其他程序的交互。ASP程序允许用户使用包括VBScript,JavaScript等在内的许多已有的脚本语言写ASP应用程序,ASP程序的编制更方便,更灵活。除此之外ASP还具有无编译即可运行,良好的安全性,丰富的内置对象,提供和支持组建功能,瘦客户端等特点。ASP应用程序是在Web服务器上进行解析执行的,而浏览器只是接收和处理HTML流。ASP文件是以“.asp”为扩展名,在传送到浏览器之前用嵌入式脚本插入动态内容。Goahead Web Server支持一个运行时选择脚本引擎的开放式脚本结构。

要创建一个ASP脚本可以使用“<%”和“%>”定界符,例如,下面的JavaScript将在ASP定界符出现的地方,输出“Hello World”。

<h1>Today is <% write("Hello World")%></h1>当用户浏览器要读取ASP文件时,默认的URL程序通过检查文件的扩展名确定页面是否是ASP文件。出现“ .asp” 为扩展名的文件表示需要ASP处理程序来处理,它通过 *** 作从文件系统或ROM读出。在定界符前的内容被直接复制到发出请求的浏览器,当出现ASP定界符时,定界符之间的内容被传送的相关的脚本引擎执行,执行的结果立刻发送的浏览器,这种处理不断重复直到文件结束。

5、嵌入式JavaScript介绍

Goahead 开发了一个嵌入式版本的JavaScript叫做 Ejscript 。JavaScript 是一个非常庞大的语言,它的大小不适用于大部分嵌入式设备。Goahead设计了嵌入式JavaScript解决了这个问题。Ejscript 是JavaScript 的一个严格子集,执行了它基本的语言要素。Ejscript 可应用在ASP中更轻易的建立动态网页。

当JavaScript 用在ASP网页中时,它包含在ASP定界符内,基本格式是:<% function(arguments, ...)%>

JavaScript脚本能跨过多个“\”字符,用在ASP页面中时,函数参数包含了任何查询变量包括在URL查询串或者是标准变量中定义的。URL 查询串自动解码,JavaScript变量被定义了解码查询值。例如,用下面的代码解析名字和地址编码为一个在URL的查询串:

http://localhost/mypage?name=smith&age=35

int myAspProcedure(webs_t wp, int argc, char_t **argv)

{

char_t *name = websGetVar(wp, "name", "undefined")

char_t *age = websGetVar(wp, "age", "undefined")

websWrite(wp, "Name %s, Age", args)

}

JavaScript 程序用websAspDefine API 注册。这样发布了C程序作为JavaScript的全局变量。例如:

extern int outputMyTable(int ejid, webs_t wp, int argc, char_t **argv)

websAspDefine("outputTable", outputMyTable)

websAspDefine连接了JavaScript的命令“outputTable”和c程序“outputMyTable”。当一个ASP页面被浏览器请求时,任何在ASP脚本中出现的outputTable将调用outputMyTable函数。

6、标准的CGI执行介绍

CGI(Common Gate Interface)外部应用程序与信息服务器的标准接口,如HTTP或Web服务器。一个纯HTML是静态的只能检索web不能做改变。一个CGI 程序却可是实时的执行输出的动态内容。

CGI脚本可以用任何语言编写,这种语言能够读STDIN,写STDOUT和读环境变量。这意味着可以使用任何脚本语言,包括C,Perl,甚至shell 脚本。

当URL以/cgi-bin开始时,一个新的程序被调用。CGI可执行程序必须放在Web Server cgi-bin子目录里,每一个CGI请求建立一个独立的进程。

用ASP建造自己的聊天室

聊天室想必你一定去过吧,但想不想建立自己的聊天室呢?其实这一点都不难,Active Server Script提供了Application对象和Session对象,Application对象代表了一个Active Server应用程序,也就是一个Web网页,Session对象则表示一个用户,代表一个用户对这个页面的一次访问,通过Application对象可以让访问它的所有用户共享信息,并可以在Web服务器运行期间持久地保存数据,而Session对象也可以在用户的一次访问期间持久地保持数据,利用这两个对象,就可以十分方便地建造自己的Chat应用程序。

---- 一、Application对象:

---- 1.属性:Application对象没有内置的属性,但用户可以定义自己的属性:

---- Application(“属性名称”)=值,一旦分配了属性,它就会一直存在,直到Web服务器关闭服务,而且它能被所有用户读取,所以可以用它在用户之间发送谈话内容。

---- 2.方法:当两个用户同时对Application属性的值进行写入 *** 作时,会出现一方的修改被另一方的 *** 作直接覆盖掉的情况,为了避免这种现象,用户可以调用Lock方法进行锁定,这样只有当前用户才能够对Application的属性进行 *** 作,用户完成 *** 作后调用Unlock方法解锁,使得其他用户也可以修改Application的属性。

---- 3.事件:创建Active Server应用程序需要在Web服务器上存放应用程序的虚拟主目录下创建Global.asa文件,它含有Application对象和Session对象的事件处理例程,通常,Application_Onstart事件用来定义应用级的属性。

---- 二、创建一个Chat应用程序:程序运行时如下图所示(略)

---- 1.设置应用程序的变量:这里需建立两个应用程序级的变量,gchars数组用来存放用户的谈话内容,gcounter用做计数器,控制页面的显示行数,在这里我们让页面最多显示最近的10行谈话内容。当应用程序启动时这些变量必须进行初始化,所以它们的创建都要在Global.asa文件中的Application_onstart事件中:

<script language="vbscript" runat="server" >

sub application_onstart()

dim lchars(10)

application("gchars")=lchars

application("gcounter")=0

end sub

</script >

---- 2.确定处理ASP的方式:当用户第一次请求这个ASP文件时,用的是GET方法,然后,当用户输入完谈话内容后提交时用的是POST方法,在这里表单是向自身提交的,所以这个ASP文件会被再次请求,我们通过测试Request . ServerVariales(“Request_Method”)变量来确定文件被请求的方式:IF Request . ServerVariales(“Request_Method”)=“POST” then

---- 3.确定讲话者:当用户第一次提交谈话内容时需输入自己的姓名,一旦在txtname框中输入数据后,程序将建立一个会话级变量来存放用户姓名,并自动显示在txtname框中,用户就不需再次输入了,除非你想用另一个名字加入会谈。

IF len(request(“txtname”)) >0 then

Session(“ssname”)=request(“txtname”)

End if

<h5 >您的姓名:

<input type=“type” name=“txtname”

length=“20” value=<%=session(“ssname”)% >>

----

---- 4.处理用户的谈话内容:首先要确定已经为Chat写入的谈话行数,为方便阅读,在这里将显示行数限定为10行,如果Application(“gcounter”)大于9,则将其置为0,然后将谈话者姓名和内容一起存放到Application(“gchars”)数组中:

Application(“gchars”)

(Application(“gcounter”))=Session(“ssname”) &

“:” &request(txttalk)

然后将计数器加1:Application(“gcounter”) =Application(“gcounter”)+1

---- 5.将数组内容写入到客户的浏览器中:用户提交谈话内容后,程序必须将数组内容写到客户的浏览器中,让聊天室中的所有人都能看到被提交的谈话内容:

if application("gcounter")=0 then

lstemp=application("gchars")(0)

else

for x=0 to application("gcounter")-1

lstemp=lstemp &"<br >" &application("gchars")(x)

next

end if

---- 最后,用Response.write方法将lstemp变量的值写到客户的浏览器中去:

response.write lstemp

---- 下面给出Default.asp的完整代码:

<%response.expires=0

response.buffer=true% >

<html ><head ><title >Chat sample</title ></head >

<body ><center >

<h3 >我的聊天室</h3 ></center ><hr >

<% if request.servervariables("request_method")="POST" then

if len(request("txtname")) >0 then

session("ssname")=request("txtname")

end if

application.lock

mcounter=application("gcounter")

mchars=application("gchars")

if mcounter >9 then

mcounter=0

end if

mchars(mcounter)=session("ssname")

&":" &request("txttalk")

mcounter=mcounter+1

application("gcounter")=mcounter

application("gchars")=mchars

application.unlock

end if % >

<% if application("gcounter")=0 then

lstemp=application("gchars")(0)

else

for x=0 to application("gcounter")-1

lstemp=lstemp &"<br >" &application("gchars")(x)

next

end if

response.write lstemp % >

<hr ><center >

<form action="default.asp" method=post name="aspform" >

<b ><a href="default.asp" >

更新显示</a ></b >

<h5 >发言:

<input type="text" name="txttalk" size="70" ><br >

<h5 >您的姓名:

<input type="text" name="txtname" length="20"

value=<%=session("ssname")% >>

<input type="submit" name="cmdpost" default="true" value="发送" >

</form ></center ></body ></html >

---- 以上代码在NT4.0、IIS4.0、IE4.0中和Pwin98、PWS、IE4.0中分别运行通过。

嵌入式sql语言是将sql语句直接嵌入到程序的源代码中,与其他程序设计语言语句混合.

嵌入式sql的用途:它是数据库应用程序的一种开发方法.是一种应用程序进行数据库访问时所采取的编程式数据库语言.


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12162410.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存