ASP编程入门进阶教程(5)
作者:cnbruce 来源:蓝色理想 发布时间:2008-06-29 18:00:00
系统学习ASP,就是先从ASP的几大内置对象开始的.
一般称五大对象:Request、Response、Server、Session、Application
今天先来看看Request对象。
当然一直还没有提到的就是,ASP到底是什么样?我看代码怎么知道是ASP代码?
很简单,当看到“<%”和“%>”就表明是ASP,并且两者之间的就是ASP源码。
那为什么要学对象,对象的作用又是如何的?
其实ASP所提供的这些可在脚本中使用的内建对象,使用户更容易收集通过浏览器请求发送的信息、响应浏览器以及存储用户信息,从而使对象开发者摆脱了很多烦琐的工作。
而Request对象的主要作用就是:在服务器端接受并得到从客户端浏览器提交或上传的信息。Request 对象可以访问任何基于 HTTP 请求传递的所有信息,包括从Form表单用 POST 方法或 GET 方法传递的参数、cookie 等。
一,Request.form("name")
这是接受上一页的信息时,常会用到的一种接受方式。Request是ASP对象,form则是Request对象所包含的对象集合(这要有区别与HTML页中的form表单,是不一样的),name也就是上一页表单中的某个文本框、密码框,或者隐藏域等的名称。并且还有一点非常重要:上一页Form表单的递交方法一定要为Post方法。
说不如做,看下面两个页面程序。
1,test1.html(本页是HTML的,主要提供输入信息的平台,以将信息提交到再下面的ASP页进行接受处理)
运行代码框
,submit1.asp(ASP页面,进行从test1.html接受name="yourname"和name="yourpwd"的两个值)
your name is:<%=request.form("yourname")%><br>
your pwd is:<%=request.form("yourpwd")%>
通过IIS进行HTTP协议的页面调试,你会发现两个页面进行了关联:test1.html中动态输入的name和pwd,在submit1.asp也则进行相应的动态显示。
这就是接收、提取并显示信息的全过程。
3,改进的submit1.asp
<% for each i in request.form%>
<%=i%>:
<%=request.form(i)%>
<br>
<%next%>
采用了for循环语句,将上页所有的form标签信息进行接受、并显示。这在上表单页有很多项目时,非常快捷地出来结果。
首先仍然是request.form,只是后面的("yourname")或("yourpwd")变成了变量 i
通过for循环对该form集合进行遍历提取,这是一种不同于机械地“有几个就提取几个”的编程思想,注意掌握。
二,Request.querystring("name")
此时由Request.form变为Request.querystring,最主要的还是上页表单递交时,采用的什么方法。当采用post就用Request.form,否则当采用get时就采用Request.querystring了。
那Request.querystring最大特色在哪里呢?Request.querystring能检索并接受 HTTP 查询字符串中变量的值,而HTTP 查询字符串则是由问号 (?) 后的值指定的。说了大半天,继续看一个程序。
1,test2.html(本页同是HTML的,主要提供输入信息的平台,以将信息提交到再下面的ASP页进行接受处理,注意提交方法是get)
运行代码框
和test1.html最大区别也就是method="get"
2,submit2.asp(ASP页面,进行从test1.html接受name="yourname"和name="yourpwd"的两个值)
your name is:<%=request.querystring("yourname")%><br>
your pwd is:<%=request.querystring("yourpwd")%>
注意此时的浏览器地址栏,文件后面多出了?号,?号后面附有变量名及所被赋的值,当然多个变量名之间是用&号进行连接的。
而Request.querystring最大的功能就是能将?号后面的这些变量名分开,并且所对应的值也一一取出。
刚才说到不同的变量名之间是用&号进行连接,但如果是相同的变量名时,request.querystring到底是提取前一个?后一个?还是两个一起?
用例子说话。
3,query.asp(名称是query.asp,因为在该页程序中是反馈给自己。)
<a href="query.asp?bookname=《asp教程》">《asp教程》</a><br>
<a href="query.asp?bookname=《jsp教程》">《jsp教程》</a><br>
<a href="query.asp?bookname=《xsp教程》&bookname=《xml》">《xsp教程》</a><br>
you chosed <%=request.querystring("bookname")%>
很明显当点《xsp教程》时,显示的是“《xsp教程》,《xml》”,中间自动加了“,”号。
最后仍需要说明的是:request.querystring在分页程序里面是经常用到的。象http://www.cnbruce.com/database/
三,Request.ServerVariables("xxx")
其中ServerVariables就是服务器的环境变量了,该变量包含的内容比较多,我们同样先采用for循环进行遍历查看下。
1,server1.asp
<%for each i in request.servervariables%>
<%=i%>:
<%=request.servervariables(i)%>
<hr>
<%Next%>
可以看到一大堆环境变量,其中还有没有值的,下面摘取几个比较常用的。
http_user_agent(客户端机器的相关环境):<%=request.servervariables("http_user_agent")%><br>
http_accept_language(浏览语言):<%=request.servervariables("http_accept_language")%><br>
CONTENT_LENGTH(客户端发出内容的长度):<%=request.servervariables("CONTENT_LENGTH")%><br>
CONTENT_TYPE(内容的数据类型。如“text/html”。同附加信息 的查询一起使用,如 HTTP 查询 GET、POST 和 PUT):<%=request.servervariables("CONTENT_TYPE")%><br>
LOCAL_ADDR(返回接受请求的服务器地址。如果在绑定多个IP地址的多宿主机器上查找请求所使用的地址时,这条变量非常重要):<%=request.servervariables("LOCAL_ADDR")%><br>
REMOTE_ADDR(发出请求的远程主机client的 IP 地址):<%=request.servervariables("REMOTE_ADDR")%><br>
SERVER_NAME(出现在自引用 URL 中的服务器主机名、DNS 化名 或 IP 地址):<%=request.servervariables("SERVER_NAME")%><br>
SCRIPT_NAME(主机名后面的虚拟地址):<%=request.servervariables("SCRIPT_NAME")%><br>
LOGON_USER(用户登录 Windows NT 的帐号):<%=request.servervariables("LOGON_USER")%><br>
SERVER_PORT(发送请求的端口号):<%=request.servervariables("SERVER_PORT")%>
根据以上的SERVER_NAME是提取的服务器主机名,SCRIPT_NAME是提取的虚拟地址,则两者的结合再加上 http:// 是不是就是个完整的网址呢。
2,server2.asp
<%a=request.servervariables("server_name")%>
<%b=request.servervariables("script_name")%>
<%="http://"&a&b%>
其中 http:// 用引号引起,表示是一字符串,a和b分别是对应了具体值的变量,在ASP中进行这样的连接就是采用&号。
根据这个结果,我们是不是就可以随时提取动态的URL地址了。
再来看看query.asp,要求一定要保存为query.asp的,因为如果不是该文件名,程序指向就会出错。但现在的这个文件就随便你保存为什么文件,都一样执行。
3,xxx.asp(随便你保存成什么文件)
<%filepath=request.servervariables("script_name")%>
<a href="<%=filepath%>?bookname=《asp教程》">《asp教程》</a><br>
<a href="<%=filepath%>?bookname=《jsp教程》">《jsp教程》</a><br>
<a href="<%=filepath%>?bookname=《xsp教程》&bookname=《xml》">《xsp教程》</a><br>
you chosed <%=request.querystring("bookname")%>
先将当前文件的地址取出并赋值给变量filepath
然后所有的链接地址开头都只要直接引用该变量就OK了。
是不是很有用,有点万能的感觉。
四,Request.Cookies("name")
不用我说,Cookie是个很重要的东西,究竟如何,等我们学完了下面的对象Response后,会有个特别Cookie的专题讲座。就先搁着吧。
以上四则运用,属于Request对象的所包含的四个对象集合:form、querystring、servervarivables、cookies。当然还有个ClientCertificate就不说啦
一个ASP内置对象除了对象集合外还有对象属性、对象方法
Request对象的对象属性只有一个就是TotalBytes(接受的字节数),你可将
<%=request.totalbytes%>
该语句加入到任何一个接受数据的ASP页面中进行显示了。
Request对象的对象方法也还是一个:BinaryRead 。
说实话,这东东不常用,我也没用过,呵呵。
OK~!有关Request对象的学习就差不多了,最主要是先好好理解三个对象集合,cookies不着急,下节继续学习对象Response。


猜你喜欢
- 回想自己从事Web方面的开发已经有6-7年,对于各种Web技术都已经非常熟悉.可是,身为程序员的我对于制作Web表单界面的事着实心痛。心痛1
- 在python中,循环有一个语句:for语句。简单的for循环例子>>> hello = "world"
- Python 爬虫包含两个重要的部分:正则表达式和Scrapy框架的运用, 正则表达式对于所有语言都是通用的,网络上可以找到各种资源。如下是
- python实现情感分析(Word2Vec)** 前几天跟着老师做了几个项目,老师写的时候劈里啪啦一顿敲,写了个啥咱也布吉岛,线下自己就瞎琢
- 前言sys模块是与python解释器交互的一个接口。sys 模块提供了许多函数和变量来处理 Python 运行时环境的不同部分。处理命令行参
- 先来看看什么是书签查找: 当优化器所选择的非聚簇索引只包含查询请求的一部分字段时,就需要一个查找(lookup)来检索其他字段来满足请求。对
- 项目中需要根据不同业务进行分库,首先是将业务不同业务映射到不同过的数据库( biz --> db,可能存在多对一情况),查看sprin
- setTimeoutsetTimeout 语法例子用 setTimeout 来执行 function不断重复执行的 setTimeout设定
- webpack项目中自动引入全局scss变量文件假设我们有一个公共的scss变量文件variables.scss/*存放所有全局变量*/$c
- 四大前缀除了普通的字符串,python在字符串前面可以有4个前缀,即frub。其中,f字符串可将{}中的变量转为字符串;r表示取消转义;u表
- import pdbdef pdb_test(arg): for i in range(arg):&nb
- 哪里出问题了python 中,使用 global 会将全局变量设为本函数可用。同时,在函数内部访问变量会先本地再全局。在嵌套函数中,使用 g
- 本文实例讲解了PHP图片上传并压缩的实现方法,分享给大家供大家参考,具体内容如下使用到三个文件connect.php:连接数据库test_u
- 比如: 搜索框:可以 <input value="搜索产品..." /> 文本区域: 可以 <text
- 每种语言都有自己的独到之处,或奇特的语法,或不常见的函数,或非标准的执行方式。因此,不论新丁还是老手,看着某个特性会突然醉了。文中总结了10
- 本文实例讲述了基于JS实现简单的样式切换效果。分享给大家供大家参考。具体如下:这是一款基于JS实现简单的样式切换代码,自由切换CSS样式,很
- 我们前面介绍的Selenium的WebDriver测试方法是基于网页来进行的。之前的例子都是用简单的网页来操作,可能体会不到网页的加载过程,
- 一、为何人工智能(AI)首选Python?读完这篇文章你就知道了。我们看谷歌的TensorFlow基本上所有的代码都是C++和Python,
- 相同记录行如何取最大值我想这个东西在作一些相关采购系统或成本报价系统应该很有用的吧取当前的最有效的价格.记录下来与大家分享!--测试数据&n
- 一个常常令设计师和前端开发人员都头疼的事情就是字体的使用,设计师常常在设计稿中使用某些很漂亮的字体,以实现比较酷炫的界面。但这样常常给编码人