找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 6122|回复: 2

使用VB将ASP代码封装生成DLL文件

[复制链接]

1214

主题

352

回帖

11

精华

管理员

菜鸟

积分
93755

贡献奖关注奖人气王精英奖乐于助人勋章

发表于 2008-5-11 09:41:40 | 显示全部楼层 |阅读模式
<p><font face="Verdana">使用VB将ASP代码封装生成DLL文件<br/>一、引言<br/>  Server端的脚本运行环境,它简单易用,不需要编译和连接,脚本可以在 Server端直接运行,并且它支持多用户、多线程,在 Web开发中得到了广泛的应用。服务器端的组件有别于客户端的组件。客户端的组件是通过网络传输,依靠HTML来起作用,而且只能在IE上有用。但是服务器端的组件是运行在服务器端,它在服务器上执行各种操作。因此,所有的浏览器都能享用,它依靠的是服务器而不是浏览器。但是,因为 ASP脚本是纯文本格式,所以恶意者通过源代码可以很容易地看到原本不该看到的页面内容。因此,保护ASP源代码显得非常重要。将ASP代码封装成DLL,不仅加快了ASP代码的执行速度,而且也能保护原代码。当IIS被请求执行一个ASP程序,它首先会在ASP文件中找到标签之间的代码,并且执行它(也可以是之间的代码)。如果这个ASP程序在先前被调用过,那么它就会用内存中的编译过的程序来向用户返回HTML代码,如果没有,那么它就重新编译。这样就大大节省了服务器的资源。<br/>  二、实现方法<br/>  启动你的VB,选择ActiveX图标。这个图标可以在新建工程找到!VB会提供一个默认的工程名(project1)和类名(class1)。在动手之前请首先确认我们拥有Microsoft&nbsp; ActiveX Data Object 2.0 Library,它在我们的程序非常有用。从菜单中选择"工程",然后在其中选择"引用",就会出现"引用"窗口,从中选择Microsoft ActiveX Data Object 2.0 Library。<br/>  现在我们有了我们自己的工程(project1)和类名(class1)。以后我们就会在ASP代码中使用它们的名字来引用这个组件。在ASP中我们就这样引用,如下: <br/>Set ObjReference = Server.CreateObject("ProjectName.ClassName")<br/>  为了在类中使用ASP的方法,你必须在此类中写上初始和终止这两个函数。输入如下代码:程序清单中<br/>Class1.cls中的Private Sub Class_Initialize()和Private Sub Class_Terminate()<br/>  将ASP代码中的关键功能制作成动态链接库(.dll),部分隐藏 ASP源代码。 例如:程序清单中的Global.bas和Class1.cls中输入的代码(代码的主要功能是检索数据库中的记录并显示出来)。<br/>  在VB的下拉菜单中选择文件→生成article.dll→选择要保存的目录。找到article.dll将其复制到系统盘system32文件夹中,最后一步注册DLL文件。在开始菜单中选择运行输入regsvr32 c:\winnt\system32\article.dll。<br/>  三、程序清单<br/>  Global.bas中的代码:<br/>以下是引用片段:<br/>Public objContext As ObjectContext <br/>Public Application As ASPTypeLibrary.Application <br/>Public Server As ASPTypeLibrary.Server <br/>Public Session As ASPTypeLibrary.Session <br/>Public Response As ASPTypeLibrary.Response <br/>Public Request As ASPTypeLibrary.Request <br/>  Class1.cls中的代码: <br/>Private Sub Class_Initialize() <br/>On Error Resume Next <br/>Set objContext = GetObjectContext <br/>Set Application = objContext.Item("Application") <br/>Set Server = objContext.Item("Server") <br/>Set Session = objContext.Item("Session") <br/>Set Request = objContext.Item("Request") <br/>Set Response = objContext.Item("Response") <br/>End Sub <br/>Private Sub Class_Terminate() <br/>On Error Resume Next <br/>Set Application = Nothing <br/>Set Server = Nothing <br/>Set Session = Nothing <br/>Set Request = Nothing <br/>Set Response = Nothing <br/>Set objContext = Nothing <br/>End Sub <br/>Public Sub AspClassInit() <br/>On Error GoTo Err <br/>Set conn = Server.CreateObject("ADODB.Connection") <br/>strcon = "Provider=Microsoft.Jet.OLEDB.4.0;" &amp; _ <br/>"Data Source=" &amp; Server.MapPath("Article.mdb") <br/>conn.Open strcon <br/>Set rs = Server.CreateObject("ADODB.Recordset") <br/>sql = "select * from Article order by ArticleID desc" <br/>rs.Open sql, conn, 1, 1 <br/>Response.Write "&lt;html&gt;" &amp; vbCrLf <br/>Response.Write "&lt;head&gt;" &amp; vbCrLf <br/>Response.Write "&lt;meta http-equiv=""Content-Type"" content=""text/html; charset=gb2312""&gt;" &amp; vbCrLf <br/>Response.Write "&lt;title&gt;文章管理系统-CSSTUDIO&lt;/title&gt;" &amp; vbCrLf <br/>Response.Write "&lt;/head&gt;" &amp; vbCrLf <br/>Response.Write "&lt;body bgcolor=""#FFFFFF"" topmargin=""0""&gt;" &amp; vbCrLf <br/>Response.Write "&lt;table width=""100%"" border=""0"" cellpadding=""2"" cellspacing=""0""&gt;" &amp; vbCrLf <br/>Response.Write " &lt;tr&gt;" &amp; vbCrLf <br/>Response.Write " &lt;td width=""742"" height=""20""&gt;文章标题&lt;/td&gt;" &amp; vbCrLf <br/>Response.Write " &lt;td width=""90""&gt;点击&lt;/td&gt;" &amp; vbCrLf <br/>Response.Write " &lt;td width=""145""&gt;添加日期&lt;/td&gt;" &amp; vbCrLf <br/>Response.Write " &lt;/tr&gt;" &amp; vbCrLf <br/>Response.Write "&lt;/table&gt;" &amp; vbCrLf <br/>While Not rs.EOF And Rows &lt; rs.PageSize <br/>Response.Write "&lt;table width=""100%"" border=""0"" cellspacing=""0"" cellpadding=""0""&gt;" &amp; vbCrLf <br/>Response.Write " &lt;tr&gt;" &amp; vbCrLf <br/>Response.Write " &lt;td width=""747"" height=""20""&gt;☆&lt;a href=""view.asp?id=" <br/>Response.Write rs("ArticleID") <br/>Response.Write """&gt;" &amp; vbCrLf <br/>Response.Write " " <br/>Response.Write rs("标题") <br/>Response.Write "&lt;/a&gt;&lt;/td&gt;" &amp; vbCrLf <br/>Response.Write " &lt;td width=""94""&gt;" <br/>Response.Write rs("点击") <br/>Response.Write "&lt;/td&gt;" &amp; vbCrLf <br/>Response.Write " &lt;td width=""148""&gt;" <br/>Response.Write rs("添加日期") <br/>Response.Write "&lt;/td&gt;" &amp; vbCrLf <br/>Response.Write " &lt;/tr&gt;" &amp; vbCrLf <br/>Response.Write "&lt;/table&gt;" &amp; vbCrLf <br/>rs.MoveNext <br/>Wend <br/>Response.Write "&lt;/body&gt;" &amp; vbCrLf <br/>Response.Write "&lt;/html&gt;" &amp; vbCrLf <br/>rs.Close <br/>Set rs = Nothing <br/>conn.Close <br/>Set conn = Nothing <br/>Exit Sub <br/>Err: <br/>If Err.Number = -13572468 Then Exit Sub <br/>Resume Next <br/>End Sub </font></p>
<p><font face="Verdana">使用article.dll后的index.asp中的代码: <br/>以下是引用片段:<br/>&lt;%Dim AspTransBuilderObject <br/>Set AspTransBuilderObject = Server.CreateObject("article.Class1") <br/>AspTransBuilderObject.AspClassInit <br/>Set AspTransBuilderObject = Nothing%&gt; <br/>  使用article.dll前的index.asp中的代码:<br/>以下是引用片段:<br/>&lt;% Set conn=Server.CreateObject("ADODB.Connection") <br/>strcon = "Provider=Microsoft.Jet.OLEDB.4.0;" &amp; _ <br/>"Data Source=" &amp; Server.MapPath("Article.mdb") <br/>conn.Open strcon %&gt; <br/>&lt;% Set rs = Server.CreateObject ("ADODB.Recordset") <br/>sql="select * from Article order by ArticleID desc" <br/>rs.Open sql, Conn,1,1 %&gt; <br/>&lt;html&gt; <br/>&lt;head&gt; <br/>&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312"&gt; <br/>&lt;title&gt;文章管理系统-CSSTUDIO&lt;/title&gt; <br/>&lt;/head&gt; <br/>&lt;body bgcolor="#FFFFFF" topmargin="0"&gt; <br/>&lt;table width="100%" border="0" cellpadding="2"&nbsp; <br/>cellspacing="0"&gt; <br/>&lt;tr&gt; <br/>&lt;td width="742" height="20"&gt;文章标题&lt;/td&gt; <br/>&lt;td width="90"&gt;点击&lt;/td&gt; <br/>&lt;td width="145"&gt;添加日期&lt;/td&gt; <br/>&lt;/tr&gt; <br/>&lt;/table&gt; <br/>&lt;% While Not Rs.Eof And Rows&lt;Rs.PageSize %&gt; <br/>&lt;table width="100%" border="0" cellspacing="0"&nbsp; <br/>cellpadding="0"&gt; <br/>&lt;tr&gt; <br/>&lt;td width="747" height="20"&gt;☆&lt;a href="view.asp?id=&lt;%&nbsp; <br/>= rs("ArticleID") %&gt;"&gt; <br/>&lt;% =rs("标题") %&gt;&lt;/a&gt;&lt;/td&gt; <br/>&lt;td width="94"&gt;&lt;% = rs("点击") %&gt;&lt;/td&gt; <br/>&lt;td width="148"&gt;&lt;% = rs("添加日期") %&gt;&lt;/td&gt; <br/>&lt;/tr&gt; <br/>&lt;/table&gt; <br/>&lt;% Rs.MoveNext <br/>Wend %&gt; <br/>&lt;/body&gt; <br/>&lt;/html&gt; <br/>&lt;% rs.close <br/>set rs=nothing <br/>conn.close <br/>set conn=nothing %&gt; </font></p>
【VB】QQ群:1422505加的请打上VB好友
【易语言】QQ群:9531809  或 177048
【FOXPRO】QQ群:6580324  或 33659603
【C/C++/VC】QQ群:3777552
【NiceBasic】QQ群:3703755

275

主题

3017

回帖

1

精华

管理员

嗷嗷叫的老马

积分
17064

论坛牛人贡献奖关注奖最佳版主进步奖人气王疯狂作品奖精英奖赞助论坛勋章乐于助人勋章

QQ
发表于 2008-5-11 17:19:04 | 显示全部楼层
<p>不是有使用嘛....</p>
<p>&nbsp;</p>
<p>先在服务器上注册DLL....再在ASP代码里使用....</p>
我就是嗷嗷叫的老马了......

1

主题

12

回帖

0

精华

铜牌会员

积分
285
发表于 2008-12-8 18:27:10 | 显示全部楼层
呵呵~~学习
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表