WEB程序设计之web服务器与Asp

时间:2022-05-19 04:28:07



WEB程序设计之web服务器与Asp





1、Web服务器(IIS)

1)IIS的安装:

安装方法见如下链接:IIS安装

2)IIS的测试:

(1)IIS安装好后,在C:盘将增加一个文件夹C:\Inetpub\wwwroot\,这个目录也为Web站点的根目录.

(2)在控制面板->管理工具将增加Internet信息服务项,该项目将用于对IIS进行配置。

(3)打开浏览器,在地址栏输入http://localhost/或http://127.0.0.1,如果出现欢迎页,则表示IIS工作正常。

3)IIS设置:

主目录设置

默认文档设置

目录浏览

虚拟目录设置及访问方法

4)Web服务器访问方法

我们可以采用如下几种方法来访问Web服务器。

通用方法(可访问本机也可访问其他机器)http://计算机名称(域名)或http://ip地址

本机访问方法:http://localhost/或http://127.0.0.1

如果我们有一个文件位置为C:\Inetpub\wwwrooot\a.html,则通过浏览器访问的地址为:http://localhost/a.html

如果文件的位置为C:\Inetpub\wwwrooot\news\b.html,则通过浏览器访问的地址为:http://localhost/news/b.html

我们编写的ASP文件必须放在C:\Inetpub\wwwrooot中,通过浏览器来访问,IIS才会对其中的代码进行解析,直接访问的其中的ASP代码将无法解析,请大家注意。

5)运行第一个ASP程序

WEB程序设计之web服务器与Asp

运行asp程序的步骤:

(1)将asp文件保存或拷贝到主目录或虚拟目录中

(2)向IIS发出请求,请求执行该asp文件

WEB程序设计之web服务器与Asp

一个ASP文件的代码可包含三部分的内容:

① HTML和CSS;

② 客户端脚本,位于<script></script>之间;

③ 服务器端脚本,通常位于“<%”与“%>”之间

Asp默认使用VBScript作为脚本语言,代码不区分大小写。asp代码必须分行书写,一行只能书写一条asp代码。


2、VBScript介绍

VBScript是弱类型语言,只有一种数据类型(变体型variant)使用dim 语句来定义变量,在声明变量时不指定变量类型,可以在页头放在<%Option Explicit%>来强制变量声明

服务器端ASP脚本程序代码,用<%和%> 定界符括起来,ASP文件的扩展名为.asp,ASP代码将在服务器端执行,将执行结果发送给客户端,所以客户端是不可能看到ASP代码的。

思考题:可不可以将html文件的扩展名改为asp,可不可以将asp文件的扩展名改为html


3、常用的数学函数:

Int(number)

Round(number[,decimal])

Rnd()


4、常用字符串函数:

Len(string)

LCase(string) 、UCase(string)

Trim(string) 、Ltrim(string) 、Rtrim(string)

Mid(string,start[,length]) 、 Left(string,length) 、 Right(string,length)

Replace(string, find, replacewith)

InStr(string1, string2)


5、常用数组函数 :

UBound(arrayname[, dimension])

Split(string[, delimiter])

Join(arrayname [, delimiter])

Array(arglist)


6、常用的检验函数

IsNumeric(variant) :如果可以转换为数值,则返回True

IsDate(variant) :如果可以转换为日期,则返回True

IsArray(variant) :如果是数组,则返回True

IsNull(variant) :如果不包含任何有效数据,则返回True


7、ASP五大对象:

Request:从浏览器端获取信息

Response:发送信息到浏览器

Server:提供Web服务器端的许多应用函数

Session:会话对象,用于存储使用者信息

Application:应用程序对象,用于在一个ASP应用内让不同使用者共享信息


WEB程序设计之web服务器与Asp

浏览器发送HTTP请求的方法

1)输入网址(URL)(Get方式) URL代表网络上的一个资源,因此表示向IIS请求一个资源文件

2)提交表单(Post方式或Get方式) 将向IIS提交表单中的内容,如果选择Get方式,则提交的内容将以URL字符串的形式发送


Request对象:从客户端取得信息

Request对象用来获取客户端的信息,主要依靠4种数据集合,分别是QueryString、Form、Cookies、ServerVariables。

其中常用的两个集合


Request.form 获取客户端以POST方式提交的信息,指以POST方式提交的表单信息

Request.querystring 获取客户端以GET方式提交的信息,包括URL字符串中的信息,以GET方式提交的表单信息


语法为:Request[.集合名](参数),例如

<% user=Request.Form("user")

id=Request.QueryString("id") %>

Request的集合名可以省略,如id=Request ("id")

获取用户登录表单中的内容

WEB程序设计之web服务器与Asp

服务器获取表单信息的过程

WEB程序设计之web服务器与Asp



HTTP请求中包含的信息

对于提交表单发送的HTTP请求 HTTP请求数据包中有:

表单中的信息

客户端IP地址

请求文件的URL

HTTP协议的版本号……


8、用户登录实例

login.html

 
 
  1. <!doctype html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>登录</title>
  6. </head>
  7. <body>
  8. <form action="check.asp" method="post">
  9. <p>用户名:<input type="text" name="username" /></p>
  10. <p>密码:<input type="password" name="pwd" /></p>
  11. <p><input type="submit" value="登录" /></p>
  12. </form>
  13. </body>
  14. </html>
check.asp
 
 
  1. <%
  2. dim username,pwd
  3. username=lcase(trim(request.form("username")))'去除两端空格并不区分大小写
  4. pwd=request.form("pwd")
  5. if username="" then
  6. Response.write "<script>alert('用户名不能为空');history.back();</script>"
  7. Response.end
  8. end if
  9. if username="admin" and pwd="123456" then
  10. Response.write "登录成功"
  11. else
  12. Response.write "<script>alert('用户名或密码错误');history.back();</script>"
  13. end if
  14. %>


9、复合复选框实例

f.html

 
 
  1. <!doctype html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>复合复选框使用</title>
  6. </head>
  7. <body>
  8. <form action="f.asp" method="post">
  9. <p>爱好:
  10. <input type="checkbox" name="ch1" value="basketball">篮球
  11. <input type="checkbox" name="ch1" value="football">足球
  12. </p>
  13. <p><input type="submit" value="发送" /></p>
  14. </form>
  15. </body>
  16. </html>

f.asp

 
 
  1. <%Option Explicit%>
  2. <%
  3. dim ch1,arr,i,score
  4. ch1=Request.form("ch1")
  5.  arr=split(ch1,", ")
  6. for i=0 to ubound(arr)
  7. if arr(i)="basketball" then'选择篮球加10分
  8. score=score+10
  9. elseif arr(i)="football" then'选择足球加20
  10. score=score+20
  11. end if
  12. next
  13. %>


10、在线考试实例:

test1.asp

 
 
  1. <!doctype html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>在线考试</title>
  6. </head>
  7. <body>
  8. <form action="test2.asp" method="post">
  9. <%
  10. dim a,b,c,pos,j,i,strAnswer
  11. for i=1 to 5'出5道题目
  12. %>
  13. <p>
  14. <%
  15. randomize()
  16. a=int(rnd*10)'第一个加数,0~9
  17. b=int(rnd*10)'第二个加数
  18. c=a+b
  19. strAnswer=strAnswer & c & "," '形成答案字符串
  20. pos=int(rnd*4)+1 '答案选项的位置1~4
  21. Response.write i & ")" & a & "+" & b & "=" '打印题目表达式
  22. for j=1 to 4 '生成四个选项
  23. %>
  24. <input type="radio" name="Q<%=i%>" value="<%=c-j+pos%>"><%=c-j+pos%>
  25. <%next%>
  26. </p>
  27. <%next %>
  28. <p>
  29. <%
  30. strAnswer=left(strAnswer,len(strAnswer)-1)'将答案字符串的最后一个逗号去掉
  31. %>
  32. <input type="hidden" name="answer" value="<%=strAnswer%>"><!--使用隐藏控件提交答案-->
  33. <input type="submit" value="交卷" />
  34. </p>
  35. </form>
  36. </body>
  37. </html>

test2.asp

 
 
  1. <%Option Explicit%>
  2. <%
  3. dim qname,answer,arr,i,right_count,err_count
  4. answer=Request.Form("answer")'获取答案字符串
  5. arr=split(answer,",")'将答案字符串转换为数组
  6. right_count=0
  7. err_count=0'将答对和答错的计数清零
  8. for i=0 to Ubound(arr)'批改每一道题目
  9. qname="Q" & i+1'生成每一道题的题号
  10. if Request(qname)=arr(i) then'和答案进行比较
  11. Response.write "第" & i+1 & "题回答正确<br />"
  12. right_count=right_count+1
  13. else
  14. Response.write "第" & i+1 & "题回答错误<br />"
  15. err_count=err_count+1
  16. end if
  17. next
  18. Response.write "分数:" & right_count/(right_count+err_count) *100
  19. %>


11、在线考试四则运算完整版

test1.asp

 
 
  1. <%Option Explicit%>
  2. <!doctype html>
  3. <html>
  4. <head>
  5. <title>在线考试</title>
  6. <meta charset="utf-8">
  7. </head>
  8. <body>
  9. <form action="test2.asp" method="post">
  10. <%
  11. dim a,b,i,c,d,j,strAnswer,op,strOp
  12. randomize
  13. for i=1 to 5
  14. a=int(rnd*10)
  15. b=int(rnd*10)
  16. op=int(rnd*4+1)
  17. select case op
  18. case 1
  19. c=a+b:strOp="+"
  20. case 2
  21. c=a-b:strOp="-"
  22. case 3
  23. c=a*b:strOp="*"
  24. case 4
  25. do while b=0
  26. b=int(rnd*10)
  27. loop
  28. c=a/b:strOP="/"
  29. end select
  30. strAnswer=strAnswer & c & ","
  31. d=int(rnd*4+1)
  32. %>
  33. <p><%=i%>)<%=a%><%=strOp%><%=b%>=
  34. <%for j=1 to 4%>
  35. <input type="radio" name="Q<%=i%>" value="<%=c+j-d%>"><%=c+j-d%>
  36. <%next%>
  37. </p>
  38. <%next%>
  39. <%
  40. strAnswer=left(strAnswer,len(strAnswer)-1)
  41. %>
  42. <input type="hidden" value="<%=strAnswer%>" name="Answer">
  43. <p><input type="submit" value="交卷"></p>
  44. </form>
  45. </body>
  46. </html>

test2.asp

 
 
  1. <%Option Explicit%>
  2. <%
  3. dim strAnswer,arrAnswer,QCount,i,QID,r
  4. strAnswer=Request("Answer")
  5. arrAnswer=split(strAnswer,",")
  6. QCount=Ubound(arrAnswer)-Lbound(arrAnswer)+1
  7. r=0
  8. for i=1 to QCount
  9. QID="Q" & i
  10. if Request(QID)=arrAnswer(i-1) then
  11. Response.write "第" & i & "题正确!<br />"
  12. r=r+1
  13. else
  14. Response.write "第" & i & "题错误!<br />"
  15. end if
  16. next
  17. Response.write "<p>最后得分:" & r/QCount*100
  18.  
  19. %>


----------------------------------------------------------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------------------------------------------------------

作业练习:


制作一个用户注册的界面如图所示

WEB程序设计之web服务器与Asp

要求在服务器端做如下验证:

1)带星号的字段必须填写

2)用户名用户名必须大于3个字符,小于12个字符

3)用户名不能含有*、#, $、&符号

4)密码必须包括字母和数字,并且密码和确认密码必须一致

5)邮箱格式要求正确,且必须是163邮箱


表单验证.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>客户端用户注册</title>
<style>
.inputtext{
font-family:Arial,Helvetica, sans-serif;
}

</style>

</head>

<body>
<a><font color=blue>用户注册</font></a><br><hr color=blue><br>
<form action="check.asp" method="post" name="regFrm" onsubmit="return checkdata();">
<table>
<tr>
<td>用户名</td>
<td><input type="text" class="inputtext" name="username" id="username" />*</td>
</tr>
<tr>
<td>密码</td>
<td><input type="password" class="inputtext" name="pwd" id="pwd" />*</td>
</tr>
<tr>
<td>确认密码</td>
<td><input type="password" class="inputtext" name="repwd" id="repwd" />*</td>
</tr>
<tr>
<td>性别</td>
<td><input type="radio" name="sex" id="male" />男
<input type="radio" name="sex" id="female" />女</td>
</tr>
<tr>
<td>邮箱</td>
<td><input type="text" class="inputtext" name="email" id="email" />*</td>
</tr>
<tr>
<td>身份</td>
<td>
<select class="inputtext" name="idtype" id="idtype">
<option value="student">学生</option>
<option value="teacher">教师</option>
</select>
</td>
</tr>
<tr>
<td>自我介绍</td>
<td><textarea name="intor" class="inputtext" id="intro" cols="30" rows="5"></textarea></td>
</tr>
<tr>
<td><input type="submit" value="提交"></td>
<td><input type="reset" value="重置"></td>
</tr>
</table>
</form>
<body>
</body>

</html>

check.asp
<%dim username,pwd,repwd,emailusername=lcase(trim(request.form("username")))'去除两端空格并不区分大小写if username="" thenResponse.write "<script>alert('用户名不能为空');history.back();</script>"Response.endend ifpwd=request.form("pwd")if pwd="" thenResponse.write "<script>alert('密码不能为空');history.back();</script>"Response.endend ifrepwd=request.form("repwd")if pwd<>repwd thenresponse.write"两次输入密码不一致!!"Response.write "<script>alert('重新确认密码');history.back();</script>"Response.endend ifemail=request.form("email")if email="" thenResponse.write "<script>alert('邮箱不能为空');history.back();</script>"Response.endend ifif Len(trim(username))<3 and Len(trim(username))>12 then   Response.write "<script>alert('用户名必须大于3个字符小于12个字符');history.back();</script>"Response.endend if if username="*" and username="#" and username="&" and username="$" thenResponse.write "<script>alert('用户名不能含有*、#, $、&符号');history.back();</script>"Response.endend ifdim a,b,ca=email.IndexOf("@")b=email.lastIndexOf(".")if(a<1 or b-a<3) then Response.write "<script>alert('邮箱格式不对');history.back();</script>" Response.endelsec=email.split("@")if(c(1)<>"163.com") then       Response.write "<script>alert('邮箱地址不是163邮箱!');history.back();</script>"Response.endend if  endif              %>