780 likes | 920 Views
2.4 动态网页技术. 2.4.1 动态网页的含义 2.4.2 客户端脚本 2.4.3 服务器端的脚本. 2.4.1 动态网页的含义. 动态页面的核心:在于接收用户数据 , 用于业务处理,存储到企业的 DB 中 , 或将处理结果及 DB 内容显示在网页上。 动态 重点不在如何获得数据(属数据层技术),更不在如何构建复杂的业务逻辑(逻辑层技术),而是 实现用户与应用程序的通信 ,及如何将所获数据显示出现,目标仍在网页上,即信息的表达上。. 2.4.1 动态网页的含义. 动态网页与静态网页的特征比较
E N D
2.4 动态网页技术 2.4.1 动态网页的含义 2.4.2 客户端脚本 2.4.3 服务器端的脚本
2.4.1 动态网页的含义 • 动态页面的核心:在于接收用户数据,用于业务处理,存储到企业的DB中,或将处理结果及DB内容显示在网页上。 • 动态重点不在如何获得数据(属数据层技术),更不在如何构建复杂的业务逻辑(逻辑层技术),而是实现用户与应用程序的通信,及如何将所获数据显示出现,目标仍在网页上,即信息的表达上。
2.4.1 动态网页的含义 • 动态网页与静态网页的特征比较 • 静态网页:静态网页主要通过标记语言完成信息的组织和显示。无商务逻辑处理及与用户进行交互的能力 • 内容固定不变,不随客户访问要求的改变而改变; • 页面文件预先储存在Web服务器上; • 通过超链接来访问其它的网页; • 可含有动画的内容 • 动态网页 • 内容随客户访问要求的改变而改变; • 内容的生成可在客户端完成(通过客户端脚本、Applet插件、ActiveX控件),也可在服务器端完成(通过服务器端脚本,如JSP、ASP、PHP); • 动态网页是连接商务表达层和商务逻辑层的桥梁 • 能与用户进行交互,根据不同客户请求来生成不同的页面内容; • 也可含有动画的内容
2.4.1 动态网页概述 • 实例:简易计算器的实现 P68.htm代码见备注 <script language="JavaScript" type="text/javascript"> <!-- function ex(x) { if(x=="=") window.document.form1.text1.value=eval(window.document.form1.text1.value); else if(x=="C") window.document.form1.text1.value=""; else window.document.form1.text1.value=window.document.form1.text1.value+x;}
2.4.2 客户端脚本 • 客户端脚本体系结构(如下图) • 一种向客户端提供动态内容的有效途径,是将脚本作为HTML页面的一部分从服务器传送给客户端,脚本通常不需与服务器应用程序通信就能在客户端执行的应用逻辑。 • 应用逻辑通常较简单,不要求显示新内容,也不做页面切换。 • 通常复杂逻辑仍由服务器执行,需要客户端给服务器新的请求,服务器处理后将结果返回给客户端,最终还是由脚本进一步处理 • 在这种结构中,程序在浏览器上执行,Web服务器必须把程序代码下传给浏览器,而浏览器也要能够执行服务器所传下来的程序代码。 • 优点:服务器与用户通信较少,需用的服务器资源少 • 支持该体系结构技术有:ECMAScript/JavaScript/Jscript,VBScript,DHTML
1. JavaScript脚本与实例 • 脚本是如何产生的? • 早期Web服务顺只能返回在URL里指定的文件的内容,网页只能显示静态内容,随Web应用广泛,要求交互功能。 • 最初动态由CGI技术实现,通过使用编程语言(C、VB)由服务器端执行。 • 为了提供客户端性能,由客户端执行一引起基本的逻辑操作和编程,而HTML不是一种编程语言,它本身不能做任何处理操作,就需要一种语言来指导计算机如何处理网页,这种自定义的命令集合就是脚本(Script)语言。 • 脚本特征:允许在Web页面的HTML中插入一些程序 • 脚本语言类型 • ECMAScript • JavaScript 网景公司 Netscape 2.0 • VBScript Jscript 微软公司 IE浏览器 • 静态网页的客户端实现技术 • 利用高级语言编写功能模块(Applet插件、ActiveX控件)嵌入HTML标记中 • 将客户端脚本嵌入HTML中(JavaScript、VBScript、JScript;)
<html> <head> <script language="JavaScript"> <!-- document.writeln("JavaScript脚本示例!"); //--> </script> </head> <body>…… </body> </html> 1、JavaScript脚本技术 • JavaScript是一种基于对象和事件驱动并具有安全性能的脚本语言,在客户端浏览器被解释执行,提供响应并具有处理用户交互事件的能力 • JavaScript在网页中有两种用法 • 直接加入HTML文档 • 一个实例 • 说明 • JavaScript脚本以<script language=“JavaScript”> </script>作为标记; • <!-- -->为说明语句,这样不支持JavaScript的浏览器就会忽略掉当中的脚本语句; • JavaScript脚本可放在HTML文件中的任意位置,在浏览器读到后就会解释执行。 • Document.write()是JavaScript的窗口对象方法,其功能是显示一串文字至HTML文件中。 • JavaScript中区分大小写 firstjs.html • 引用方式 • 要求有一个JavaScript源文件(以.js为扩展名)这种方式可提高程序代码利用率,其基本格式: • <script src=url language=“JavaScript”> </script> • 例:scriptjs.htm script.js 例:选创建一个Script.js文件,其内容为: document.write ("这是JavaScript!采用直接插入的方法! "); 在网页中这样调用: <script src="script.js" language="javascript"></script>
1)JavaScript的基本特点 • 是一种脚本编写语言,采用小程序段的方式实现编程。其基本结构如同C,C++,VB…,但不需编译,而是在程序运行过程中被逐行解释。 • 基于对象的语言 • 能运用自己已创建的对象 • 简单性 • 安全性 • 不允许访问本地硬盘,不允许将数据存入到服务器,不允许对网络文档进行修改和删除,只能通过浏览器实现信息浏览或动态交互 • 动态性 • 直接响应用户或客户输入 • 跨平台性 • 依赖浏览器本身,无操作环境无关
2)JavaScript语言与java区别 • 它们分属于两个不同的公司 ; • Netscape是嵌入web页面中的基于对象和事件驱动的解释性语言 • SUN 面向对象的程序设计语言 • JavaScript是基于对象的,而Java是面向对象的 ; • 两种语言在浏览器中执行的方式不一样 ; • 前者不需经编译,直接发送到客户端由浏览器解释;后者需经过编译,同时在客户端须具有相应平台的解释器 • 两种语言中对变量的使用方式不一样 ; • 前者是弱变量类型,即无须使用前声明,解释器在解释执行时再检查它的数据类型;后者强类型变量须在编译前先声明 • 代码格式不一样 ; • 前者是一种文本字符,可直接嵌入HTML中,可动态装载;后者代码格式与HTML无关,其代码以字节的形式保存在独立的文件中,HTML中须引用外媒体一样装载 • 嵌入方式不一样 • 前者<script>………</script>;后者<applet>………</applet> • 静态绑定和动态绑定 • 前者动态;后者静态
2. JavaScript中的数据类型与变量 • JavaScript有六种数据类型,分别为: • Number(数值数据)、String(字符串)、Object(对象) 以及 Boolean(布尔值)、Null(空) 和Undefined(未定义的数据类型) ; • Number:包括整数和浮点数。整数可以为正数、0或者负数;浮点数可以包含小数点,也可以使用科学记数法 ; • String:字符串,用单引号或双引号来说明 ; • Object:JavaScript中的重要组成部分,含有方法和属性。在JavaScript中,存在这几种类型的对象,一是由浏览器根据页面的内容自动生成的对象,如表单(Form)对象、框架(Frame)对象、链接对象等;二是内置对象,如Date、Math、window、document等;三是用户自定义的对象。
2.JavaScript中的数据类型与变量 • Boolean 类型:代表某种可能,其值为true或false。这是两个特殊的值,不能用1 和0来表示 ; • Null:表示没有任何值 ; • Undefined:表示一个变量被创建后,在未赋值以前所具有的值 ,如: var x; var y = true; 则y变量就成为一个Boolean 类型的变量,而x变量在赋值之前的类型暂时为Undefined . • 数据类型转换示例(与java有所不同): • var x=”123.0578”;//x为字符串 • x=parseFloat(x).toFixed(3);//小数点保留3位 • x=Math.round(parseFloat(x)*100);//四舍五入取整 • x=Number(“123”);//x的值为整数
3.JavaScript脚本中的对象与事件 • 对象 • 由浏览器根据web页面的内容自动提供的对象 • JavaScript的内置对象,如Date,Math、window、document等 • 服务器上的固有对象 • 用户自定义的对象 • 事件 • 引起页面之间跳转的事件,主要是超链接事件 • 浏览器自己引起的事件 • 表单内部同界面对象的交互事件
3.JavaScript脚本中的对象与事件 • 对象的定义与使用方式
3.JavaScript脚本中的对象与事件 • 对象的定义与使用方式 <script language="javascript"> function Dog(name,breed,color,sex) { this.name=name; this.breed=breed; this.color=color; this.sex=sex; this.eat=eatfun; } function eatfun(x) {document.write(x);} theDog = new Dog("Gabby","Lab","chocolate","girl"); theDog.eat("has ate!"); </script>
算术函数math对象 • 绝对值abs();正弦余弦值sin(),cos() • 反正弦反余弦:asin(),acos() • 正切反正切:tan(),atan() • 四舍五入:round() 平方根:sqrt() • 日期及时间对象 • 提供一个有关日期和时间的对象,必须使用new运算符创建一个实例。Mydate=new date(); • 获取日期的时间方法 • getYear();返回年数 getMonth();返回当月号数-1 • getDate();返回当日号数 getDay();返回星期几 • getHours();返回小时数 getMintes();返回分钟数 • getSeconds();返回秒数 getTime(); 返回毫秒数 • 设置日期和时间 • setYear();设置年份 setMonth()设置月份setDate()设置当前日期
4.JavaScript脚本中的变量及命名规则 • JavaScript中的变量用来存放JavaScript中的值 ,JavaScript对变量的数据类型要求不太严格(与Java、VB、C++等高级语言不同),所以在声明变量时,不需要指出变量的类型。 • 变量声明格式如:var men = true; • 变量命名规则 • JavaScript 是一种区分大小写的语言,因此将一个变量命名为 computer 和将其命名为 Computer是不一样的 • 变量名的第一个字符必须是一个字母(大小写均可)、或一个下划线(_)或一个美元符 ($),后续的字符可以是字母、数字、下划线或美元符 • 变量名不能是保留字 • 变量名长度没有限制
5.JavaScript脚本中的主要语句(1) function Name(x1,x2,x3,x4) { number=name.arguments.length; if(number>1) document.write(x2); if(number>2) document.write(x3); if(number>3) document.write(x4); } • 变量声明语句:var x,y; • 赋值语句:x=25.3; • 函数定义语句 : function 函数名称(函数所带的参数) { 函数执行部分; return 表达式; } • JavaScript中系统函数 • 返回字符串表达式中的值 • eval(字符串表达式)例:test=eval(“8+9+5/2”); • 返回字符串ASCII码 • unEscape(string); • 返回实数 • parseFloat(floustring); • 返回不同进制的数 • parseInt(numberstring,rad.X) parseInt(64,16)返回16进制的64十进制是多少 • 其中rad.X是数的进制,numberstring字符串数
5.JavaScript脚本中的主要语句(2) • 条件语句 (if…else),如 if (result == true) { response = "你答对了!" } else{ response = "你错了!" } • 分支语句 (switch),如 switch(expression) { case label1: 语句串1; case label2: 语句串2; case label3: 语句串3; ... default: 语句串3; } • 循环语句:for, for...in,while,break,continue • 对象操作语句:with,this,new • 注释语句://,/*...*/ • 数组定义
6.JavaScript几个实例 • 例1:p73.htm例2.5 <html><head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>显示日期</title> <script language="JavaScript" type="Text/JavaScript"> <!-- today=new Date(); document.write("现在时间是:",today.getHours(),":",today.getMinutes()); document.write("<br>今天日期为:",today.getMonth()+1,"/",today.getDate(),"/",today.getYear()); //--> </script> </head></html> 练习:请将此Script修改,使显示日期如右图所示p73_1.htm
JavaScript的事件驱动 • JavaScript事件驱动中的事件通过鼠标或热键的动作引发,主要的几个事件: • 单击事件onClick。作用对象有: • Button按钮对象 • Checkbox复选框或检查列表框 • Radio单选钮 • Reset buttons重设按钮 • Submit buttons提交按钮 例:<form <input type=“button” value=“改变”onClick=“change()”> </form> <input type=“button” value=“” onClick=alert(“这是一个例子”>; • onChange改变事件 利用text或texturea元素输入字符值改变时引发 例:<form <input type=“text” name=“Text” onChange=“check(‘this.test)”> </form>
JavaScript的事件驱动 • 获得焦点事件onFocus • 当用户单击text或textarea及select对象时,产生。此时该对象成为前台对象 • 失去焦点onBlur • 当对象text或textarea及select不再拥有焦点而退到后台时产生。与onFocus事件对应 • 载入文件onLoad 例autoload.html • 当文档载入时产生。onLoad一个作用就是在首次载入一个文档时检测cookie的值,并用一个变量为其赋值,使它可以被源代码使用 • 卸载文件onUnload • 当Web页面退出时引发onUnload事件,并可更新cookie状态
利用JavaScript制作动态网页 • P74.html例2.6 • <html> • <head> • <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> • <title>无标题文档</title> • </head> • <body onLoad="open('notice.html','通知','toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=yes,width=200,height=140')"> • 一个电子商务站点 • </body> • </html> • 说明:在JavaScript中,内置的窗口对象window有一方法:open,用它可打开一个新窗口,此方法的格式为:open('notice.html','通知','toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=yes,width=200,height=140')
2.4.3 利用Applet实现动态网页 • 当浏览器浏览到一个含有Applet小程序的HTML文件时,嵌入的Applet程序代码会自动地从服务器上下载到客户的浏览器中,交给浏览器中的Java虚拟机执行。这样,也能实现人机交互,并能进行必要的商务逻辑处理,实现与后台服务器的交互 ; • 能执行含有Applet网页的程序通常被称为Applet容器,因此,浏览器是一种Applet容器;在Java 2软件开发工具包1.4.1版中也有一个Applet容器,它就是appletviewer ; • IE浏览器,在初始状态下不是Applet容器 ,需要下载安装Applet插件;真正支持Applet动态网页的浏览器是Netscape7,(channels.netscape.com/ns/browsers/download.jsp)。
请求 Web Server HTML页面 Client (浏览器) 响应 后台 数据源 HTML Applet Socket连接 1. Applet插件与实例 • Applet是由java语言编写的包含在网页里的一种程序,称为java小程序,它不能独立运行,是特殊的客户端脚本。 • 通常该小程序在服务器上,当浏览器浏览一个含有Applet的网页时,它就从服务器端下载到客户端的浏览器中,借助浏览器中的java虚拟机(JVM)运行工作。这样,利用Applet就能实现人机交互,并能进行必要的商务逻辑处理,实现与后台服务器交互 • Java规定Applet不能对客户方文件系统进行操作,也不能启动客户方的任何程序,故对浏览者是安全的。但浏览器复杂度增高,客户端负担加重,同时需要大量的带宽便于每次执行时下载。 客户端执行逻辑图:
2.4.3 利用Applet实现动态网页 • 编写Applet动态网页的步骤 • 第一步,用Java开发工具编写一个符合Applet规范的Java源程序,源程序文件的扩展名当然应为.java; • 第二步,利用Java编译工具将此Java源程序编译成一个扩展名为.class的类文件; • 第三步,编写一个网页,在此网页中,利用“<applet>”标识,来嵌入此类文件,最后将网页文件和Applet类文件一起发布到网站上
JAVA Applet实例 • 利用Applet实现对商品总金额进行合计 • 第一步:编写源程序P75.java (代码见备注) • 第二步:利用命令javac p75.java进行编译生成p75.class • 第三步:编写网页p75.html • 第四步:测试p75.html 使用命令:appletviewer p75.html P75.html代码 <html> <head> <title>Applet Test</title> </head> <applet code="p75.class" width="400" height="120"></applet> </html>
例:利用Applet制作一个站点连接器 • P77.java p77.class p77.htm • 利用Applet制作一个站点连接器的动态网页。当在List框中选择某一站点时,浏览器就将显示该站点的内容。只需将站点的URL作为Applet Content接口的showDocument()方法的参数 <html><head> <title>site selector</title></head> <body> <applet code="p81.class" width="300" height="85"> <param name="title0" value="Java Home Page"> <param name="location0" value="http://java.sun.com/"> <param name="title1" value="上海师范大学"> <param name="location1" value="http://www.shnu.edu.cn/"> <param name="title2" value="Google search Engine"> <param name="location2" value="http://www.google.com/"> <param name="title3" value="上海热线"> <param name="location3" value="http://www.online.sh.cn/"> </applet> </body></html>
Applet动态网页实例 • 乘法练习egcf.java,egcf.html • 先写一.java文件(代码在备注中),经过编译生成.class • 再写一.htm文件,引用class文件,并将该文件存于网页文件同一目录中 • 浏览网页 • 可在IE中打开 • 利用命令appletviewer打开网页 • 更多客户端Script效果请参考Http://202.121.63.4/tang上的Script51问网页 <html> <head> <title> Applet Test </title> </head> <applet code=p77.class width=430 height=300 > </applet> </html> Q47.html;atom.class原子轨道 Q48.html;flag.class 红旗飘扬
浏览器 用户动作 内容和控制的产生 控制逻辑 业务逻辑 内容构建 请求 响应 2.5 服务器端脚本 • 服务器端逻辑体系结构 • 完全依靠服务器提供用户界面内容,其构造逻辑及与用户的相互作用如下图 • 服务器端的操作分三部分 • 控制逻辑:服务器收到客户端的请求,取出传递的参数并确定相应的“业务对象”,并进行适当的“业务动作” • 业务逻辑: • 处理特定业务知识,并与几乎所有的相关技术代码相分离,这些技术代码包括分析和生成数据格式,数据库和I/O处理,或内在和进程处理 • 内容构造:执行业务逻辑之后的结果会被格式化,并可辅之以布局和其他一客户端显示所需的信息。
2.5 服务器端脚本 • 服务器端的脚本是指能够在服务器上运行的脚本,其脚本形式与客户端的脚本没有太大的差别,也是将脚本直接嵌入到网页中。但不同的是,在网页被传送到浏览器之前,服务器会预先运行网页中的服务器端脚本,运行产生的结果合并到HTML中。 • 与客户端脚本相比优势: (1)不存在浏览器兼容的问题,所有浏览器收到的都是标准的HTML代码; (2)可以很容易地访问服务器上的资源; (3)在存取敏感数据时,较为安全,脚本直接在服务器上执行,身份等敏感信息不可能暴露到客户端上; (4)简化了客户端的装载,脚本的执行由Web服务器承担。 • 常用的服务器端的脚本有JSP、PHP、ASP、CGI、Servlet等
2.5.1 PHP • PHP(Personal Hypertext Preprocessor,个人超文本预处理器)是一种易于学习和使用的服务器端的脚本语言,它将自己的标记嵌入在HTML文件中,其语法大部分是从C、JAVA、PERL语言中借用过来的,并形成了自己的独有风格 ; • PHP安装方便,简单易学 ; • 在PHP中提供了标准的数据库接口,可以连接多种类型的数据库,和自由代码的MYSQL数据库配合更是“天衣无缝” 。 • 下载:www.php.com
2.5.1 PHP • PHP的安装与设置 • 安装appserv • ( http://www.appserv.com) • 安装 apache+php+mysql • (http://www.php.com 、 http://www.mysql.com、 http://www.appserv.com) • 测试: http://localhost/phpinfo.php <?php phpinfo(); ?>
<html> <head> <title>电子商务应用的安装</title> </head> <?php $pagesize = 5; //每页显示5条记录 $host="localhost"; //Mysql数据库管理系统的域名 $user="root"; //Mysql数据库管理系统的登录用户名 $password="111111";//Mysql数据库管理系统的登录用户密码 $dbname="book"; //数据库名称 //登录到MySQL数据库管理系统 mysql_connect("$host","$user","$password") or die("无法连接MySQL数据库服务器!"); mysql_query("drop database if exists ".$dbname); //若book数据库已存在,则删除它 mysql_query("create database ". $dbname); //建立book数据库 $db = mysql_select_db("$dbname") or die("无法连接数据库!"); //打开数据库book echo "Now will insert the database structure<br />"; $structure[] = " CREATE TABLE users ( id int(10) unsigned NOT NULL auto_increment, loginname text NOT NULL, user text binary NOT NULL, password text NOT NULL, department text, title text, role text NOT NULL, approved tinyint(3) unsigned NOT NULL default '0', PRIMARY KEY (id) ) TYPE=MyISAM;"; $structure[] = " CREATE TABLE employees ( id int(10) unsigned NOT NULL auto_increment, no text, user text binary NOT NULL, department text, title text, sex text, birth date, PRIMARY KEY (id) ) TYPE=MyISAM;"; $i = 0; //建立数据表users和employees while($i < count($structure)){ echo " Inserting Table No. ".($i+1); mysql_query("set names GBK"); mysql_query($structure[$i]) or mysql_error(); echo "...Done!<br />"; $i++; } echo "...Done!<br />"; echo "set users initial value...<br />"; mysql_query("set names GBK"); mysql_query("INSERT INTO users SET id=1,loginname='admin',user='admin',password='123456',role='1',approved=1"); echo "...Done!<br />"; ?> </html> 2.5.1 PHP • 示例1:数据库的生成与数据表的建立
2.5.1 PHP <?php $success=true; $filecount=0; $filename=""; $failurefilename=""; $dir="c:/".substr(date("Y-m-d"),0,4); if(!is_dir($dir)) mkdir($dir); for($i=0;$i<4;$i++) { if($_FILES['upfile']['tmp_name'][$i] != "") { $result=move_uploaded_file($_FILES['upfile']['tmp_name'][$i],$dir."/".$_FILES['upfile']['name'][$i]); if ($result){ $filecount=$filecount+1; $filename.=$_FILES['upfile']['name'][$i].","; } else { $success=false; $failurefilename.=$_FILES['upfile']['name'][$i].","; } } } //end for if($success && $filecount>0) { ?> <html> <head> <title>上传文件结果</title> </head> <body > <table border="0" width="80%" cellspacing="0" cellpadding="0" > <tr><td>文件:<?=$filename?>已成功上传,共计<?=$filecount?>个文件</td></tr> <tr><td> </td></tr> <tr><td> </td></tr> <tr><td align="center"><input type='button' value='关闭窗口' onclick='window.close()' /></td> </tr> </table> </body> </html> <?php exit; } else { ?> <html> <head> <title>上传图像文件</title> </head> <body> <?php if($filecount>0) echo "<font style='font-color:red'>文件:".$failurefilename."上传失败,请重新上传</font><br>"; else echo "<font style='font-color:red'>文件上传失败,请重新上传</font><br>"; ?> </body> </html> <?php } ?> • 示例2:利用PHP脚本实现文件的上传 • 步骤1:建立网页文件upload.htm,存放到站点根目录下 ; • 步骤2:建立脚本文件upload.php,存放到站点根目录下 ; • 运行 <html> <head> <title>上传文件</title> </head> <body> <form target="_self" enctype="multipart/form-data" action="upload.php" method="post"> <table border="0" width="80%" cellspacing="0" cellpadding="0" align="center"> <tr><td aligh="left">请指定文件: <input type="hidden" name="max_file_size" value="8000000"></td></tr> <tr><td><input name="upfile[]" type="file" size=40></td></tr> <tr><td><input name="upfile[]" type="file" size=40></td></tr> <tr><td><input name="upfile[]" type="file" size=40></td></tr> <tr><td><input name="upfile[]" type="file" size=40></td></tr> <tr><td> </td></tr> <tr><td><input type="submit" value="上传文件"> <input type='button' value='关闭窗口' onclick='window.close()' /></td></tr> <tr><td> </td></tr> <tr><td> </td></tr> <tr><td><font color='blue' size="1">说明:一次最多上传四个文件,每个文件大小应小于8M字节</font></td></tr> </table> </form> </body> </html>
2.5.2 ASP • ASP(Active Server Page,活动服务页),是微软公司开发的一种服务器端的脚本技术,它没有提供自己专门的编程语言,而是允许用户使用包括VBScript、JavaScript等在内的许多已有的脚本语言来编写ASP的应用程序。 ASP吸收了当今许多流行的技术,如IIS、ActiveX、VBScript、ODBC等,是一种发展较为成熟的Web应用程序开发技术;其核心功能支持对象组件,通过使用ASP的组件和对象,调用ActiveX控件,可实现强大的商务功能 。 • 后台(服务器端):Windows NT/2000 +IIS Windows 98+PWS 4.0(Personal Web Server) • 前台(客户端):网页浏览器Browser • ASP文件特点:将VBscript、或JavaScript嵌入到HTML中 • 在ASP中,脚本在服务器端运行,当客户请求一个ASP文件时,服务器就把文件解释成标准的HTML文件发回客户端。 • 在服务器端运行的好处:不受客户端浏览器限制,便于和服务器交换数据,如存取数据库。
2.5.2 ASP • 优点: • VBScript源自VB,简单易学; • 脚本语言直接嵌入HTML文档,无需编译、连接就可以解释执行; • 利用ADO组件轻松存取数据库; • 面向对象编程,可扩展ActiveX Server组件功能; • 不存在浏览器兼容问题; • 可隐藏源程序代码 • 缺点: • 运行速度比HTML慢; • ASP一般限于Windows NT/2000平台,不能跨平台
2.5.2 ASP • 常用的内置对象和组件主要有: (1)Request对象:用来连接客户端的Web页(.htm文件)和服务器的Web页(.asp文件); (2)Response对象:用于将服务端数据发送到客户端; (3)Server对象:它可以创建各种Server对象的实例以简化用户的操作; (4)Application对象:它是应用程序级的对象,用来在所有用户间共享信息,所有客户都可以访问这个对象。 (5)Session对象:它为每个访问者提供一个标识;Session可以用来存储访问者的一些数据,在购物网站中,Session常用于创建购物车(Shopping Cart)。
ASP中常用的内置对象和控件 1)Request对象:用来连接客户端的Web页(.htm文件)和服务器的Web页(.asp文件),可以获取客户端数据,也可以交换两者之间的数据。 • Request对象共有五种获取方法,分别是: • QueryString、Form、Cookies、ServerVariables、ClientCertificate • 语法: Request.获取方法(参数) 例如: <% Request.Form(“user_name”) ‘获得表单中的用户名 %> 例:eg3_3.htm eg3_3.asp
ASP中常用的内置对象和控件 2)Response对象:用于将服务端数据发送到客户端,可通过在客户端浏览器显示,用户浏览页面的重定向以及在客户端创建cookies等方式进行。该功能与Request对象的功能恰恰相反。 • Response对象可以使用的方法有下面三个: • Write:直接送出信息给客户端。 • Redirect:引导客户端至另一个URL位置。 • End :结束程序运行 • Cookies:设置Cookies值。 • 可以使用的属性有下面两个: • Buffer:设置为缓冲信息。 • ContentType:控制送出的文件类型 • 若在<%……%>间只有一行Response.Write语句,则可将它简写成<%=……%>,如:下面两句等价 • <% Response.Write Now %> • <%=Now %> 例:char2\eg3_4.asp(源代码见备注)
ASP中常用的内置对象和控件 3)Server对象:许多高级功能都靠它来完成;它可以创建各种Server对象的实例以简化用户的操作如:COM对象和Scripting组件 • 语法为: • Server.方法|属性 (变量或字符串|=整数) • 常见的属性有ScriptTimeout(脚本运行时间) • 方法主要有 • CreatObject • <%Set db=Server.CreateObject(“ADODB.Connection”) ‘建立数据库实例%> • HTMLEncode 对特殊符号进行编码,如显示原始标记等 如eg3_5.asp <% Response.Write Server.HTMLEncode (“<a href=http://www.sohu.com>搜狐</a>”) %> • URLEncode:根据URL编码原则将字符串编码,用来转化字符串 • <%=Server.URLEncode(“<a href=’http://www.sohu.com’>搜狐</a>”)%> • 输出: • %3Ca+href%3D%27http%3A%2F%2Fwww%2Esohu%2Ecom%27%3E%CB%D1%BA%FC%3C%2Fa%3E • MapPath:将虚拟路径或相对路径转换为真实路径 • 例:eg3_5_1.asp
利用数据库存取组件存取数据库 • 常用的数据操作对象ADO • ASP网页制作中,用来存取数据库的对象统称为ADO(ActiveX Data Objexts)。 • 包含子对象有七个,其中主要的有: • Connection对象:负责打开或连接数据库文件。如:可以使用该对象建立与Access数据库的连接,以便查询、操作数据库 • Recordset对象:用来读取数据库(表)的数据。如:可以把一组查询结果记录赋给该对象,再利用该对象的属性和方法来操纵它们 • Command对象:用来代表一个特殊的指令。如:可以使用该对象来执行一条SQL查询语句
(1)Server对象的属性和方法 • ScriptTimeout属性 • 该属性用来规定脚本文件执行的最长时间,比如,如果系统创建一个数据库连接,如果超过规定时间还没有连接上就停止连接。默认为90秒: • 语法: • Server.ScriptTimeout=整数(秒) • 例如: • <% Server.ScriptTimeout=300 ‘设置最长执行时间为300秒%>
(2) CreateObject方法 • Server的一种方法,用途是:建立一个具有某种功能的对象(一般可以建立一个已经在服务器上注册的ActiveX Server的组件变量实例),它可以是ASP的内部组件,如数据库存取组件,也可以是第三方提供的组件(如Windows中.dll文件)。语法很简单: Set objectname=Server.CreateObject(ObjectGroup.ObjectName) • Objectname:代表建立的对象变量的名称 • ObjectGroup:代表对象库,它包含很多对象,也就是对象的总集合 • ObjectName:代表对象库中的一个对象 • 例如: <%Set db=Server.CreateObject(“ADODB.Connection”) %> ‘建立数据库实例
(3)HTMLEncode方法 • 该方法功能是将特殊的符号进行编码,使得特殊符号可以正常显示于客户端的浏览器。(即用来输出为ASCII形式的HTML代码),语法: • Server.HTMLEncode(“string | specialcharacter”) • String和specialcharacter代表想显示在浏览器中的字符串或特殊符号 • 常使用该方法的地方是访客留言板和聊天室。若要在客户端写入特殊符号,如< > & 等符号或HTML标记,就可使用Server.HTMLEncode方法对特殊符号进行编码,当客户端的浏览器收到这种经过编码的特殊符号时,会对它们进行译码,然后把译码的结果显示出来。 <% Response.Write Server.HTMLEncode (“<a href=http://www.sohu.com>搜狐</a>”) %>
HTMLEncode方法示例 server.asp <HTML> <HEAD> <TITLE> server示例</TITLE> </HEAD> <BODY> 这是一个Server示例,用于显示特殊符号,网站地址全名等<p> <% = "<a href=http://www.sina.com.cn> 新浪</a>" %><br> <% = server.htmlencode("<a href=http://www.sina.com.cn>新浪</a>")%><br> <%=server.htmlencode("显示HTML标记<h2></h2>")%><br> <%=server.htmlencode("显示特殊符号< > &") %> </BODY> </HTML>
(4) URLEncode方法 • 该方法根据URL(Uniform Resource Location)编码原则将字符串编码,用来转化字符串。语法如下: • Server.URLEncode(字符串) • 例如: • <%=Server.URLEncode(“<a href=’http://www.sohu.com’>搜狐</a>”)%> • 输出: • %3Ca+href%3D%27http%3A%2F%2Fwww%2Esohu%2Ecom%27%3E%CB%D1%BA%FC%3C%2Fa%3E
(5) MapPath方法 • MapPath方法将虚拟路径或相对路径转换为真实路径。语法如下: • Server.MapPath(URL虚拟相对路径字符串) • 在何种情况下,需要将虚拟或相对路径转换成绝对路径呢? • 在连接文件或数据库之前。 • 原因是ASP规定我们在连接文件或数据库时,必须指定文件(数据库)的实际路径,这时就必须调用Server.MapPath方法。
MapPath方法示例 server1.asp <HTML> <HEAD> <TITLE> server示例</TITLE> </HEAD> <BODY> 这是一个Server.MapPath示例<p> <%=server.MapPath("server1.asp")%><br> </BODY> </HTML>
(6)Execute方法 • 方法功能:暂停执行当前网页,转到新的网页执行,执行完毕后返回原网页,继续执行Execute后的语句。语法如下: Server.Execute(变量或字符串) 例:execute.asp