您当前的位置: 首页 > 网站编程 > ASP教程 > ASP设计常见问题及解答精要

ASP设计常见问题及解答精要

作者:guanchaofeng 来源:不详 发布时间: 2009-09-30 08:52 点击:
作为微软推出的网页与数据库解决方案,ASP由于有微软得天独厚的操作系统等技术后盾支持,因此得到了迅速的发展,并且正受到越来越多的欢迎,在目前在电子商务网站的建设中有很多都使用ASP来编写程序。 近来有很多的读者向我们咨询学习ASP的方法和在学习中遇

ASP设计常见问题及解答精要

  作为微软推出的网页与数据库解决方案,ASP由于有微软得天独厚的操作系统等技术后盾支持,因此得到了迅速的发展,并且正受到越来越多的欢迎,在目前在电子商务网站的建设中有很多都使用ASP来编写程序。
  
  近来有很多的读者向我们咨询学习ASP的方法和在学习中遇到的一些问题,其中有一些是初学者经常遇到和面临的问题。为了让读者在学习ASP的过程中加深对ASP的了解,并能够有效地解决遇到的问题,我们特别收集了比较有代表性的一些问题,在此列举出来并一一给予解答,希望能在这有限的篇幅里为你学习ASP助一臂之力。
  
  1、问题:ASP是一种编程语言吗?
  
  答:ASP不是编程语言,而是一种开发环境。ASP提供了一个在服务器端执行指令的环境,它利用了特殊的符号()来区分HTML与必须经过服务器翻译才能送往客户端的命令。它可以执行的指令包括HTML语言,MicrosoftVBScript和MicrosoftJscript等,因此可以制作出功能强大的Web应用程序。
  
  2、问题:在Web服务器上容纳多个Web站点,能使用PWS吗?
  
  答:在PWS上只能容纳一个Web站点。为了在相同的计算机上容纳多个Web站点,需要使用WindowsNTServer或Windows2000Server/Professional和IIS。
  
  3、问题:如何使用6个内置ASP对象?
  
  答:ASP提供了多个内嵌对象,无须建立就可以在指令中直接访问和使用它们,这六个对象主要有:请求(Request)对象、响应(Response)对象、工作阶段(Session)对象、应用程序(Application)对象、服务器(Server)对象、Cookies对象,这六个对象中的服务器(Server)对象可加载其他组件,这可以扩展ASP的功能。
  
  使用Server。CreateObject所建立的对象,它的生命周期在它建立时开始,在它所在的网页程序结束时结束。如果想要让该对象跨网页使用,则可以用Session对象来记录Server。CreateObject所建立的对象。
  
  4、问题:为什么在使用Response。Redirect的时候出现以下错误:“标题错误,已将HTTP标题写入用户端浏览器,对任何HTTP的标题所作的修改必须在写入页内容之前”?
  
  答:Response。Redirect可以将网页转移至另外的网页上,使用的语法结构是这样的:Response。Redirect网址,其中网址可以是相对地址或绝对地址,但在IIS4。0使用与在IIS5。0使用有所不同。
  
  在IIS4。0转移网页须在任何数据都未输出至客户端浏览器之前进行,否则会发生错误。这里所谓的数据包括HTML的卷标,例如:<HTML>,<BODY>等,而在IIS5。0中已有所改进,在IIS5。0的默认情况下缓冲区是开启的,这样的错误不再产生。
  
  在Response对象中有一Buffer属性,该属性可以设置网站在处理ASP之后是否马上将数据传送到客户端,但设置该属性也必须在传送任何数据给客户端之前。
  
  为保险起见,无论采用何种ASP运行平台,在页面的开始写上<%Response。Buffer=True%>,将缓冲区设置为开启,这样的错误就不会发生了。
  
  5、问题:缓冲输出对于网页传输有没有影响?
  
  答:在比较大的Web页中,第一部分在浏览器中出现可能会有一些延迟,但是加载整个Web页的速度比不用缓冲要快。
  
  6、问题:在没有表单提交时查询字符串的值是否可以使用Request。QueryString集合?
  
  答:Request对象用于读取浏览器的数据,它除了可以读取表单字段的内容,还可以用来读取附带在网址后面的参数,无论请求字符串怎样添加到链接地址中对Request来说都没有什么不同。使用get方法提交一个表单,还是跟随一个附加查询串的链接查询字符串中所有的值,都可以使用Request。QueryString集合。
  
  7、问题:我在ASP脚本中写了很多的注释,这会不会影响服务器处理ASP文件的速度?
  
  答:在编写程序的过程中,作注释是良好的习惯。经国外技术人员测试,带有过多注释的ASP文件整体性能仅仅会下降0。1%,也就是说在实际应用中基本上不会感觉到服务器的性能下降的。
  
  8、问题:需不需要在每个ASP文件的开头使用<%@LANGUAGE=VBScript%>?
  
  答:在每个ASP文件的开头使用<%@LANGUAGE=VBScript%>代码是用来通知服务器现在使用VBScript来编写程序,但因为ASP的预设程序语言是VBScript,因此忽略这样代码也可以正常运行,但如果程序的脚本语言是JavaScrip,就需要在程序第一行指明所用的脚本语言。
  
  9、问题:我有没有必要在每一个ASP文件中使用“OptionExplicit”?
  
  答:在实际应用中,VBScript变量的概念已经模糊了,允许直接使用变量,而不用Dim声明变量,但这并不是一个好习惯,容易造成程序错误,因为可能重复定义一个变量。我们可以在程序中使用OptionExplicit语句,这样在使用一个变量的时候,必须先声明它,如果使用了没有经过声明的变量,运行时,程序就会出错。
  
  实践证明,ASP文件中使用“OptionExplicit”可以使得程序出错机会降到最少,并且会大大提升整体性能。
  
  10、问题:运行ASP文件时有什么安全措施?
  
  答:ASP提供了很好的代码保护机制,所有的ASP代码都在服务器端执行而只返回给客户端代码执行结果。但仍不排除恶意人士对Web服务器的刻意破坏,所以在编写ASP文件时更要注意安全问题。
  
  虽然在ASP中引入文件以inc作为扩展名,在这里仍建议以ASP作为引文件的扩展名。当这些代码在安全机制不好的WebServer上运行时,只需在地址栏上输入引入文件的地址(inc为扩展名),就可以浏览该引入文件的内容,这是由于在WebServer上,如果没有定义好解析某类型(比如inc)的动态连接库时,该文件以源码方式显示。
  
  另外,不要把数据库文件放在网站结构内部,这样,当恶意人士获取数据库路径后,就可以轻易获取该数据库,进而肆意更改数据库内容。比较好的做法是,为数据库建立数据源名称DSN(DateSourceName),在DSN中存储了有关连接到指定数据提供者的信息,包括:“数据库的物理位置,用于访问数据库的驱动程序的类型,访问数据库的驱动程序所需要的任何其他参数”,在进行数据库访问时可以直接访问该DSN。
  
  11、问题:评介Web数据库管理系统时,应该考虑哪些问题?
  
  答:在评价一个Web数据库管理系统时,必须考虑到三方面的问题:多用户问题;所建立的Web数据库应该是关系型的;数据库的安全性问题。
  
  12、问题:ADO是什么,它是如何操作数据库的?
  
  答:ADO的全名是ActiveXDataObject(ActiveX数据对象),是一组优化的访问数据库的专用对象集,它为ASP提供了完整的站点数据库解决方案,它作用在服务器端,提供含有数据库信息的主页内容,通过执行SQL命令,让用户在浏览器画面中输入,更新和删除站点数据库的信息。
  
  ADO主要包括Connection,Recordset和Command三个对象,它们的主要功能如下:
  
  ·Connection对象:负责打开或连接数据库文件;
  
  ·Recordset对象:存取数据库的内容;
  
  ·Command对象:对数据库下达行动查询指令,以及执行SQLServer的存储过程。
  
  13、问题:使用Recordset对象和Command对象来访问数据库的区别在哪里?
  
  答:Recordset对象会要求数据库传送所有的数据,那么数据量很大的时候就会造成网络的阻塞和数据库服务器的负荷过重,因此整体的执行效率会降低。
  
  利用Command对象直接调用SQL语句,所执行的操作是在数据库服务器中进行的,显然会有很高的执行效率。特别是在服务器端执行创建完成的存储过程,可以降低网络流量,另外,由于事先进行了语法分析,可以提高整体的执行效率。
  
  14、问题:是否必须为每一个Recordset对象创建一个Connection对象?
  
  答:可以同时对不同的Recordset对象使用相同的Connection对象,以节省资源。
  
  15、问题:什么是数据库管理系统(DBMS)?
  
  答:数据库为了保证存储在其中的数据的安全和一致,必须有一组软件来完成相应的管理任务,这组软件就是数据库管理系统,简称DBMS,DBMS随系统的不同而不同,但是一般来说,它应该包括以下几方面的内容:
  
  数据库描述功能:定义数据库的全局逻辑结构,局部逻辑结构和其他各种数据库对象;
  
  数据库管理功能:包括系统配置与管理,数据存取与更新管理,数据完整性管理和数据安全性管理;
  
  数据库的查询和操纵功能:该功能包括数据库检索和修改;
  
  数据库维护功能:包括数据引入引出管理,数据库结构维护,数据恢复功能和性能监测。
  
  为了提高数据库系统的开发效率,现代数据库系统除了DBMS之外,还提供了各种支持应用开发的工具。
  
  16、问题:当前流行的WEB数据库管理系统有哪些?
  
  答:当前流行的Web数据库管理系统有微软的SQLServer、Oracle、DB2、Sybase,小规模的企业多使用Access。
  
  17、问题:在ASP中使用ADO的AddNew方法和直接使用“Insertinto。。。”语句有何不同?哪种方式更好?
  
  答:ADO的AddNew方法只是将“Insertinto”语句封装了起来,所以,当对大量数据进行操作的时候,直接使用SQL语句将会大大加快存取数据的速度,因为它减少了ADO的“翻译”时间,由于SQL语句所执行的操作是直接在数据库服务器中进行的,尤其在数据量很大的时候有显著的优势。
  
  18、问题:为什么我在ASP中使用标准的插入记录语句insertintobooks(name,email)values(“icu8”,“admin@icu8。com”)会出错?
  
  答:SQL(StructuredQueryLanguage/结构式查询语言)是IBM公司在1970年代所发展出来的数据查询语言,它现在已经成为关系型数据库查询语言的标准。SQL语句是一种以英文为基础的程序语言,可以使用它来添加,管理以及存取数据库。
  
  在SQL语句中添加时的字符串虽然可以使用双引号,但在ASP中却需要使用单引号才能正常执行。所以应当写成insertintobooks(name,email)values(‘icu8’,‘admin@icu8。com’)。
  
  19、问题:什么是ActiveX控件?在哪里可以得到这些ActiveX控件?
  
  答:MicrosoftActiveX控件是由软件提供商开发的可重用的软件组件。除了ASP的内嵌对象外,另外安装进来的ActiveX控件也可以在ASP中使用,这样可以节省许多宝贵的开发时间,在ASP中其实也内嵌了很多的ActiveX控件可以使用。
  
  使用ActiveX控件,可以很快地Web应用程序、以及开发工具中加入特殊的功能。例如,使用AdRotator对象来制作广告滚动板,使用FileSystemObject对象进行文件存取,使用Marquee对象实现滚动文字。
  
  现在,已有1000多个商用的ActiveX控件,开发ActiveX控件可以使用各种编程语言,如C,C++等,以及微软公司的VisualJava开发环境MicrosoftVisualJ++。ActiveX控件一旦被开发出来,设计和开发人员就可以把它当作预装配组件,用于开发客户程序。以此种方式使用ActiveX控件,使用者无需知道这些组件是如何开发的,在很多情况下,甚至不需要自己编程,就可以完成网页或应用程序的设计。
  
  目前由第三方软件开发商提供的商用控件有1000多种。微软ActiveX组件库(ActiveXComponentGallery)中存着有关信息以及相关的连接,它们指向微软及第三方开发商提供的各种ActiveX控件。在微软ActiveX组件库(ActiveXComponentGallery)中,可以找到开发Internet增强型ActiveX控件的公司列表。
  
  20、问题:为什么使用strStartPort=(Request。form("catmenu_0")语句取到表单中起始站点的值在数据库却找不到?
  
  答:这是因为取到的起始站点的值可能有空格,比如原意是“杭州”,但是由于空格存在,ASP程序取到的值可能就是“杭州”,而数据库中只有“杭州”的记录,当然就找不到了,解决的方法是利用Trim函数将字符串两头空格全部去除,相应的语句为:
  
  答:任何导致网页结束的操作,比如当按下浏览器的“刷新”按钮,或者关闭了浏览器,再重新打开它,都会导致变量生命周期的结束。
  
  如果希望在网页结束执行时,还能够保留变量的内容,以备下一次执行时使用,就可以借助Application对象来实现。比如可以利用Application对象来制作统计网站访问量的计数器。
  
  Session对象跟Application对象一样,可以在网页结束时将变量的内容存储下来,但是与Application对象不同的是,每个联机是一个独立的Session对象,简单地说就是所有联机上网者只会共享一个Application对象,但每位联机上网者却会拥有自己的Session对象。
  
  Application对象与Session对象可以帮我们把信息记录在服务器端,而Cookies对象则会借助浏览器提供的Cookies功能将信息记录在客户端。有一点要注意,Cookies是记录在浏览器的信息,所以数据的存取并不象存取其他ASP对象(信息存储在Server端)那么简单,就实际运行来看,只有在浏览器开始浏览Server的某一网页,而Server尚未下载任何数据给浏览器之前,浏览器才能够与Server进行Cookies数据的交换。
  
  22、问题:对象使用完后应该怎么办?
  
  答:当使用完对象后,首先使用Close方法来释放对象所占用的系统资源;然后设置对象值为“nothing”来释放对象占用的内存,否则会因为对象太多导致WEB服务站点运行效率降低乃至崩溃,相应语句如下:
  
  <%
  
  对象。close
  
  set对象=nothing
  
  %>
  
  23、问题:在ASP文件中读取HTML的表单字段有几种方法?
  
  答:Request对象除了可以用来读取附带在网址后面的参数以外,也可以读取HTML表单字段的内容,经常使用的语法结构如下:
  
  <formmethod=“Get│Post”Action=“URL”><form>Web站点名称(或站点的IP地址)/ASP文件名称”,回车后就可以在浏览器中看到服务器执行ASP文件的结果。
  
  27、问题:什么是ASP。NET?它与ASP有什么关系?
  
  答:ActiveServerPages(ASP,活动服务器页面)就是一个比较简单编程环境,在其中,可以混合使用HTML、脚本语言以及少量组件来创建服务器端的Internet应用程序;
  
  ASP。NET是微软力推的功能强大的编程环境,可以使用C#等多种高级语言及脚本语言、HTML、XML、XSL等来创建基于网络的应用程序。ASP。NET将C#作为一种面向对象语言,在很多方面来看,C#将成为微软的与Java相似的语言。C#是ASP。NET开发中一个最重要的功能,微软会将C#发展成为Java的强劲对手。这也是微软。Net框架的一个重要组成部分。我认为C#是微软在编程语言领域击败对手的主要工具。
  
  ASP。NET在面向对象性、数据库连接、大型站点应用等方面都优于ASP程序,ASP。NET还提供更多的其他方面的新特性,例如:内置的对象缓存和页面结果缓存;内置的XML支持,可用于XML数据集的简单处理;服务器控制提供了更充分的交互式制等。
  
  ASP。NET依然完全锁定在微软的操作系统中,要真正发挥ASP。NET潜力,你要使用C#或vb。net。这两种语言将成为ASP。NET标准的核心的脚本语言。

分享到:
本文"ASP设计常见问题及解答精要"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4