asp基础
0.1在浏览器中通过查看源代码的方式是无法看到 ASP 源代码的,你只能看到由 ASP 文件输出的结果,而那些只是纯粹的 HTML 而已。这是因为,在结果被送回浏览器前,脚本已经在服务器上执行了。
0.2通常情况下,ASP 文件包含 HTML 标签,类似 HTML 文件。不过,ASP 文件也能够包含服务器端脚本,这些脚本被分隔符 <% 和 %> 包围起来。
<html>
<body>
<%
response.write("Hello World!")
%>
</body>
</html>
等效
<html>
<body>
<%="Hello World!"%>
</body>
</html>
0.3你可以在 ASP 中使用若干种脚本语言。不过,默认的脚本语言是 VBScript:
1定义变量和页面写文字
<html>
<body>
<%
dim name
name="Donald Duck"
response.write("My name is: " & name)
%>
</body>
</html>
1.2 数组
<%
Dim fname(5),i
fname(0) = "George"
fname(1) = "John"
fname(2) = "Thomas"
fname(3) = "James"
fname(4) = "Adrew"
fname(5) = "Martin"
For i = 0 to 5
response.write(fname(i) & "<br />")
Next
%>
2 基于时间的问候语
<%
dim h
h=hour(now())
response.write("<p>" & now())
response.write(" (Beijing Time) </p>")
If h<12 then
response.write("Good Morning!")
else
response.write("Good day!")
end if
%>
3 子函数
3.1 两种调用子函数
<html>
<head>
<%
sub vbproc(num1,num2)
response.write(num1*num2)
end sub
%>
</head>
<body>
<p>您可以像这样调用一个程序:</p>
<p>结果:<%call vbproc(3,4)%></p>
<p>或者,像这样:</p>
<p>结果:<%vbproc 3,4%></p>
</body></html>
3.2js和vb的调用
<html>
<head>
<%
sub vbproc(num1,num2)
Response.Write(num1*num2)
end sub
%>
<script language="javascript" runat="server">
function jsproc(num1,num2)
{
Response.Write(num1*num2)
}
</script>
</head>
<body>
<p>结果:<%call vbproc(3,4)%></p>
<p>结果:<%call jsproc(3,4)%></p>
</body>
</html>
VBScript 与 JavaScript 之间的差异
当从一个用 VBScript 编写的 ASP 文件中调用 VBScript 或者 JavaScript 子程序时,可以使用关键词 "call",后面跟着子程序名称。假如子程序需要参数,当使用关键词 "call" 时必须使用括号包围参数。假如省略 "call",参数则不必由括号包围。假如子程序没有参数,那么括号则是可选项。
当从一个用 JavaScript 编写的 ASP 文件中调用 VBScript 或者 JavaScript 子程序时,必须在子程序名后使用括号。
4 表单
4.1 post方式
html>
<body>
<form action="/example/aspe/demo_aspe_simpleform.asp" method="post">
您的姓名:<input type="text" name="fname" size="20" />
<input type="submit" value="提交" />
</form>
<%
dim fname
fname=Request.Form("fname")
If fname<>"" Then
Response.Write("您好!" & fname & "!<br />")
Response.Write("今天过得怎么样?")
End If
%>
</body>
</html>
4.2 get方式
<html>
<body>
<form action="/example/aspe/demo_aspe_reqquery.asp" method="get">
您的姓名:<input type="text" name="fname" size="20" />
<input type="submit" value="提交" />
</form>
<%
dim fname
fname=Request.QueryString("fname")
If fname<>"" Then
Response.Write("你好!" & fname & "!<br />")
Response.Write("今天过得怎么样?")
End If
%>
</body>
</html>
Request.Form 命令用于搜集使用 "post" 方法的表单中的值。使用 POST 方法从表单传送的信息对用户是不可见的,并且对所发送信息的量也没有限制。
Request.QueryString 命令用于搜集使用 method="get" 的表单中的值。使用 GET 方法从表单传送的信息对所有的用户都是可见的(出现在浏览器的地址栏),并且对所发送信息的量也有限制。
4.3单选项按钮的表单
<html>
<%
dim cars
cars=Request.Form("cars")
%>
<body>
<form action="/example/aspe/demo_aspe_radiob.asp" method="post">
<p>请选择您喜欢的汽车:</p>
<input type="radio" name="cars"
<%if cars="Volvo" then Response.Write("checked")%>
value="Volvo">Volvo</input>
<br />
<input type="radio" name="cars"
<%if cars="Saab" then Response.Write("checked")%>
value="Saab">Saab</input>
<br />
<input type="radio" name="cars"
<%if cars="BMW" then Response.Write("checked")%>
value="BMW">BMW</input>
<br /><br />
<input type="submit" value="提交" />
</form>
<%
if cars<>"" then
Response.Write("<p>您喜欢的汽车是" & cars & "</p>")
end if
%>
</body>
</html>
5 cookie记录
<%
dim numvisits
response.cookies("NumVisits").Expires=date+365
numvisits=request.cookies("NumVisits")
if numvisits="" then
response.cookies("NumVisits")=1
response.write("欢迎!这是您第一次访问本页面。")
else
response.cookies("NumVisits")=numvisits+1
response.write("之前,您已经访问过本页面 ")
response.write(numvisits & " 次。")
end if
%>
<html>
<body>
</body>
</html>
"Response.Cookies" 命令用于创建 cookie。
注意:Response.Cookies 命令必须位于 <html> 标签之前。
在下面的例子中,我们会创建一个名为 "firstname" 的 cookie,并向其赋值 "Alex":
<%
Response.Cookies("firstname")="Alex"
%>
向 cookie 分配属性也是可以的,比如设置 cookie 的失效时间:
<%
Response.Cookies("firstname")="Alex"
Response.Cookies("firstname").Expires=#May 10,2020#
%>
在下面的例子中,我们取回了名为 "firstname" 的 cookie 的值,并把值显示到了页面上:
<%
fname=Request.Cookies("firstname")
response.write("Firstname=" & fname)
%>
带有键的 cookie
如果一个 cookie 包含多个值的一个集合,我们就可以说 cookie 拥有键(Keys)。
在下面的例子中,我们会创建一个名为 "user" 的 cookie 集。"user" cookie 拥有包含用户信息的键:
<%
Response.Cookies("user")("firstname")="John"
Response.Cookies("user")("lastname")="Adams"
Response.Cookies("user")("country")="UK"
Response.Cookies("user")("age")="25"
%>
读取带有键值得cookie
假设您的服务器将所有的这些 cookie 传给了某个用户。
现在,我们需要读取这些 cookie。下面的例子向您展示如何做到这一点(请注意,下面的代码会使用 HasKeys 检查 cookie 是否拥有键):
<html>
<body>
<%
dim x,y
for each x in Request.Cookies
response.write("<p>")
if Request.Cookies(x).HasKeys then
for each y in Request.Cookies(x)
response.write(x & ":" & y & "=" & Request.Cookies(x)(y))
response.write("<br />")
next
else
Response.Write(x & "=" & Request.Cookies(x) & "<br />")
end if
response.write "</p>"
next
%>
</body>
</html>
输出:
firstname=Alex
user:firstname=John
user:lastname=Adams
user:country=UK
user:age=25
获取一个值,通过该值指示 Cookie 是否具有子键。如果 Cookie 具有子键,则为 true;否则为 false。 默认值为 false。
6 变量
如需声明供多个 ASP 文件使用的变量,请将变量声明为 session 变量或者 application 变量。
Session 变量
Session 变量用于存储单一用户的信息,并且对一个应用程序中的所有页面均有效。存储于 session 中的典型数据是姓名、id 或参数。
Application 变量
Application 变量同样对一个应用程序中的所有页面均有效。Application 变量用于存储一个特定的应用程序中所有用户的信息。
7 session对象
ASP 通过为每位用户创建一个唯一的 cookie 的方式解决了这个问题。cookie 被传送至客户端,它含有可识别用户的信息。这种接口被称作 Session 对象。
Session 对象用于存储关于用户的信息,或者为一个用户的 session 更改设置。存储于 session 对象中的变量存有单一用户的信息,并且对于应用程序中的所有页面都是可用的。存储于 session 对象中的信息通常是 name、id 以及参数。服务器会为每个新的用户创建一个新的 Session,并在 session 到期时撤销掉这个 Session 对象。
如用户没有在规定的时间内在应用程序中请求或者刷新页面,session 就会结束。默认值为 20 分钟。
下面的例子设置了 5 分钟的超时时间间隔:
<%
Session.Timeout=5
%>
要立即结束 session,可使用 Abandon 方法:
<%
Session.Abandon
%>
一旦值被存入 session 变量,它就能被 ASP 应用程序中的任何页面使用:
移除session 变量
在下面的例子中,假如 session 变量 "age" 的值小于 18,则移除 session 变量 "sale":
<%
If Session.Contents("age")<18 then
Session.Contents.Remove("sale")
End If
%>
如需移除 session 中的所有变量,请使用 RemoveAll 方法:
<%
Session.Contents.RemoveAll()
%>
8 Application 对象
Application 对象用于存储和访问来自任何页面的变量,类似于 session 对象。不同之处在于,所有的用户分享一个 Application 对象,而 session 对象和用户的关系是一一对应的。
Application 对象存有会被应用程序中的许多页面使用的信息(比如数据库连接信息)。这意味着可以从任何的页面访问这些信息。同时也意味着你可在一个地点改变这些信息,然后这些改变会自动反映在所有的页面上
创建 application("users")=1 建立变量users 赋值1
访问 Application 变量的值Application("users")
遍历Application.Contents
contents 集中的项目数量Application.Contents.Count
对象的值 Application.StaticObjects
我们可以使用 "Lock" 方法来锁定应用程序。当应用程序锁定后,用户们就无法改变 Application 变量了(除了正在访问 Application 变量的用户)。我们也可使用 "Unlock" 方法来对应用程序进行解锁。这个方法会移除对 Application 变量的锁定:
<%
Application.Lock
'do some application object operations
Application.Unlock
%>
9 #include 指令
#include 指令用于在多重页面上创建需重复使用的函数、页眉、页脚或者其他元素等。
Including 文件的语法:
如需在 ASP 中引用文件,请把 #include 命令置于注释标签之中:
<!--#include virtual="somefilename"-->
或者:
<!--#include file ="somefilename"-->
关键词 Virtual
关键词 virtual 指示路径以虚拟目录开始。
如果 "header.inc" 文件位于虚拟目录 /html 中,下面这行代码会插入文件 "header.inc" 中的内容:
<!-- #include virtual ="/html/header.inc" -->
关键词 File
关键词 File 指示一个相对的路径。相对路径起始于含有引用文件的目录。
假设文件位于 html 文件夹的子文件夹 headers 中,下面这段代码可引用 "header.inc" 文件的内容:
<!-- #include file ="headers\header.inc" -->
注意:被引用文件的路径是相对于引用文件的。假如包含 #include 声明的文件不在 html 目录中,这个声明就不会起效。
您也可以使用关键词 file 和语法 (..\) 来引用上级目录中的文件。
重要事项:在脚本执行前,被引用的文件就会被处理和插入。
下面的代码无法执行,这是由于 ASP 会在为变量赋值之前执行 #include 命令:
<%
fname="header.inc"
%>
<!--#include file="<%=fname%>"-->
不能在脚本分隔符之间包含文件引用:
<%
For i = 1 To n
<!--#include file="count.inc"-->
Next
%>
asp基础的更多相关文章
- ASP 基础三 SQL指令
一 增删改查 <% set conn=server.CreateObject("adodb.connection") DSNtemp="DRIVER={SQL Se ...
- ASP 基础二 内置对象
一 Request 二 Response 三 Application 四 Session 五 Server <script language="vbscript" runat ...
- ASP 基础一 基本语法
一 声明变量 二 给变量赋值 三 循环 四 case <html> <head title="test hello world"> </head> ...
- ASP 基础一 网站开发 初步认识
一 .ASP 与 ASP.NET的区别 i.ASP是解释型的动态语言,asp文件包含了前端和动态语言VBScript,来实现对服务器的交互,运行在IIS.PWS等WEB服务器上 II.ASP.NET是 ...
- ASP 基础一
ASP是什么? •ASP代表Active Server Pages(动态服务器页面) •需在IIS中运行的程序 我自己的理解就是UI和逻辑代码同在一个页面中,而缺点就是不易维护.code-Behind ...
- ASP.NET之旅—再一次与ASP谋面
ASP对我来说已经不是新名词了,因为在一年以前就开始了ASP的学习,那时候虽然效果很不好,但是对ASP还是有了一些最基础的了解.ASP.NET是在ASP基础上增加了一些.NET的一些特性,基础的东西还 ...
- 精通Web Analytics 2.0 (4) 第二章:选择你的网络分析灵魂伴侣的最佳策略
精通Web Analytics 2.0 : 用户中心科学与在线统计艺术 第二章:选择你的网络分析灵魂伴侣的最佳策略 在Web Analytics 2.0的新世界秩序中,您必须跳出"单一真理来 ...
- 入坑IT都快十年了
一起帮的开发直播已经告一段落:一是主体的功能差不多都实现了,二是用到的架构技术都展示得差不多了.以后就算继续开发,也应该都是一些“技术上”重复的工作而已.整个直播过程耗时近半年,SVN提交1062次, ...
- js收藏代码
js收藏代码~ 1. oncontextmenu="window.event.returnValue=false" 将彻底屏蔽鼠标右键 <table border oncon ...
随机推荐
- 洛谷 P4390 [BOI2007]Mokia 摩基亚 解题报告
P4390 [BOI2007]Mokia 摩基亚 题目描述 摩尔瓦多的移动电话公司摩基亚(\(Mokia\))设计出了一种新的用户定位系统.和其他的定位系统一样,它能够迅速回答任何形如"用户 ...
- ueditor上传图片配置
1 去ueditor文件夹下 找 ueidtors/dialogs/image/image.html -- 配置位置大概如下: 107 utils.domReady(function(){ 108 ...
- 代码收藏系列--php--加载sql文件并解析成数组
php加载sql文件,解析成以分号分割的数组.(支持存储过程和函数提取,自动过滤注释) /** * 加载sql文件为分号分割的数组 * <br />支持存储过程和函数提取,自动过滤注释 * ...
- java如何优雅的实现时间控制
前言:最近小王同学又遇到了一个需求:线上的业务运行了一段时间,后来随着使用人数增多,出现了一个问题是这样的,一个订单会重复创建几次,导致数据库里出现了很多垃圾数据.在测试同学的不断测试下,发现问题出在 ...
- Adaboost 算法的原理与推导——转载及修改完善
<Adaboost算法的原理与推导>一文为他人所写,原文链接: http://blog.csdn.net/v_july_v/article/details/40718799 另外此文大部分 ...
- Matlab一个错误引发的血案:??? Error using ==> str2num Requires string or character array input.
Matlab总遇到一些神奇的问题,让人摸不着头脑.昨天编写程序的时候遇到一个让我十分火大的问题,也是自己的matlab基础不好吧. 先描述一下问题,再GUI界面有个listbox,Tag属性是’lis ...
- duilib 给List表头增加百分比控制宽度的功能
转载请说明原出处,谢谢~~:http://blog.csdn.net/zhuhongshu/article/details/42503147 最近项目里需要用到包含表头列表,而窗体大小改变后,每个列表 ...
- 如何将html5程序打包成Android应用
问题分析: html5网站主要由html+css+js的形式组成,需要使用浏览器进行展现. Android需要使用Java语言来开发,对于前端工程师来说,无疑是增加了很大的难度. 随后出现了很多打包工 ...
- 深度学习voc数据集图片resize
本人新写的3个pyhton脚本. (1)单张图片的resize: # coding = utf-8 import Image def convert(width,height): im = Image ...
- uva 10288 Coupons (分数模板)
https://vjudge.net/problem/UVA-10288 大街上到处在卖彩票,一元钱一张.购买撕开它上面的锡箔,你会看到一个漂亮的图案. 图案有n种,如果你收集到所有n(n≤33)种彩 ...