ASP3.0中的流控制能力
作者:蒲俊杰 来源:aspcn.com 发布时间:2008-10-19 17:41:00
随着PHP4.0和JSP技术的推出以及IIS中不断出现的重大的安全问题,MicroSoft的ASP的市场仿佛是变的狭窄了,但是 MicroSoft是不会轻言放弃的,于是在ASP2.0的基础上推出了ASP3.0,增加了一些新的功能:新的流控制能力、Data Shaping技术、无脚本 ASP 、更多的组件选择、xml的支持、脚本组件、ASP脚本代码的加密技术等等。
其实笔者认为没有多大的改变、或者我对于ASP3.0了解的还是太少了(事实上我认为微软可能放弃了ASP,而是把目光转向了"ASP+",ASP+目前还处于测试阶段,但是笔者从一些国外站点的介绍来看,嘿嘿,我们的下一个作用于Win平台上的东西可能就是ASP+了,所以ASP3.0才没有多大的改变),不过话说回来,对于那些使用Win系统平台的用户,我还是建议大家使用 ASP,所以在下面给大家介绍了"ASP3.0中的流控制能力"。
ASP3.0中的流控制技术其实是指程序流,说的通俗一点就是程序的流程,ASP3.0中有了两种新的流控制方法:"Server.Transfer" 和"Server.Execute",我将就这两种方法中的一种粗略的介绍给大家,为了具体的显示其功能,我给大家对比了 Response.redirect同Server.Transfer的运用!
一般会使用response.redirect这条语句进行地址转向,ASP3.0提供了一种新的方法给我们,这种方法更加高效。让我们先来看看 response.redirect和Server.Transfer分别是如何Run的!
response.redirect其实上是当服务器碰到这条语句时发送一条指令(包含新的地址)给浏览器,然后让浏览器去发送http请求,请求response.redirect后面的那个新的http地址,流程如下:
浏览器ASP文件请求->服务器执行->遇到response.redirect语句->服务器发送 response.redirect后面的地址给客户机端的浏览器->浏览器请求执行新的地址(服务器返回的Response.Redirect后面的地址)这就是一个小小的Response.Redirect的全部过程,不看不知道,一看吓一条!它有这么多的过程,真恐怖... ...
而ASP3.0中的Server.Transfer语句当接受地址后是直接转向后面的地址,流程如下:
浏览器ASP文件请求->服务器执行->遇到Server.Transfer语句->服务器转向新的文件。
这样就少了一个流程了!也缩短了服务器->客户机->服务器互相访问的时间!
但是值得提醒你注意的一点的是Server.transfer中带的地址最好是html文件或asp文件,不要是第三方加载的东西,比如说PHP,如果那样的话,程序是不能正常执行的,因为转向的文件被直接送给ASP 的引擎解析了(唉,微软的东西教人如何说呢?不知道这点是没有考虑到,还是微软的霸气),你将得不到结果的!
在下面的程序中,我们将像你展示这点,让我们看看下面的代码:
(文件:Response.asp:)
<!-- 代码开始 -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<META NAME="Author" CONTENT="蒲俊杰">
<META NAME="Keywords" CONTENT="ASP,www.aspxhome.com">
<title>Response测试</title>
</head>
<body>
<%Response.Redirect "test.php"%>
</body>
</html>
<!-- 代码结束-->
test.php文件的代码如下:
<!-- 代码开始 -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<META NAME="Author" CONTENT="蒲俊杰">
<META NAME="Keywords" CONTENT="ASP,PHP,www.aspxhome.com">
<title>Response测试</title>
</head>
<body>
<? echo "<center>这是一个测试,你好呀!欢迎你访问我们的网站<a href=http://www.aspxhome.com>www.aspxhome.com</a></center>" ; ?>
</body>
</html>
<!-- 代码结束-->
好了,我们测试一下上面的代码,看到结果了吗?再让我们来看看Server.Transfer的运用语句,代码如下:
Server.asp(其实直接套用Response.asp就可以了):
<!-- 代码开始 -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<META NAME="Author" CONTENT="蒲俊杰">
<META NAME="Keywords" CONTENT="ASP,www.aspxhome.com">
<title>Response测试</title>
</head>
<body>
<%Server.Transfer "test.php"%><!-- 注意这条语句 -->
</body>
</html>
<!-- 代码结束-->
执行一下Server.asp!咦,怪了,什么都没有吗!但是你看看被IE解释后的代码,代码如下(注意千万不要被我下面的使用在html中的注释语句搞糊涂了):
"#(代码开始)
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<META NAME="Author" CONTENT="蒲俊杰">
<META NAME="Keywords" CONTENT="ASP,www.aspxhome.com">
<title>Response测试</title>
</head>
<body>
<!-- 代码开始 -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<META NAME="Author" CONTENT="蒲俊杰">
<META NAME="Keywords" CONTENT="ASP,www.aspxhome.com">
<title>Response测试</title>
</head>
<body>
<? echo "<center>这是一个测试,你好呀!欢迎你访问我们的网站<a href=http://www.aspxhome.com>www.aspxhome.com</a></center>" ; ?><!-- 注意这条PHP语句被看到了 -->
</body>
</html>
<!-- 代码结束--><!-- 注意这条语句 -->
</body>
</html>
test.php文件被当作一个文本文件include进来了,但是如果我们把原来的Server.asp文件中的Server.Transfer "test.php"换成 Server.Transfer "Response.asp"在Try一下(这样做,其实是让你了解ASP的引擎对于Server.Transfer的具体的解析情况),看看结果?是不是同我们直接运行Response.asp的结果一样???
我不知道,你现在对于Server.Transfer的用法糊涂没有?我都有一点糊涂了!但是不要忘了我写这篇东西的关键: Server.Transfer比Response.Redirect好,因为前者少了一个流程,加快了速度的,节约了时间,后者我就不说了,只是提醒你一点的就是Server.Transfer到底该用在什么条件下(前面很清楚了,我不多说了,再说我也就糊涂了,你多Try几下就明白了)


猜你喜欢
- 本文实例讲述了python实现去除下载电影和电视剧文件名中的多余字符的方法,是一个非常实用的技巧,分享给大家供大家参考。具体如下:有时候我们
- 本次分析一下Logger.info的流程1. Logger.info源码: def info(self, msg, *args, **kwa
- 我们在写代码的过程中,会经常使用到for循环,去循环列表,那么如果我们拿到一个类型为str的列表,对它进行for循环,结果看下面的代码和图:
- 废话少说,上干活。for的基本操作for是用来循环的,是从某个对象那里依次将元素读取出来。看下面的例子,将已经学习过的数据对象用for循环一
- 写在前面:在做表格的时候,难免会碰到做统计的时候。由于在项目中涉及到做统计的功能比较简单,之后也就没有过多的去研究更复杂的,这里简单记录下。
- Oracle text是Oracle的全文检索技术,是9i版本标准版和企业版的一部分。Oracle text使用标准的sql语言索引、查找、
- pycharm2019激活码是专门针对与pycharm2019这一款软件而研发的激活码,能够完美激活软件,并且能够支持2019.1版本,理论
- 在c语言中可以用system函数调用系统命令并得到输出,通过输出重定向也可以将程序执行的输出保存到文件以供使用,但用起来不是很方便。我这里介
- 本文借鉴于张广河教授主编的《数据结构》,对其中的代码进行了完善。从某源点到其余各顶点的最短路径Dijkstra算法可用于求解图中某源点到其余
- 关于浏览器的最离奇的统计结果之一就是Internet Explorer 版本6,7和8共存。截至本文,Internet Explorer各个
- 一、hashlib模块什么是哈希模块:hashlib模块是一种加密模块,内部存有多种加密类型加密的作用:可将明文数据进行加密,转换成一串密文
- 本文实例讲述了Python爬虫实现抓取京东店铺信息及下载图片功能。分享给大家供大家参考,具体如下:这个是抓取信息的from bs4 impo
- django中form表单设置action后,点提交按钮是跳转到action页面的,比如设置action为login,网址为192.168.
- 发现问题最近在工作中遇到一个问题,后端写好,前端写好,postman测试做好,一切都没有问题,但是实际用axios来实现登陆功能的时候问题就
- 前言关于 var、let 和 const 三个关键字的区别,是一个老生常谈的问题,也是经典的面试题。本篇文章将全面讲解三者的特性,以及它们之
- 目录1. 文件相关函数2. 函数_函数的参数2.1 函数2.2 函数的参数3. 收集参数4. 命名关键字_总结小提示:5. 小练习练习问题:
- 安装pyserialpip install pyserial查看可用的端口# coding:utf-8import serial.tools
- Python被誉为全世界高效的编程语言,同时也被称作是“胶水语言”,那它为何能如此受欢迎,下面我们就来说说Python入门学习的必备11个知
- 目录一、简单字段定义1、定义 Schema 并生成 Parquet 文件2、验证 Parquet 数据文件二、含嵌套字段定义1、验证 Par
- 1.安装pip我的个人桌面系统用的linuxmint,系统默认没有安装pip,考虑到后面安装requests模块使用pip,所以我这里第一步