“网络程序设计--ASP”读书全过程之十六

  第六章

  这章学习server对象

  学习server对象的内容:

  1.了解server对象的属性和方法

  2.熟练掌握HTMLencode方法和MapPath方法

  内容蛮少的只学一个对象,在做ASP网站的时候就经常用到Server对象的CreateObject方法和MapPath方法,至于server对象的其他方法和属性也不熟悉用。

  看一看“Server对象的简介”:server对象是专为服务器上的特定任务而设计的,特别是与服务器的环境和处理活动有关的任务,主要用来创建COM对象和Scripting组件、转化数据格式、管理其他网页的执行。

  “COM组件和Scripting组件”是怎么个定义法还是不知道。。也不懂怎么个理解法,至于以前还没有学C#的时候,看到组件蛮难理解的,老是说组件是封装好的功能,这又来了“封装”这又怎么理解呢?哎这些抽象的词汇还真是令人头疼。现在理解起来好多了,也可以理解书中对于组件的概述。

  “组件”在计算机中也有实体,就像我们日常理解的车的零件一样,它是一个事物,这个实体就是以后缀为dll的文件。每个零件都有它的功能,当然组件也是有自己的功能,那么这些功能是怎样完成的呢?可能以前我就是老对这个问题不了解,所以很是不解,组件怎样完成功能不是我们要去了解的,因为这些组件不是我们开发的,我们也看不到它的实际代码,但我们可以用它提供的方法和属性来操作这个组件,完成我们的任务。所以组件基本就是要了解它的方法和属性。

  就暂时能这样理解了组件这个概念了。但是如果要自己用C#开发一个Com组件还是不理解为什么要叫Com,,呵呵呵。

  “server对象的属性”

  1.ScriptTimeout:设置或返回ASP页面中的脚本最长执行时间,超过这个时间脚本还没执行完,则会出错。

  server对象只有一个属性

  “server对象的方法”

  1.CreateObject:用于创建已注册到服务器的ActiveX组件,应用程序或脚本对象,该方法是server对象最重要的方法。

  2.HTMLencode:将字符串转换成HTML格式输出,学过HTML的时候知道一些特殊字符如果想在页面中显示,必须转换成什么格式了,不记得了。

  3.URLencode:将字符串转换成URL的编码输出.

  4.MapPath:将路径转化为物理路径

  5.Execte:从当前ASP页面跳转到另一个Asp页面执行,执行另一个ASP页面结束后返回原来跳转的ASP页面继续执行

  6.Transfer:把一个 ASP 文件中创建的所有状态信息(所有 application/session 变量以及所有 request 集合中的项目)发送(传输)到另一个 ASP 文件中,当第二个 ASP 完成任何时,它不会返回到第一个 ASP 页面

  server对象的方法还有一个方法:GetLastError,该方法返回一个ASP的Error对象,由于error对象没有学,所以也不学先这个方法。

  “ScriptTimeout属性”

  该属性用来规定脚本文件执行的最长时间。如果超出最长时间,脚本文件没有执行完毕,就自动停止执行,该属性以秒为单位

  练习代码:

  <html>

  <head>

  <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />

  </head>

  <body>

  <h1>开始</h1>

  <%

  server.scripttimeout=1

  for i=0 to 100000

  response.Write i+1&" "

  next

  %>

  <h1>结束</h1>

  </body>

  </html>

  在笔记本上测试循环1000的时候没问题,改到10000的时候ASP文件就停止执行了,后面的HTML代码也没有被执行。

  在IIs中设置脚本执行的时间默认为90秒。

  “HTMLencode方法”

  该方法使用HTML编码字符串,可以将HTML标记字符转换为字符实体,如果想显示HTML标记到浏览器中可以用该方法进行转换,前面也看到response对象的contentype属性值设置为“image/gif”时也可以将HTML标记在浏览器中显示出来。

  HTMLencode方法的语法为:

  response.HTMLencode(字符串)

  字符串最好是包含“HTML标记”,否则使用该方法没有意义。

  练习代码:

  <%

  respon.“网络程序设计--ASP”读书全过程之十六 .se.Write "<h>该行会被浏览器解释HTML标记</h><br/>"

  response.Write server.HTMLEncode("<h1>该行没有被浏览器解释HTML标记输出</h1>")

  %>

  “URLencode方法”

  该方法是把 URL 编码规则应用到指定的字符串。

  URL编码不是很了解,看看百度百科的介绍(http://baike.baidu.com/view/204662.htm):

  1.url编码是一种浏览器用来打包表单输入的格式。

  看到这句我的疑惑就明白了,为什么我用超链接的形式提交数据它没有编码,原来只是对表单的数据编码,代码如:

  <a href="1.asp?id=编程">提交</a>

  当用这种方法提交数据时,浏览器并没有使用url编码,使得我们可以看到页面提交的数据,提交时在地址栏中显示为:

  http://localhost/www/Test/1.asp?id=编程

  当用表单的get提交时,代码如下:

  <html>

  <head>

  <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />

  </head>

  <body>

  <form name="form1" method="get" action="1.asp">

  <input name="id" type="text" id="id">

  <input type="submit" name="Submit" value="提交">

  </form>

  </body>

  </html>

  如果在文本框中输入编程,在地址栏中提交的信息是:http://localhost/www/Test/1.asp?id=%B1%E0%B3%CC&Su bmit=%CC%E1%BD%BB

  如果把这句<a href="1.asp?id=编程">提交</a>

  写成

  <a href="1.asp?id=<%=server.URLEncode("编程")%>">提交</a>

  使用UrlEncode先对字符串进行编码,输出为:http://localhost/www/Test/1.asp?id=%B1%E0%B3%CC,这样用超链接提交数据时,其提交的值也可以用URL编码了。

  以前写程序的时候还不是很了解,查资料也非常懒,现在问题解决了。

  URL编码遵循下列规则:

  1. 每对name/value由&符分开;每对来自表单的name/value由=符分开

  2.如果用户没有输入值给name,那么这个name还是出现,只是无值 3.任何特殊的字符(就是那些不是简单的七位ASCII,如汉字)将以百分符%用十六进制编码,当然也包括象 =, &, 和 % 这些特殊的字符。(ascii码在学C语言的时候老是遇到,像大小写字母,数字都是ASCII码)

  以上是从百度百科得知。。呵呵不错有了点了解。

  “MapPath方法”

  该方法将虚拟路径转化为物理路径。

  使用该方法就必须得了解虚拟路径和物理路径,而且还有绝对路径和相对路径的说法。

  什么是虚拟路径,什么是物理路径,有了虚拟路径和物理路径为什么还有相对路径和绝对路径。现在还没搞清楚这些概念,呵呵蛮糊涂的。。。

  还是先了解什么是相对路径和绝对路径吧?

  在操作系统中表示路径时,凡是以“\”开头的路径就是绝对路径,表示从根目录开始,而没有以“\”开头的路径就是相对路径,表示从当前目录开始,在操作系统中的根目录是以盘符开始的。网页中的相对路径和绝对路径也可以叫做“HTML相对路径和绝对路径”,网页中的跟目录是“C:\inetpub\wwwroot”在该文件夹,以前不懂这个文件夹是叫什么了?原来是IIS服务器的根目录,要代码测试了IIs的根目录:

  <%

  response.Write server.MapPath("\")&"<br/>"

  response.Write server.MapPath("/")&"<br/>"

  %>

  两个都返回c:\inetpub\wwwroot,

  可以看到使用符号“\”和“/”这两个符号就得到了iis服务器的根目录。在网页的路径格式中可以使用“/”或“\”,意思都相同,没有区别

  相对路径的表示方式 :

  1. 在相对路径中访问上一级目录的符号是“../”,上上级目录就是有多少个上级目录就用多少个“../”符号。

  2. 在相对路径中访问该目录下的子目录,直接写目录名

  3.在相对路径中访问同级目录下的文件,直接写文件名

  练习代码:

  <%

  response.Write "用相对路径访问上级目录的文件a.asp:"&server.MapPath("..\a.asp")&"<br/>"

  response.Write "用相对路径访问下一级目录的文件a.asp:"&server.MapPath("xia\a.asp")&"<br/>"

  response.Write "用相对路径访问当前目录的文件a.asp:"&server.MapPath("a.asp")&"<br/>"

  %>

  可以看到用相对路径返回是本地计算机的实际路径。

  绝对路径的表示方式:绝对路径必须以“\”或“/”开头,从c:\inetpub\wwwroot目录算起。在绝对路径中不可以用相对路径的符号“../”来表示上一级目录,必须要写上一级目录的实际名称,否则会出错。代码如下

  <%

  response.Write server.MapPath("\a.asp")

  %>

  我的a.asp文件在虚拟目录www中,可是用绝对路径访问当前目录下的文件a.asp时返回了c:\inetpub\wwwroot\a.asp这个地址,这是明显不对的,应该返回c:\inetpub\wwwroot\www\a.asp这样的路径,所以用绝对路径的访问方式必须写上该文件所在的文件夹的实际名称,所以用绝对路径的方式访问a.asp这个文件的代码是:

  <%

  response.Write server.MapPath("\www\a.asp")

  %>

  看完了难懂的绝对路径,哇花了好长时间来理解,也值了。总算弄清怎么写相对路径和写绝对路径了。

  最后一句,相对路径要优于绝对路径,用相对路径,程序移植方便,所以在ASP程序中都以相对路径的格式来写。

  什么是虚拟路径和什么是物理路径?

  物理路径就是网页文件在服务器上的实际路径,HTML中的物理路径是以 c:\inetpub\wwwroot为根目录,虚拟路径就是相对于根目录

  c:\inetpub\wwwroot的路径,只是用符号“\”代替了该路径而已。

  物理路径的写法是:c:\inetpub\wwwroot\www\a.asp

  虚拟路径的写法是:\www\a.asp

  在学相对路径和绝对路径的时候,在server.mappath方法中用绝对路径返回的值就是物理路径,而所写的这个绝对路径就是虚拟路径。

  物理路径和虚拟路径只是一个叫法,表示的时候还是用相对路径和绝对路径来区别不同。

  终于看完了Mappath这个方法了。

  “Execute方法”

  该方法用来停止执行当前的网页,转到新的网页,执行完毕后返回原网页,继续执行Execute方法后面得语句。

  前面学过response.redirect方法也可以强制页面跳转,而且不会返回原网页。看看Execute方法和redirect有什么不同的。

  1.redirect方法重定向页面是发生在客户端,重定向强制WEB服务器处理额外的请求。而EXecute方法的重定向网页是发生在服务器。

  2.redirect方法不能把一些原页面的环境变量传递到跳转的页面,而Execute方法可以让跳转的页面继承原页面的环境变量。

  4.redirect可以转向应用程序中的其他页面和其他网站,而Execute只能转向同一个应用程序下的其他文件。

  Execute方法的语法为:

  server.Execute(path)

  练习代码:

  <html>

  <head>

  <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />

  </head>

  <body>

  <h1>开始</h1>

  <%

  server.execute("b.asp")

  %>

  <h1>结束</h1>

  </body>

  </html>

  当使用execute对其他网站跳转时,如改成server.execute(http://www.baidu.com/)显示出错信息:加载此页时,对 Server.Execute 的调用失败。

  使用该方法重点向页面时,跳转的页面不应该再包含在原页面中已有的html标记,最好是纯asp页面.

  “Transfer方法”

  该方法和execute方法相似,重定向也是在服务器,唯一不同就是该方法跳转页面后不返回原页面。

  练习代码: <html>

  <head>

  <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />

  </head> <body>

  <h1>开始</h1>

  <%

  server.Transfer("b.asp")

  %>

  <h1>结束</h1>

  </body>

  </html>

  本章对server对象的学习结束了,主要学习了server对象的scripttimeout属性,Mappath方法,execute方法,Transfer方法,HTMLencode方法和URLencode方法。还有createobject方法,getlasterror方法没学,由于这两个都和组件的知识有关,所以可能为了方便理解,应该是学习ASP的内置组件的时候就可以认识了。

  从第四章就开始看asp的内置对象了,一共学了request,response,session,application,server5个内置对象,并了解了这些对象常用的方法和属性,当然还学了一个Global.asa文件。后面几章就是看在ASP中应用数据库,和ASP的内置组件,很期待了。。。。。。Oh

 

你可能感兴趣的:(职场,asp,休闲,网络程序设计)