610 likes | 802 Views
ASP 动态网页制作. 哈三中 朱坤. 总目录. 一、动态网页设计基础 二、 asp 的内部对象 三、数据库应用 四、 ASP 的安全问题. 一、动态网页设计基础. 动态网页设计初步 HTML 语法 (略) Vbscript 的基本语法. 总目录. 1、动态网页设计初步. 什么是服务器、客户端 什么是静态网页、动态网页 动、静网页的工作原理 ASP 简介. 上级目录 总目录. 什么是服务器、客户端. 服务器 —— 提供服务的计算机 客户端 —— 接受服务的计算机. 什么是静态网页、动态网页.
E N D
ASP动态网页制作 哈三中 朱坤
总目录 • 一、动态网页设计基础 • 二、asp的内部对象 • 三、数据库应用 • 四、ASP的安全问题
一、动态网页设计基础 • 动态网页设计初步 • HTML语法 (略) • Vbscript的基本语法 总目录
1、动态网页设计初步 • 什么是服务器、客户端 • 什么是静态网页、动态网页 • 动、静网页的工作原理 • ASP简介 上级目录 总目录
什么是服务器、客户端 • 服务器——提供服务的计算机 • 客户端——接受服务的计算机
什么是静态网页、动态网页 • 静态网页——无法实时对不同的网页浏览状况做出响应,如:不同浏览者、不同的浏览行为或不同的浏览时间等。因此,这类单纯由HTML所建构的无法与使用者产生互动的网页,被称之为静态网页。 • 动态网页——能让网页依照不同的情况做出动态的响应的网页,称之为动态网页。这类网页不仅含有HTML标记而且含有程序代码。 上级目录
发送请求 服务器端 1、接受请求 2、找到静态网页 3、发送网页 客户端 发回网页 发送请求 服务器端 1、接受请求 2、找到动态网页 3、执行程序代码, 生成静态网页 4、发送网页 客户端 发回网页 动、静网页的工作原理 • 静态网页 • 动态网页
Active server page——动态服务器端网页 • Asp是微软推出的动态服务器网页技术,它不是一种语言,而是指由WEB服务器所提供的一个网页语言执行环境,能提供这种执行环境的WEB服务器有:PWS、IIS、APACHE等。 • ASP网页的扩展名为.asp。ASP网页本身不限定使用哪种网页语言,一般使用VBSCRIPT和jscript。其它语言需要在WEB服务器上安装解释器。 上级目录
程序开发环境的建立 • 单机 • TCP/IP协议 • PWS或IIS • 特殊的127.0.0.1:代表本机的IP地址,也可用LOCALHOST。 上级目录
WEB服务器的安装与架设 • PWS的安装 • IIS的安装 • WEB站点的建立 上级目录
网页开发工具 • 记事本 • Frontpage • Dreamwaver • Visual interdev • Editplus 上级目录
一个简单的asp文件 <!--普通的html标记,将欢迎光临我的网站!用红色字体输出--> <p align="center"><font size=7 color=red>欢迎光临我的网站!</font></p> <p align="center">现在的日期和时间是: <%'执行在服务器端的代码 '把现在的系统日期和时间赋值给变量shijian Shijian=now '显示目前的系统日期和时间 response.write shijian %> <script language="vbscript"> <!--'执行在客户端的代码 msgbox "欢迎光临我的网站!" --> </script>
Asp语法简介 • Asp文件的基本组成 Asp文件可以包含下面三个部分 • 普通的HTML标记。 • 服务器端的script程序代码,位于<% %>内。 • 客户端的script程序代码,位于<script language=script语言><!-- --></script>内。
Asp文件的约定 • 所有的在服务器端执行的script程序代码均须放在<%%>符号之间,在客户端执行的script程序代码均须放在<script language=script语言><!-- --></script>之间。 • Asp中默认的脚本语言是vbscript,如果要使用其他语言可以在文件的第一行用<%@language=javascript%> 标记。
开发asp程序时的注意事项 • 字母不区分大小写。 • 除了在字符串中出现的标点符号外,所有用到的标点符号必须在英文状态下输入。 • Asp语句必须每行一句,不能多句一行。 • 养成良好的书写习惯,恰当的利用缩进,方便自己阅读。 • 多用标注注释程序,以便增加程序的可读性。 • 尽量强制声明变量,避免因变量名错误而增加除错的难度。注意变量名不能用保留字。
2、vbscript的基本语法 • 数据类型、常量与变量 • 数组的声明 • 运算符 • 内建函数的使用 • 流程控制 • 子程序与函数 总目录
数据类型,Vbscript中只有一种数据类型,称为variant(变体类型),根据不同使用方式,它可以包含不同的数据类别信息,如下:数据类型,Vbscript中只有一种数据类型,称为variant(变体类型),根据不同使用方式,它可以包含不同的数据类别信息,如下: 1、empty 2、null 3、boolean 4、byte 5、integer 6、long 7、single 8、double 9、date(time) 10、object 11、error 一般情况下,variant会将其代表的数据子类型自动转换,但有时候也需要函数来进行强制转换。 数据类型、常量与变量 上级目录 总目录
数据类型、常量与变量 • 常量声明 const const_pi=3.1415926 或PI=3.1415926,让人一看变知是常量。 • 变量的声明 1、明确声明 语法:dim a 明确声明a 变量 dim a,b,c 多个变量声明用,隔开 2、模糊声明 var_a=2 ‘直接给变量赋值,坏处是如果不小心把变量名打错,将被视为另一个变量。 3 、强制声明变量 在编写代码前用<%option explicit%>代码限定。 注意:常量、变量名可以使用字母、数字、下划线等字符,但第一个字符必须是英文字母,中间不能有标点符号和运算符号,不能是vbscript的关键字,长度限制为255个字符。声明的常量和变量仅仅在声明它的网页中有效。 上级目录 总目录
Dim name(数组大小-1) 利用ARRAY函数给数组赋值 数组变量名=array(元素值1,元素值2,……,元素值n) 定义变长数组 先Dim a() 后redim a(n) n可以是具体的数字也可以是变量.注意不可以直接定义这样的数组dim(n),n为变量. 多维数组 Dim name(n-1,m-1) 数组的声明 上级目录 总目录
运算符 高 优先次序 低 高 优 先 次 序 低 上级目录 总目录
常用符号 上级目录 总目录
Vbscript函数 • 所谓函数可以理解为别人将一些复杂的功能编好,当我们需要时只要用就可以了。 • 常用的几个vbscript函数 • 转换函数 Cstr(variant)将变量转换为字符串类型 Cdate(variant)将变量转换为日期类型 Cint(variant)将变量转换为整数类型
2、字符串函数 • Len(string)返回字符串的字符数目 • Trim(string)将字符串前后的空格去掉 • Mid(string,start,length)从string字符串的start字符开始取得length长度的字符串。 • Lcase(string)将所有大写字母变成小写 • Ucase(string)将所有小写字母变成大写
2、字符串函数 6、Replace(string1,find,replacewith)返回字符串,其中指定数目的子字符串(find)被替换为另一个子字符串(replacewith) 7、Strcomp(string1,string2)比较两个字符串,字符串1或2为null时返回null,字符串1小于2时返回-1,大于2时返回1,等于2时返回0。 8、Instr(string1,string2)搜寻字符串2在字符串一中的位置,找不到为0
3、日期和时间函数 • Date()取得系统当前日期 • Time()取得系统当前时间 • Now()取得系统当前的日期和时间 • Weekday(date)取得给定日期是星期几1表示星期日,依次类推。
4、数学函数 • Int(num)返回一个小于等于num的整数 • Rnd()返回一个0到1的随机数 产生随机数的例子 <%randomize ‘初始化随机数,否则每次取出的数都一样 num=int(10*rnd()+1) ’rnd()函数产生的大于0小于1的小数,所以当我们要取出1——10的整数时必须把他*10然后再+1,最后取整。 response.write num%> 尝试取1-60的整数
流程控制 • 判断结构语法 1、If 条件式 then 程序语句 End if 2、If 条件式 then 程序语句一 else 程序语句二 End if 3、If 条件式a then 程序语句一 elseif 条件式b then 程序语句二 elseif…… …… End if 4、If 条件式a then if 条件式b then 程序语句一 else 程序语句二 end if else if 条件式c then 程序语句三 else 程序语句四 End if End if 上级目录 总目录
Select case 表达式 case 条件式一 程序语句一 case 条件式二 程序语句二 …… Case else 程序语句N End select Select case 判断语句 上级目录 总目录
For 记次变量=起始值 to 停止值 step 变动值 程序代码 next For i=1 to 10 step 1 for j=1 to 10 step 1 程序代码 next next For …next 循环 上级目录 总目录
1、do while 条件 …… loop 2、do until 条件 …… loop 3、do …… loop while 条件 4、do …… loop until 条件 5、do …… if 条件 then …… exit do end if …… loop Do …loop循环 上级目录 总目录
子程序的声明 Sub name(参数1,……,参数n) …… End sub 调用子程序 Call name(参数1,……,参数n) 或者直接用子程序名称调用。 子程序的声明位置 不限定,在调用后声明也可以。 函数的声明 Function name(参数1,……,参数n) …… name=表达式 …… End function 函数的调用 Name(实际参数1,……,实际参数n) Vbscript的内建函数 详见手册 子程序与函数 上级目录 总目录
二、asp的内部对象 • Asp的内部对象概述 • 数据输入窗体与Request对象 • Response对象 • Cookies的使用 • 文件操作 总目录
Asp的内部对象概述 • 所谓对象,就是把一些功能都组合好了,我们不用了解他怎么工作,只需要知道他们的功能去使用他们就可以了。可以理解对象为一个职能部门(如邮局),当你需要这个部门所能做的工作时,你只需要去让他做就可以了。 • Asp中常用的内部对象
2、数据输入窗体与Request对象 Request对象获取客户端信息的5种方法 1、form,取得客户端在form表中所输入的信息(应用最多) 2、querystring,从查询字符串中读取用户提交的信息 3、cookies,取得客户端浏览器的cookies信息 4、servervariables,取得服务器端环境变量信息 5、clientcertificate,取得客户端浏览器的身份验证信息 上级目录 总目录
窗体的建立 • 建立窗体的语法 <form action=响应窗体的文件的路径 method={post|get} name=窗体名称> 窗体中的控件 </form> • 窗体中控件的类型,主要有以下几种: 1、指令按钮 2、文字方块 3、文字区控件 4、下拉菜单 5、多选钮 6、复选框 7、隐藏控件 用户注册页面使用的较全 • 数据传递的方法 post 在地址栏隐藏传递的数据,获取数据的方法 request(“控件名”) get 在地址栏显示传递的数据,获取数据的方法 request.querystring(“控件名”) 上级目录 总目录
3、Response对象 • Response.write “……”数据输出语句 也可用<%=字符串/变量%>,只能输出一行 • Response.redirect “a.htm” 让网页转弯 在<html>标记前使用 • Response.end 强制中止网页的输出 • Resposne.buffer=true/false 控制数据是否经过缓冲区 在<html>标记前使用 上级目录 总目录
4、Cookies • Cookies是一个存储于客户端,供浏览器与WEB服务器互通数据的纯文本文件。当IE被执行时,将会在计算机中产生一个COOKIES,等到IE关闭后,这个COOKIES便被删除,并且同一台计算机的每个单独运行的IE都有一个专属的COOKIES。 我们可以将某些数据存储于cookies中,供执行程序时使用,这种变量我们称为COOKIES变量。 • COOKIES数据的存储与取得 存储 :response.cookies(“name”)=values 取得 :变量=request.cookies(“name”) 注意:使用cookies时,必须打开缓冲区 用户登录例子 上级目录 总目录
5、文件操作 在ASP网页中我们可以把数据存储在服务器端的文件中,通过scripting.filesystemobject对象实现 • Filesystemobject对象建立 通过这个对象我们可以服务器端计算机上执行文件的建立、打开、删除等工作。语法如下: Set 变量名=server.createobject(“scripting.filesystemobject”) • 文件的建立、查看与删除 1、文件的建立 Set 变量名=filesystemobject对象.createtextfile( 文件路径名称[,是否覆盖[,文件格式]]) [是否覆盖]默认为false [文件格式]默认为true为unicode,false为ascII格式。 2、文件的删除 filesystemobject对象.deletefile( 文件路径名称[,删除只读文件]) [删除只读文件]默认为false不删除。
5、文件操作 • 查看文件是否存在 filesystemobject对象.fileexists( 文件路径名称) 若文件存在则传回true,反之传回false • 取得服务器端磁盘路径 如果我们想将文件建立在某个虚拟目录下时,我们要借助server对象的mappath方法,取得web站点上的虚拟目录所对应的路径。其语法如下: server.mappath(虚拟目录路径) • 文件的打开 打开存在于服务器端的文本文件语法如下: Set 对象变量= filesystemobject对象.opentextfile( 文件路径名称[,输入/输出模式[,建立新文件]]) [输入/输出模式]1,只读(默认)。2,只写,先清除原有数据,再写入。8,将数据 写入文件尾 [建立新文件]默认值为false,设定欲打开文件若存在时,是否覆写。
5、文件操作 • 从文件中取得数据 1、文件结尾的判断 文件对象变量.atendofstream 传回值为true则表示文件尾 2、读取数个字符 文件对象变量.read(n) N为数字,表示读取文件中N个数字 3、读取一行 文件对象变量.readline 4、读取文件所有字符 文件对象变量.readall
5、文件操作 5、略过数据不读 文件对象变量.skip(欲略过的字符数) 文件对象变量.skipline 略过一行 • 将数据写入文件 文件对象变量.write(写入字符串) 文件对象变量.writeline(写入字符串)与write不同的是在字符串后加上换行字符。
三、数据库的应用 • 数据库应用与ADO对象 • SQL语言的使用 • 利用Recordset对象修改记录 总目录
1、数据库应用与ADO对象 • Asp网页与数据库 • 数据库连接的建立 • 从数据库取得数据 上级目录 总目录
Asp网页与数据库 • ASP网页可以连接的数据库 access、mysql、sqlserver、oracle等 • Ado对象 当你安装PWS/IIS时,将在计算机上一并安装ADO对象(ACTIVEX DATA OBJECT)。在ASP网页中便是运用它们来操作数据库的。下面我们将学习ADO对象的基本操作,以及利用sql语言和recordset 对象配合ADO来实现数据库的查询/新增/删除/修改等。 上级目录 总目录
留言板的设计 • 数据库的建立 建立一个ACCESS数据库名称为“liuyanban”,建立“liuyan”表,字段有 name用来记录留言者姓名 neirong 用来记录留言内容 shijian用来记录留言发表时间 • 留言板例子 上级目录 总目录
数据库连接的建立语法 三种连接ACCESS数据库的方法 set cnndb=sever.createobject(“adodb.connection”) ‘建立一个数据库连接对象,并设定由cnndb对象变量引用 完成连接对象的建立后,必须调用OPEN方法打开数据库 cnndb.open 连接字符串,使用者帐号,密码 1、直接连接数据库时,连接字符串格式为: “Provider=microsoft.jet.oledb.4.0;data source=“& server.mappath(“./liuyanban.mdb”) 2、连接系统DSN 设定系统DSN——cnndb.open “liuyanban” 3、连接文件DSN 设定文件DSN——cnndb.open “filedsn=“&server.mappath(“./liuyanban.mdb”) 4、系统DSN和文件DSN的建立 98系统 控制面板——odbc数据源——系统/文件DSN——microsoft access drivers——添加…… 上级目录 总目录
从数据库中取得数据 • Recordset对象的建立 Recordset对象就好象是一个从数据库中取得的虚拟数据工作表,我们通过记录指针来操作这个表。一次只能操作一个记录,这个记录就是记录指针所指向的记录,该记录称之为当前记录。通过recordset对象的movefirst(移至第一笔)、moveprevious(移至上一笔)、movenext(移至下一笔)、movelast(移至最后一笔)这四个方法,控制记录指针所指向的记录。 • recordset对象建立的语法: set 对象变量=server.createobject(“adodb.recordset”) recordset对象建立后,要用open方法,才能打开一个记录集并设定使用的记录指针 recordset对象变量.open 数据源,数据链路,指针型态,锁定方式,选择 • 参数说明: 数据源:数据表的名称 数据链路:已建立的connection对象变量 指针型态:设定recordset对象打开的记录集所使用的记录指针类型。 0为默认值,打开一个向前记录指针。仅能向前移动读取记录,执行搜索操作时,能增加效能。 上级目录 总目录
参数说明 1,打开一个索引键集记录指针。无法查看其他使用者新增的数据,避免存取到已删除的记录,但可以实时其他使用者变更数据的情形。 2,打开一个动态记录指针。能实时反映数据库中的实际更新情况。 3,打开一个静态记录指针。不能显示其他操作者的对数据的修改。 • 琐定方式 1,只读,记录集中的记录无法更改。此为默认值。 2,悲观琐定,当使用者进行编辑时,琐定记录。 3,乐观琐定,当使用者调用update方法时,琐定记录。 4,乐观性批次更新,采用批次更新模式。 • 选择 -1,表示数据源应将传入命令文字参数视为指令的文字定义。 1,表示数据源应将命令文字参数视为文本文件名。 2,表示数据源应将命令文字参数视为表格名称。 3,表示数据源应将命令文字参数视为存储程序。 上级目录 总目录
打开数据、移动记录 例:set cnndb=server.createobject(“adodb.connection”) cnndb.open liuyanban set rstobj=server.createobject(“adodb.recordset”) rstobj.open “liuyan”,cnndb rstobj(“name”) ‘取得记录集中的记录 do while not rstobj.eof ‘查看是否到记录集的尾记录 …… rstobj.movenext loop rstobj.movelast’将记录指针移至最后一笔记录 do while not rstobj.bof ‘查看是否到记录集的首记录 …… rstobj.moveprevious loop 上级目录 总目录