《第9部分服务器对象》由会员分享,可在线阅读,更多相关《第9部分服务器对象(38页珍藏版)》请在金锄头文库上搜索。
1、第9章 服务器对象本章主要内容如下在ASP中,服务器的对象(Server)是五个内置对象之一,用它可以创建其它类型的对象,本章分别讨论:用服务器对象创建对象 对发送内容进行编码 求文件的物理路径 脚本运行时间的控制 本章目录9.2 编码发送内容 9.1 用服务器对象创建其它对象 本章小结 习题9.3 求文件的物理路径 9.4 设置脚本运行时间 9.1 用服务器对象创建其它对象 除了ASP中内建的对象外,其它所有对象都必须通过服务器对象来创建,如后面要讨论的文件对象、数据库对象,以及其它已注册到服务器上的ActiveX组件对象。以下分别讨论:对象的创建对象的释放1.对象的创建创建对象一般形式为:
2、set 对象变量名=Server.CreateObject(“对象组件名称”)例如: set conn=Server.CreatObject(“ADODB.connection”)创建了一个用于处理数据库的对象,其中conn为对象变量名,ADODB.connection为对象组件名称。2.对象的释放 创建的每一个对象,都占用一些系统资源,如果对象不再使用时,应该释放其占用的资源,其语法为: set 对象变量名=nothing例如: set conn=nothing 9.2 编码发送内容 在html中,将某些符号赋予了新的含义,因此,ASP中将某些内容发送给浏览器时,应将包含的可能产生对浏览器来
3、说具有特殊含义的符号进行必要的转换。为此,服务器对象根据不同的需要设计了几个实现转换的方法。 1html编码字符串 2URL编码字符串 3编码脚本路径 1html编码字符串 (1)必要性 当你将一段来自于数据库或其它位置的内容插入到html文档中时,浏览器会把其中的一些符号当作html的标签来识别,从而显示出不正常的结果,请看下例。 网页中包含特殊信息的网页 网页内容%response.write 网页中,加黑显示一段文字的使用形式为:文字内容response.write 在C语言中,变量a、b中取较大者的表示形式为:a 这是html标签在网页中小于号将作为特殊符号处理网页中包含特殊信息的网页
4、 浏览结果注意:这显然是不希望看到的结果。这里的原有的小于号被当成是特殊符号了点击验证本例1html编码字符串 (2)处理方法可以使用服务器对象来对输出内容进行编码,以解决上述存在的问题。形式如下: Server.HtmlEncode(“输出字符串”)请看修改后的例子 对输出字符进行编码 网页内容%response.write Server.HtmlEncode(加黑显示文字的形式为:文字内容)response.write response.write Server.HtmlEncode(两变量中取较大者的表示形式为:a对输出字符进行编码 浏览结果点击验证本例1html编码字符串 (3)特殊情
5、况的处理 如果被编码的字符串是来自于数据库的某一字段,这时,很可能是一个Null值,而直接对它进行编码将产生运行错误。例: 单击这里浏览网页看错误信息单击这里浏览网页看错误信息若无法显示请单独打开浏览器若无法显示请单独打开浏览器1html编码字符串 (3)特殊情况的处理 为了避免这一错误的发生,在输出来自于数据库的内容时,应先使用函数isNull进行判空的操作。形式如下 : If isNull(str) then Response.write “” Else Response.write Server.HtmlEncode(str) End if 2URL编码字符串 对于发送给服务器的带有查询
6、字符串的重定向命令中,有时也可能包含一些特定的字符。例如,要通过网页abc.asp查询一个包含a+b的表达式,可能使用如下形式: 而此时,服务器端接收到的查询字符串变成了“exp=a b”,即其中的“+”变成了空格。 2URL编码字符串 为了让服务器端能接收到正确的查询字符串,可以使用服务器对象的URLEncode 方法。使用形式如下: Server.URLEncode(“编码字符串”)即把上面的一行改写成如下形式:注意:不能将整个查询字符串作为参数来进行编码,即不能把上式写成如下形式:因为式中的“=”是不应该转换的。2URL编码字符串 另外对于多个查询变量还需要分别转换,如例所示。网页内容表
7、达式:值:2URL编码字符串 浏览结果点击验证本例3编码脚本路径当重定向目标网页所在目录的目录名中包含特殊字符,例如空格,则还需要对脚本的路径进行编码。这时,可使用服务器对象的UrlPathEncode方法,使用形式如下: Server.UrlPathEncode(“路径字符串”) 9.3 求文件的物理路径 许多文件操作都需要使用实际的目录路径作为参数,如文件的打开、复制或删除等操作。可以使用服务器的路径映射方法来求某一虚拟路径所对应的物理路径。使用形式如下: Server.mappath(“虚拟的路径字符串”)即求指定虚拟路径所对应的物理路径。 求物理路径例 网页内容Web站点的根目录为:当
8、前脚本的虚拟路径为: 当前脚本的物理路径为: 当前目录中文件名为abc.txt的物理路径为: 求物理路径例 浏览结果注意:这一方法中并不检查实际的文件是否存在。即上例中abc.txt可能实际上并不存在。 点击验证本例9.4 设置脚本运行时间 一般情况下,服务器不应该让一个脚本无限制地执行。对此,在服务器管理器中可以设置ASP脚本的超时时间,默认值为90秒。这就意味着,如果没有特别的说明,所有ASP脚本都必须在这一时间范围内执行完成,否则将出现超时错误的提示。 (1)Win7中脚本运行时间设置右击后选择打开功能(2)其它系统设置步骤设置站点一级的脚本运行超时时间的步骤如下: (1) 打开服务器管
9、理器(ISM),右击站点名称设置脚本运行时间步骤打开Web站点的属性(Properties)对话框,如图所示 设置脚本运行时间步骤(2) 切换到主目录(Home Directory)选项卡设置脚本运行时间步骤(2) 单击配置(Configuration)按钮,打开应用程序配置(ApplicationConfiguration)对话框,如图所示。 设置脚本运行时间步骤(3) 切换到应用程序选项(App Options)选项卡,将ASP脚本超时值(ASP Script Timeout)改变成想要的新值。如图所示。 设置脚本运行时间步骤(4) 单击确定按钮,关闭这两个对话框,保存所做的改变。设置立即
10、生效。若要设置应用程序一级的脚本运行时间,只需在ISM窗口的站点下的应用程序名上右击鼠标,其后的操作相同。 设置脚本运行时间步骤作为ASP脚本的编写者,如果有个别脚本需要较长的运行时间,可以通过在网页中改变Server对象的scriptTimeout属性值来延长超时时间。形式如下:Server.ScriptTimeout=100注意:如果在脚本设置一个比默认值小的值,将不起作用。 脚本超时时间测试例网页内容% for i=1 to 50 nexttime=dateadd(s,5,time) do while time产生5秒种后的时间 延时5秒脚本超时时间测试例浏览结果本例在Windows 2
11、000服务器上的执行结果如图所示 但在PWS上浏览时有一些误差点击验证本例本章小结 服务器对象提供给我们的主要是创建对象方法,通过它可以创建所有系统中已经注册的ActiveX组件对象。然而,这一方法只能在以后的章节中使用它,本章主要讨论了服务器对象的几个实现字符串转换的方法。另外,也介绍了服务器对象的脚本超时时间设置问题。 习题 1你认为哪些信息在发送到浏览器前需要转换。2服务器对象的创建对象方法能用于创建像response这样的内置对象吗?3能使用服务器对象的求物理路径方法求得某文件的实际路径,你认为这会给网站带来安全隐患吗?4你在从数据库表中查找内容,并将它们html编码后发送给用户时需要注意哪些事项?