• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ASP > ASP编码必备的8条原则

ASP编码必备的8条原则

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了asp编码,asp url编码,asp 中文编码,asp设置编码,asp设置编码格式等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

ASP是Active Server Page的缩写,意为“动态服务器页面”。ASP是微软公司开发的代替CGI脚本程序的一种应用,它可以与数据库和其它程序进行交互,是一种简单、方便的编程工具。在这里仅就代码优化进行一些简单讨论。

1、声明VBScript变量

在ASP中,对vbscript提供了强劲的支持,能够无缝集成vbscript的函数、方法,这样给扩展ASP的现有功能提供了很大便利。由于ASP中已经模糊了变量类型的概念,所以,在进行ASP与vbscript交互的过程中,很多程序员也惯于不声明vbscript的变量,这样加重了服务器的解析负担,进而影响服务器的响应请求速度。

鉴于此,我们可以象在VB中强制用户进行变量声明一样在vbscript中强制用户进行变量声明。实现方法是在ASP程序行首放置<% option explicit%>。

2、对URL地址进行编码

在我们使用asp动态生成一个带参数URL地址并进行跳转时,在IE中解析很正常,但在NetScrape浏览时却有错误如下:

HTTP Error 400  
400 Bad Request  
Due to malformed syntax, the request could not be understood by the server.  
The client should not repeat the request without modifications. 
</div>

解决方法是对生成的URL参数使用ASP内置server对象的URLencode方法进行URL编码,例子如下:

<%  
URL="xur.asp"  
var1="username=" & server.URLencode("xur")  
var2="&company=" & server.URLencode("xurstudio")  
var3="&phone=" & server.URLencode("021-53854336-186")  
response.redirect URL & "?" & var1 & var2 & var3  
%> 
</div>

3、清空对象

当使用完对象后,首先使用Close方法来释放对象所占用的系统资源;然后设置对象值为“nothing”释放对象占用内存。当年,我就是在一张页面上创建了百余个没有清空对象的记录集而崩溃了我的IIS 。下面的代码使用数据库内容建立一个下拉列表。代码示例如下:

<% myDSN="DSN=xur;uid=xur;pwd=xur"  
mySQL="select * from authors where AU_ID<100"  
set conntemp=server.createobject("adodb.connection")  
conntemp.open myDSN  
set rstemp=conntemp.execute(mySQL)  
if rstemp.eof then  
response.write "数据库为空"  
response.write mySQL  
conntemp.close  
set conntemp=nothing  
response.end  
 end if%>  
<%do until rstemp.eof %>  
<%  
rstemp.movenext  
loop  
rstemp.close  
set rstemp=nothing  
conntemp.close  
set conntemp=nothing  
%> 
</div>

4、使用字符串建立SQL查询

使用字符串来建立查询并不能加快服务器的解析速度,相反,它还会增加服务器的解析时间。但在这里仍然推荐使用字符串代替简单的查询语句来进行查询。这样做的好处是,可以迅速发现程序问题所在,从而便利高效地生成程序。示例如下:

<%mySQL= ""select * "  
mySQL= mySQL & "from publishers"  
mySQL= mySQL & "where state='NY'"  
response.write mySQL  
set rstemp=conntemp.execute(mySQL)  
rstemp.close  
set rstemp=nothing  
%> 
</div>

5、使用case进行条件选择

在进行条件选择的时候,尽量使用case语句,避免使用if语句。使用case语句,可以使程序流程化,执行起来也比if语句来的快。示例如下:

<%  
FOR i = 1 TO 1000  
 n = i  
 Response.Write AddSuffix(n) & "<br>"  
NEXT  
%>  
<%  
Function AddSuffix(num)  
numpart = RIGHT(num,1)  
Select CASE numpart  
CASE "1"  
IF InStr(num,"11") THEN  
num = num & "th"  
ELSE  
num = num & "st"  
END IF  
CASE "2"  
IF InStr(num,"12") THEN  
num = num & "th"  
ELSE  
num = num & "nd"  
END IF  
CASE "3"  
IF InStr(num,"13") THEN  
num = num & "th"  
ELSE  
num = num & "rd"  
END IF  
CASE "4"  
num = num & "th"  
CASE ELSE  
num = num & "th"  
END Select  
AddSuffix = num  
END FUNCTION  
%> 
</div>

6、使用adovbs.inc文件中定义的常量打开记录集

打开记录集时,可以定义记录集打开的游标类型和锁定类型。

在adovbs.inc文件中定义了一些常量来定义这些类型。adovbs.inc文件保存在\inetpub\iissamples\IISamples目录下面。下面列举几个常用的游标类型和锁定类型。

游标类型:

  • adOpenFowardOnly游标只能向前;
  • adOpenKeyset游标可向前或者向后,如一用户添加记录,新记录不会出现在记录集中;
  • adOpenDynamic游标动态随意;
  • adOpenStatic记录集不对其他用户造成的记录修改有所反映。

锁定类型:

  • adLockReadOney不能修改记录集中的记录;
  • adLockPessimistic在编辑一条记录时锁定它;
  • adLockOptimstic调用记录集Update方法时才锁定记录;
  • adLockBatchOpeimstic记录只能成批更新。
<!--#INCLUDE VIRTUAL="/ADOVBS.INC" -->  
<%  
connectme="DSN=xur;uid=xur;pwd=xur"  
sqltemp="select * from publishers where name='xur'"  
set rstemp=Server.CreateObject("adodb.Recordset")  
rstemp.open sqltemp, connectme, adOpenStatic,adLockOptimstic  
response.write rstemp.recordcount & " records in<br>" & sqltemp  
rstemp.close  
set rstemp=nothing  
%> 
</div>

7、避免在使用global.asa文件中进行对象定义

由于global.asa文件中的内容可以为站点内所有文件引用,无疑,在global.asa文件中进行对象定义可以省去很多重复工作。

比如在global.asa中的application_onstart函数中进行如下定义:

<%SUB application_onstart  
set application("theCONN")=server.createobject("adodb.connection")  
END SUB %>; 
</div>

这样就可以在站点任何代码中做类似引用:

<%  
mySQL="select * from publishers where state='xur'  
set rstemp=application("theconn").execute(mySQL)  
%> 
</div>

同样地,可以在session_onstart函数中创建记录集对象

<%SUB session_onstart  
set session("rstemp")=server.createobject("adodb.recordset")  
END SUB %> 
</div>

然后在站点也面中进行如下引用:

<%  
mySQL="select * from publishers where state='xur'  
set session("rstemp")=conntemp.execute(mySQL)  
%> 
</div>

但这样做的同时也有很大的负面影响,由于Application和session变量都只有在关闭网站的时候才释放占用的资源,所以session参数会浪费大量不必要内存,而且此时application变量成为服务器性能的瓶颈。

解决方法:

建立定义对象asp页面,在需要进行调用这些对象的页面上,引入这张asp页面。假设定义对象的asp页面名称为define.asp,则只要在对应asp页面中加入以下语句就能引入该页面。

<!--#INCLUDE VIRTUAL="/define.asp" -->
在进行页面引进时,最好在待引进的asp文件中不要包含<%@LANGUAGE="VBSCRIPT"%>语句。因为在asp文件中,只能有一句由@来定义的脚本解析语言。

8、安全防护

asp提供了很好的代码保护机制,所有的asp代码都在服务器端执行而只返回给客户端代码执行结果。即便这样,在老版本的IIS中还可以在文件名后面家::$DATA来查看asp的源代码,这已经属于Web Server安全范畴不在本文讨论范围内。下面提出两点简单的安全注意事项。

虽然在asp中建议引入文件以inc作为扩展名,在这里仍建议以asp作为引文件的扩展名。当这些代码在安全机制不好的Web Server上运行时,只需在地址栏上输入引入文件的地址(inc为扩展名),就可以浏览该引入文件的内容,这是由于在Web Server上,如果没有定义好解析某类型(比如inc)的动态连接库时,该文件以源码方式显示。

不要把数据库文件放在网站结构内部,这样,当恶意人士获取数据库路径后,就可以轻易获取该数据库,进而肆意更改数据库内容。比较好的做法是,为数据库建立DSN(Date Source Name),而在进行数据库访问时直接访问该DSN。

通过本文关于ASP编码的八条原则介绍,希望能够给你带来帮助。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • ASP编码必备的8条原则
  • ASP编码和解码函数详解
  • Asp编码优化技巧
  • Asp 编码互转的研究和实现代码
  • ASP生成UTF-8编码的代码
  • 对于ASP编码问题的深入研究与最终解决方案
  • ASP编码优化技巧8则
  • 用asp实现检测文件编码
  • 用ASP读取/写入UTF-8编码格式的文件

相关文章

  • 2017-05-11ASP动态生成的javascript表单验证代码
  • 2017-05-11asp实现防止从外部提交数据的三种方法第1/3页
  • 2017-05-11IE功能汇总
  • 2017-05-11ASP网站中数据库被挂木马的解决方案
  • 2017-05-11ScriptHtml 函数之过滤html标记的asp代码
  • 2017-05-11aspjpeg组件通用加水印函数代码
  • 2017-05-11127.0.0.1无法访问,没有权限: GetObject
  • 2017-05-11TSYS中生成静态页时溢出: 'CInt'
  • 2017-05-11关于无限分级(ASP+数据库+JS)的实现代码
  • 2017-05-11ASP Crazy 模版操作类(最简单的模板类、仅提供交流)

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 虚拟主机重启代码
    • ASP也使用ORM,给ASP上所有的SQL注入画上句号
    • ASP编程入门进阶(十九):ASP技巧累加(二)
    • 二级域名原理以及程序
    • asp程序定义变量比不定义变量速度快一倍
    • 写了段批量抓取某个列表页的东东
    • js+asp总结
    • asp防止上传图片木马原理解析
    • asp WAP获取手机终端信息的一段代码
    • 无组件实现文件上传/下载

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有