易语言应用ESP编程入门.doc_第1页
易语言应用ESP编程入门.doc_第2页
易语言应用ESP编程入门.doc_第3页
易语言应用ESP编程入门.doc_第4页
易语言应用ESP编程入门.doc_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

易语言应用ESP实例入门教程前言:为什么要写这个东东当前,计算机编程技术发展日新月异,随着互联网的普及和传输速率的大幅提高,网页程序由于其无需下载安装,升级、维护方便等优势,正在逐步取代传统的桌面应用程序。而主流的编程工具都已增加了开发网页程序的功能。那么作为使用易语言的广大编程人员想开发网页程序该怎么办呢?大家别恢心,好在我们易语言界里面藏龙卧虎,有好多高手为易语言开发出了具备各种新功能的支持库,这里面就有“云外归鸟”开发的ESP,它是立足现有易语言编程环境下,开发动态网页程序的最佳选择。东西是好东西,可是ESP推出2年多了,用的人却很少,坛子里的例程也少的可怜,并且目前还有很多人不知道ESP这个东西是什么。究其原因,我想缺乏必要的初级教程和例程,是限制其发展的一个主要问题。“云外归鸟”在推出这个系统时指出其应用群体是具备一定的网页开发基础以及ASP开发能力的人,也就是坛子里所说的相对“老鸟”,但反过来想一想,会以上两种技能的人还有必要再学ESP来开发网页吗?回答是否定的,即使有,也是出于一种娱乐的心理搞点东西玩一玩。真正需要用ESP开发的人我想应具备以下一些特点:只用易语言开发软件、其它语言或会一点或不会、没有开发过网页、不想花太多时间再去学习另外一门语言。具备以上特点的人在易界应该是主体(也就是所说的菜鸟)。所以很多人想学习,但看了ESP自带的那个成品例程又看不明白,最后还是放弃了。因此,我个人认为还是有必要推出一个针对“菜鸟”的ESP入门教程,也就是说,本教程力争把读者群体定位在:一个不会ASP而只会易语言的人,当然,这只是作者自己一厢情愿的想法,到底效果如何,还要等待后面的反应了。一、什么是ESPESP(易语言Server Pages)即易语言活动服务页,它是易语言编程界高手“云外归鸟”为解决易语言不能编写B/S网页系统软件而推出的。主要用于帮助易语言建立动态网站开发环境。通过ESP,可以结合HTML、易语言、JavaScript、VBScritp(后面两种角本语言主要应用在网页客户端,服务器端核心代码用易语言实现)等语言来编写动态的、交互的和高效的Internet应用。1、ESP自己独具的优点由于核心代码采用易语言来编写,使原有使用易语言来开发软件的用户在基本不需要学习其它语言的前提下,可以很快上手,再结合HTML代码(这部分可以用Dreamweaver等网页编辑软件来完成),即可快速完成网站应用程序的开发。另外,服务器环境架设方便也是其突出优势,系统提供一个独立、小巧的服务器,无需再安装IIS等专业服务器软件。如果需要IIS,也可把ESP环境植入其中,实现ASP、ESP混合开发系统的目的。2、ESP目前存在的缺点由于ESP不是易自身所带的功能,因此它与易IDE编程环境的结合上还不十分方便,目前只是在代码编写、编译上可以利用IDE。此外,由于ESP普及率和知名度不高,目前支持ESP的网络服务器基本为零,也就是说,要想把自己开发的一个网页应用程序在整个互联网上发布,只能选择自己架设。不过好在我们基本把用户群体定位在中小型单位的管理软件,这样可以利用他自己的服务器来架设。二、ESP应用环境配置方法在使用之前,要首先选择一个ESP环境的架设方案,目前我们有两种方案可供选择:独立服务器版和IIS版,两种方案各有优势,对于初学用户,推荐用独立服务器版,这个版本只需启动一下服务器就可以了,另外你编译的DLL程序无需再改成.ESP即可被服务器认别。方便程序的调试。这部分内容,其实在ESP帮助里面说的再明白不过了,这里只作一下摘录。1、独立服务器版使用方法:一、把核心支持库krnln.fnr 和 esp.fne复制到服务器软件同目录下(必须)。二、把DLL插件用到的支持库也复制到服务器同目录下(易语言编的DLL要求一样)三、把DLL编译成扩展名为.DLL,不要用.ESP 。服务器会自动映射,比如:index.esp - index.dll ,而dll是不允许下载的。在网页里要用.esp。四、DLL一定要有一个名称为“网页接口”的导出函数(公开子程序),程序在这里编写。五、调试时不能用易语言IDE调断点,只能编译后在程序里插入:服务器应答类 添加到日志 (文本型 日志内容),来监视程序的运行过程,输出的日志内容在 日志ESPXXXXXXX.log 文件里查看,开头为ESP后面为当天的日期数字。六、启动服务器,默认目录为 网站根目录 (自行修改);IP为默认的(如有多IP可自行选择);TCP 端口默认为80;修改设置要停止服务器后再启动才生效。关闭窗口服务器并未退出,请按退出按钮或托盘图标的右键菜单。两个例子(源码在目录里):米亚罗的红枫留言板: 网站根目录index.e上传文件和COOKIE操作示范:网站根目录UpLoadupload.e上传文件保存的目录:网站根目录UpLoadimages编写DLL插件注意事项:和多线程DLL的原理一样,不要用全局变量传递数据(因为多用户同时访问同一个网页时,是调用同一个DLL,全局变量是同一的)。如果一定要读写全局变量或程序集变量,请用线程协调类(许可证)。 不要用易语言数据库,因为易库不支持多线程用户多指针,多用户同时访问时会冲突出现错误。 不要使用一些不支持多线程的命令、支持库和组件。 尽量避免易语言的错误,因为会立即退出DLL,使得资源没有得到正确释放,从而使增加内存垃圾。2007年7月2日云外归鸟2、IIS版云外归鸟的ESP安装说明一、支持库简介和原理:本支持库实现用易语言编写ISAPI程序,可通过浏览器与用户交互,可满足中小型网站的需要。所生成的网页实际上是易语言编译的DLL文件,并不是脚本文本。在IIS设置后,使用仿真解释器EmuEsp.dll载入和释放这些网页DLL,可有效防止DLL过载,修改重新编译网页DLL时,不必频繁的重启IIS,方便调试。本支持库命令基本模仿ASP函数,COOKIE特性与ASP完全一致,可通过COOKIE与ASP网页交换数据。二、安装支持库和相关文件把核心支持库krnln.fnr (不能用FNE)和“云外归鸟的ESP支持库”esp.fne复制到仿真解释器EmuEsp.dll的同目录下(注意:和上次版本不同,这次不是复制到系统目录,因为WIN2003对读取系统目录要求权限严格)。以及所用到的支持库也要复制到该目录(比如安装留言板例子需要用到“ADODB数据库操作支持库”ADODB2.fne)。实际上你解开压缩包后,只复制核心支持库krnln.fnr就可以测试例子了。三、IIS和仿真解释器的安装和设置首先,安装IIS(如果已经安装可跳过这步)控制面板-添加和删除程序-添加/删除WINDOWS组件:把 Internet 信息服务(IIS)勾选上,按下一步安装IIS。接着设置IIS关联解释器到网页DLL文件(例如:*.esp)。有两种方法:1、 你直接双击目录里“emuesp.reg”注册表文件,添加到注册表即可自动完成以下步骤。2、 手动按图示设置:控制面板-管理工具-Internet 信息服务在运行网页DLL的虚拟目录上右键菜单选属性:点击配置:按添加,出现对话框,参照上图填写(关联到esp文件,可任意设定)。仿真解释器EmuEsp.dll可放在硬盘任何一个地方,但注意不要被误删除。在WIN2003下安装前面步骤同上,再多以下步骤:点击Internet 信息服务里的WEB服务扩展。1、 点击“添加一个新的WEB服务扩展”。2、 点击“添加”把EmuEsp.dll的路径再添加一遍。3、 扩展名栏填上名称(比如:ESP),可随意填写,不一定是ESP。顺便把下面的“设置扩展状态为允许”勾上4、 如果上步没勾上,则按下图再设为允许:四、ISAPI程序的编写和调试ISAPI程序实际上是DLL文件,编写时在易语言选WINDOWS动态链接库,按多线程DLL规则编写,要求编写者具有易语言中高级水平编程水平,具有一定调试和网页编程经验。调用的网页DLL必须有一个函数名为“网页接口”的导出函数,该函数没有任何参数。系统产生的错误会直接显示到网页上,调试时可用“对象添加到日志(文本型 日志内容)”这个命令添加信息到同目录的“日志.log ”文件里,以确定错误产生的位置。编译时,如果解译器关联的是ESP扩展名,那么编译输出时就要用ESP扩展名,不能用.DLL。编写好后,在Internet 信息服务的浏览框里点击相应的网页调试如果不能重新编译源码覆盖原来的DLL文件,就是出现比较严重的错误,或者出现“501”错误,这时需要重启IIS了,重启IIS的方法有两种第一:在IIS设置(Internet 信息服务)里第二:在开始-运行命令“iisreset.exe”编写网页DLL注意事项: 和多线程DLL的原理一样,不要用全局变量传递数据(因为多用户同时访问同一个网页时,是调用同一个DLL,全局变量是同一的)。 不要用易语言数据库,因为易库不支持多线程用户多指针,多用户同时访问时会冲突出现错误。 禁止使用“置错误提示管理 ()”命令,该命令已经被仿真解释器使用。 不要使用一些不支持多线程的命令、支持库和组件。 修改已经上传到服务器的DLL网页文件时,请先停止IIS,以免上传过程中用户意外访问该文件造成IIS死锁。 不要在“DLL子程序”里声明调用易语言编写的DLL,会出现找不到支持库的错误。如要调用,请用ESP支持库里自带的“载入动态链接库”等功能函数来调用。 例程测试(比如你的是以80端口和根目录为本例程)留言板:/index.esp上传图片:/UpLoad/index.html以上是引用ESP自带的帮助说明,如果你从来没有接触过ESP,那么还请仔细的学习一下它,尤其是最后关于如何编写程序的相关说明,请注意,程序只能在编译后才能显示出效果的。三、ESP常用类应用实例写了一大堆,终于进入正题了!ESP类是ESP应用开发的强大工具,ESP共包含有13个类,使用这13个类,可以完成大多数Web应用设计所需要的功能。其中,有5个类是最常用的,它们是:应用全局变量类、客户请求类、服务器应答类、会话变量类、服务器类。下面。分别对这几个常用类做以介绍。1、利用“客户请求类”获取信息在开发交互式网页时,对服务器端和客户端交流信息方面的编程方法是最常用的。如留言板、BBS论坛、电子商城等都经常需要从客户端获得用户输入的信息(比如常见的注册),客户端通过浏览器在表单里输入留言后,怎样才能传到服务器的数据库里保存呢?ESP提供的“客户请求类”可以帮助我们,它是一个非常简单好用的内部类,利用它就可以使服务器轻松取得客户端的信息。1.1使用“取表单变量”方法获取信息上网时经常会碰到填写注册信息一类的界面,这就是HTML提供的FORM表单实现的,通常包括文本框、按钮、单选框、筛选框、下拉框等基本元素,填写完毕后,单击“确定”或“提交”按钮就可以将输入的信息传送到服务器上,然后可以调用相应的程序来处理该信息。下面是一个网页中简单的FORM语法应用示例:姓名:密码:性别:男女从来没有接触过网页代码的人可能不太明白,不要紧,这些代码其实可以用Dreamweaver网页编辑软件来生成。如图所示:启动Dreamweaver后,新建一个HTML页,然后插入一个表单,再在这个表单里面加入所需的要控件就行了。这时在代码区里面就会显示和上面蓝色代相似的表单代码。在ESP中,获取FORM表单中的信息就是用“取表单变量”方法来实现的。在用“取表单变量”获取方法获取信息时,前面的网页代码中,method方法一定要用post,也可不写,不写则默认为post。(注:post与get相对应)说了这么多还是用一个示例来说明。(1)启动易语言,新建一个windows动态链接库(不要告诉我你连这个也不会,要是这样那还是不要再学下去了)。(2)新建一个“网页接口”的子程序(不要问为什么,前面的ESP帮助都说的很明白了)(3)新建一个常量,取名“常量_表单”,把用Dreamweaver编辑好的一个表单网页以长文本的形式存入里面。如图:我们在编写ESP程序时,都要基于一个HTML网页代码来实现,HTML代码的生成最好还是用Dreamweaver来生成,这样会很方便。调用这个HTML网页代码的方法有很多种,这只是其中的种,我们还可以把网页存成文件来调用,也可在代码中直接写,就看你喜欢了。(4)接下来就是写代码了,如图:先说一下“服务器应答类”,我们后面会作详细介绍,这里我们只需知道它的一个方法“写出文本”就是在网页的代码中写出相应的文本,比如我们事先设计好的网页就是用这种方法写到页面上去的。前面几段代码不用多说了,有易基础的一定会看明白的,我只说说后面的代码: 局部_姓名 局部_客户请求类.取表单变量 (“user_name”) 局部_密码 局部_客户请求类.取表单变量 (“password”) 局部_性别 局部_客户请求类.取表单变量 (“sex”) 局部_爱好 局部_客户请求类.取表单变量 (“love”) 局部_职业 局部_客户请求类.取表单变量 (“career”) 局部_简介 局部_客户请求类.取表单变量 (“introduction”)“取表单变量”中的表单变量名称,如“user_neme”是和我们前面设计好的表单页面中的表单变量是对应的。就是下面这一句:姓名:那么到这里你应该明白了整个程序的运行流程了,先是把我们事先存好的网页写到浏览器里面,请注意,此时加入:如果真 (局部_客户请求类.取表单变量 (“user_name”) “”)这行代码,是为了保证等待用户填写表,点击“提交”按钮后,表单数据传回到服务器里,这时才会触发后面的代码。因为表单没有提交,这个变量就是空的。一旦不为空时证明用户提交了表单,接下来就是把表单中用户输入的数据赋值给相应的变量,接着再把这些信息以我们设定的格式显示到用户的浏览器中。具体可以看我提供的例程序源码。这里说说如何调试程序,首先编译我们编好的程序到一个指定的目录中。再启动ESP服务器,指定网站的根目录到我们刚刚编译的目录中,再打开浏览器,输入网址,比如我这里是:“0/刚刚编译的程序名(最好用英文).esp(不是dll)”如果你的ESP服务器用的不是80端口,那么这个地址还要改成:0:你用的端口号/刚刚编译的程序名(最好用英文).esp(不是dll)程序最终的显示效果如图:填写表单点击“确定”后的效果:1.2使用“取链接变量”方法获取信息在从一个网页向另一个网页传递信息时,可以利用“取表单变量”获取方法获取FORM表单的信息,还可以利用“取链接变量”方法取回标识在URL(也就是网页的地址)后面的所有返回的变量及其值。这个获取方法是非常有用的,当从一个网页向另一个网页传递数据时,都用“取表单变量”显然不方便,有时也不可行。下面举例说明“取链接变量”的使用。还是用Dreamweaver新建一个网页,页面中输入“显示”两个字,给这两个字加入超级链接“a.esp?name=东明&age=30”,存成一个网页,如:“two.htm”。(说明:“?”后面可以有多个参数,参数之间用“”连接)如图:在two.htm同目录中新建一个易windows动态链接库,其它方法同上,输入代码:按上一个例子方法调试运行,这里不同的是要先启动刚刚建的网页,如:“0/two.htm”,在显示的页面中点击“显示”,就会得到我们刚刚传过去的数据。效果如下:说明:上面的例子是为了演示如何利用“取链接变量”获取客户端信息的方法。该例子是在two.htm页中单击,然后显示a.esp的,也可以直接在浏览器地址栏里输入“/a.esp?name=东明&age=30”具体请看相对应的例程。2、利用“服务器应答类”发送信息过去做的网页主要是表态网页,对于表态网页向客户端输出信息很简单,直接用HTML语言写就可以了,而ESP是要生成动态网页,根据客户端的不同请求输出相应的信息,这就要靠“服务器应答类”来实现了。前面的示例已经多次用到了“服务器应答类.写出文本”方法,这里将更全面地介绍“服务器应答类”。2.1使用“写出文本”方法在“服务器应答类”对象中,“写出文本”方法可以说是最普遍、最常用的方法,它可以把信息从服务器端直接送给客户端,实际上就是在客户剖面动态显示内容。对于其用法,前面已有介绍,大家看例程就可明白其用法,这里就不多说了。2.2使用“重定向”方法在普通网页中,可以利用超链接引导客户至另一个页面,但是必须要客户单击超链接才行。可是有时希望自动引导客户至另一个页面,比如进行网上考试时,当考试时间到时,应自动引导客户端至结束界面。我们还是通过一例子来说明它用法:代码:运行结果:选择“老师”点确定后,网页被重定向到如下页:“重定向”方法在开发时是比较常用的,比如,在一些电子商务系统或其它管理系统中,一般不希望客户不从首页登录就直接访问其它页面,就可以在其它页面的开头加句代码,如果没有登录,就重回到首页。3、利用“会话变量类”存储信息在WWW页面中,利用超级链接,可以很方便地从一个页面到另一个页面。但是,这样也带来一个问题,怎样记载的信息呢?比如,在首页中输入了自己的用户名和密码,在其他页面还需要使用该用户名,那么用什么记住用户名信息呢?有人说可以用“客户请求类”的“取链接变量”方法一页一页传递下去,但是这样过于麻烦。各位易友都是开发过易语言的桌面应用程序的,都知道有全局变量,可以用全局变量记载信息,遗憾的是,在网页中无法让各个页面使用全局变量来记载信息。不过,ESP提供了一个“会话变量类”,利用它则可以实现上述要求。3.1“会话变量类”简介“会话变量类”可以用来记载一位客户端信息,即使该客户从一个页面跳到另一个页面,该“会话变量类”信息仍然存在。比如,可以用“会话变量类”信息记住客户输入的用户名信息,在其他页面中还可以用。特别需要强调的是“会话变量类”信息是对一个客户而言的,不同客户的信息用不同的“会话变量类”信息记载。是不是“会话变量类”信息一直有效呢?不是,“会话变量类”信息有它的有效期,ESP服务器系统默认为20分钟,如果祈望端超出20分钟不再向服务器提出请求或刷新Web页面,该“会话变量类”信息就会自动结束。有时候程序执行错误,就是超过有效期的问题。可以用“超时”属性来修改有效期长度,不过,该属性更改的有效期长度不能低于默认值,否则还是以默认值为准,也可以用“会话变量类”的“清除”方法随时强迫一个“会话变量类”结束。“会话变量类”的工作原理是比较复杂的,在一个应用程序中,当客户端启动一个“会话变量类”时,ESP会自动产生一个整数“会话ID”,并且把这个“会话ID”送回给客户端浏览器,浏览器会把这个“会话ID”存入在Cookies内(上网的人都听说过这个东西)。当客户端再次向服务器送出HTTP请求时,ESP会去检查申请表头的“会话ID”,并回应该“会话ID”对应的“会话变量类”信息。所谓Cookies,俗称甜饼,即在客户端计算机上有一小块区域,一般用来存放该客户的一些信息。如果客户端浏览器不支持Cookies或者客户端关闭了Cookies,自然“会话变量类”也就无法使用了。3.2利用“会话变量类”存储信息上面介绍的内容看起来很复杂,其实“会话变量类”的使用是比较简单的,可以把变量、简单的信息很容易地保存在“会话变量类”中。下面举一个例子来说明其用法:创建一个ESP程序,代码如下:这里我们创建了两个会话变量,当用户点击“单击显示用户名”时,跳到2.esp上,请看代码:这两段程序运行结果如下:事实上,上面举的例子很有实用意义,很多网站为了站客户必须在首页先登录,再访问其他页面,通常的做法就是判断相关的“会话变量类”变量是否为空,像上面的例子那样,如果不是从1.esp载入2.esp,而是直接载入2.esp,就会出现如下的效果:4、“应用全局变量类”对象“会话变量类”对象可以记载特定客户的信息,与此相反的是,“应用全局变量类”对象可以记载所有的客户信息。所有的客户通过“应用全局变量类”对象就可以互相交流信息了,最典型的是聊天室,大家的发言都存入到一个“应用全局变量类”对象中,彼此就可以看到发言内容了。不同的客户必须访问不同的“会话变量类”对象,但可以访问公共的“应用全局变量类”对象。4.1“应用全局变量类”简介“应用全局变量类”对象是让所有客户一起使用的对象,通过该对象,所有的客户都可以存取“应用全局变量类”定义为同一个名称的参数。“应用全局变量类”对象不像“会话变量类”对象有有效期限制,它是一直存在的,直到该应用程序停止。比如说,服务器重新启动,那么“应用全局变量类”中的信息就丢掉了。“应用全局变量类”对象也有它的方法,这里主要介绍“应用全局变量类”取变量、锁定、解除锁定的使用。4.2利用“应用全局变量类”存储全局信息和

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论