第一讲
一、网页的发展历史
1、 纯粹的html(Hypertext Markup Language)静态页面。 2、 带CGI(Common Gateway Interface)的交互式页面。
功能很强大灵活,但对程序员要求较高,设计相对复杂。用大部分高级语言都可以设计CGI程序,用得较多的是PERL和C。PREL是一种解释性语言,较容易上手,字符串处理功能强大。可以在各种平台上实现。 3、 服务器端脚本程序。如ASP、PHP、JSP。
都是脚本程序,在服务器端执行,输出HTML的内容,而且是HTML与脚本混合书写,很容易学习。最大得优势是很容易与数据库结合。
ASP的运行环境限于WINDOWS系列(最近也出现了一个工具,可以让ASP在LINUX上运行),而PHP(主要在LINUX上)和JSP(NT和UNIX上)在大多数平台都可以实现,不过都需要安装一些第三方的软件。
ASP和PHP都是在每次用户请求时由他们的解释引擎解释执行,而JSP只是在用户第一次请求时将它编译成JAVA SERVERLET(服务器端小程序)后执行,以后请求时都是直接请求该SERVERLET,效率较高。
二、ASP运行环境搭建
1、 WIN98和WIN2K Professional版的PWS。
在WIN98光盘的Add-on目录下找PWS的安装程序。安装完后桌面上会出现发布图标。可以通过它可以停止、启动PWS,设置WWW的主目录,增加虚拟目录以及设置每个目录的权限、设定启动默认文档等。
A、主目录:比如设成c:\\inetpub\\www,假设主机是www.jsjxy.snnu.edu.cn在浏览器地址栏里输入www.jsjxy.snnu.edu.cn\\welcome.html,实际访问的就是c:\\inetpub\\wwwroot\\welcome.html文件,如果有c:\\inetpub\\wwwroot\\test\\index.htm,可以通过www.jsjxy.snnu.edu.cn/test/index.html来访问。
B、虚拟目录:假设设定d:\\www为一虚拟目录,别名为test1,假设有d:\\www\\index.htm,则可以通过www.jsjxy.snnu.edu.cn\\test1\\index.htm来访问。 C、启动默认文档(缺省首页):假设设定为index.asp,default.htm,则用www.jsjxy.snnu.edu.cn访问时会自动访问c:\\inetpub\\wwwroot\\index.asp,如果没有就访问c:\\inetpub\\wwwwoot\\default.htm。 这些概念和其他系统也是一样的。 2、 WIN NT的IIS
NT4的安装光盘里的IIS是2.0版,不支持ASP,需要安装OPTION PACK,安装完后IIS被升级到4.0版,就可以运行ASP了。2000的IIS5.0当然也可以。 OPTION PACK里包括很多组件,我们需要的就是IIS(包括Web server和Ftp server), 还有IIS的管理程序MMC。
安装时需要指定Web server和Ftp server的目录,以及管理帐号与密码。 安装完后通过MMC建立新站点,包括站点说明、设定IP地址及端口、设定主目录、设置缺省首页、配置目录访问权限等。
一个IIS可以有几个站点,几个站点可以配置成不同的IP,也可以设成一个IP,但端口必须不同。
设置完后启动服务就行了。
三、一个简单的ASP程序
test1.asp
<%for I=1 to 3 %>
>ASP
<%next%>
输出:
ASP
ASP
ASP
ASP主要支持JAVA SCRIPT和VB SCRIPT两种脚本语言(都是服务器端脚本,与客户端脚本有一些区别),缺省的是VB SCRIPT。
VB SCRIPT支持有完整的数据类型,程序控制,以及丰富的库函数,都可以在ASP中应用,但有些VB SCRIPT函数,如msgbox()等需要用户参与的函数就不能用。 四、开发工具
1. 记事本
2. 微软公司的开发工具InterDv 3. ASPEDIT
五、ASP内嵌组件
主要有五个: Application
被用来存储一个应用中所有用户共享的信息,比如聊天室程序里可以将在线人数存在Application对象中,这样每个用户都可以访问以获得当前在线人数。 Request
该对象可以被用来访问所有从浏览器到服务器见的信息,可以用它来接受用户在html页面的form中填写的信息。 一个form的例子:
Response
该对象用来将信息发送回浏览器。如: <%for I=1 to 5
response.write(i) next%>
输出:12345
Server
最强大的对象,ASP提供了许多SERVER端的应用函数,可以利用SERVER对象来创建其他对象的实例。如:
<%set myfileobject=server.createobject(“scripting.filesystemobject”)%>
就可以利用myfileobject对服务器硬盘上的目录、文件进行建立、复制、删除等操作。 <%set myconn=server.createobject(“adodb.connection”)%>
就可以利用myconn对数据库进行操作。 Session
被用来存储用户的一些特定信息,比如用户登录时所填写的用户名、密码、登录时间等。在用户访问其他页面时可以将这些信息取出,不再需要用户输入。
六、EQUEST和RESPONSE
例:test.htm
test.asp
<%username=request.form(“username”)
‘第一个username是一个变量,括号里的username是中name的值。
If(username=””) then response.redirect(“/test.htm”) End if
‘response.redirect()使客户的浏览器转到指定的页面
Gender=request.form(“gender”) Banji=request.form(“banji”) Response.write(username); If(gender=”男”) then
Response.write(“先生:
”) Else response.write(“小姐:
”) End if%>
你来自<%=request.form(“department”)%><%=banji%>
你有<%=request.form(“aihao”).count%>个爱好: <%for each temp in request.form(“aihao”) response.write(temp & “ ”) next%>
你的获奖情况:
<%=server.htmlencode(request.form(“huojiang”))%>
request.form(“username”)表示接收来自form的用POST方式传输某个变量的值 GET方式传输的值用request.get(“username”)接收
如果不能确定是用什么方式传输的数据,也可用request(“username”)接收数据,不过这种方式速度较慢,不推荐使用。
Response.write(username)和直接用<%=username%>,都是向浏览器输出变量的值或字符串。
Server.htmlencode()方法使用HTML编码法转换字符串 如: ,如果直接输出将会是一幅图片上有个超连接,如果用Server.htmlencode()转换后输出,则会将原码输出。这个方法在留言板上比较有用,可以防止别人捣乱。 七、获取用户信息
1、 request.servervariables 例:
Server Variables Example
<% for each name in request.servervariables response.write(“” & name &””) response.write(request.servervariables(name)) response.write(“
”) next%>
这个例子会将servervariable集合中所有内容显示出来。
其中比较有用的是REMOTE_ADDR,表示客户机IP地址,可以记录它以便统计用户来源,还可以根据它决定是否允许该客户看本页等,非常有用。 还有HTTP_USER_AGENT,它包含了客户机浏览器的类型、版本,可以根据它页面的兼容性。 HTTP_REFERER在做广告的时候有用,比如用户通过某个网站上的连接进入你的主页,
HTTP_REFERER记录下了从哪个页面来得。
八、文件、目录操作
FileSystemObject.asp
服务器磁盘驱动器显示列表
set MyFilesObject1=Server.CreateObject(“Scripting.FileSystemObject”) for Each thing in MyFilesObject1.Drivers %>
驱动器号:<%=thing.DriveLetter%>
驱动器总容量<%=thing.TotalSize%>
驱动器可用空间<%=thing.AvailableSpace%> <%next%>
查看C:\\WINNT目录下的所有文件
<%
set MyFilesObject2=Server.CreateObject(“Scripting.FileSystemObject”) set MyFolder1=MyFilesObject2.GetFolder(“c:\\winnt”) for each thing in MyFolder1.Files response.write(“
”&thing) next %>
创建目录并创建文本文件,并且copy 一个副本
<%
set MyFilesObject3=Server.CreateObject(“Scripting.FileSystemObject”) set MyFolder2=MyFilesObject3.CreateFolder(“c:\\TEST”)
set MyFilesObject4=Server.CreateObject(“Scripting.FileSystemObject”) set MyFile1=MyFilesObject4.CreateTextFile (“c:\\TEST\\test1.txt”) MyFile1.WriteLine(“hello !”) MyFile1.Close
MyFilesObject4.CopyFile “c:\\TEST\\test1.txt” “c:\\TEST\\test2.txt” IF Not (MyFilesObject4.FileExists(“c:\\ TEST\\test2.txt”) ) then Response.write(“没有找到c:\\ TEST\\test2.txt”) ELSE
Set MyFile2=MyFilesObject4.GetFile (“c:\\TEST\\test2.txt”) %>
文件副本test2.txt的文件属性
名称<%= MyFile2.Name%>
路径<%= MyFile2.Path%>
驱动器<%= MyFile2.Driver%>
类型<%= MyFile2.Type%>