手机
当前位置:查字典教程网 >软件教程 >其他软件工具 >使用VB将ASP代码封装生成DLL文件
使用VB将ASP代码封装生成DLL文件
摘要:一、引言Server端的脚本运行环境,它简单易用,不需要编译和连接,脚本可以在Server端直接运行,并且它支持多用户、多线程,在Web开发...

一、引言

Server端的脚本运行环境,它简单易用,不需要编译和连接,脚本可以在 Server端直接运行,并且它支持多用户、多线程,在 Web开发中得到了广泛的应用。服务器端的组件有别于客户端的组件。客户端的组件是通过网络传输,依靠HTML来起作用,而且只能在IE上有用。但是服务器端的组件是运行在服务器端,它在服务器上执行各种操作。因此,所有的浏览器都能享用,它依靠的是服务器而不是浏览器。但是,因为 ASP脚本是纯文本格式,所以恶意者通过源代码可以很容易地看到原本不该看到的页面内容。因此,保护ASP源代码显得非常重要。将ASP代码封装成DLL,不仅加快了ASP代码的执行速度,而且也能保护原代码。当IIS被请求执行一个ASP程序,它首先会在ASP文件中找到标签之间的代码,并且执行它(也可以是之间的代码)。如果这个ASP程序在先前被调用过,那么它就会用内存中的编译过的程序来向用户返回HTML代码,如果没有,那么它就重新编译。这样就大大节省了服务器的资源。

二、实现方法

启动你的VB,选择ActiveX图标。这个图标可以在新建工程找到!VB会提供一个默认的工程名(project1)和类名(class1)。在动手之前请首先确认我们拥有Microsoft ActiveX Data Object 2.0 Library,它在我们的程序非常有用。从菜单中选择"工程",然后在其中选择"引用",就会出现"引用"窗口,从中选择Microsoft ActiveX Data Object 2.0 Library。

现在我们有了我们自己的工程(project1)和类名(class1)。以后我们就会在ASP代码中使用它们的名字来引用这个组件。在ASP中我们就这样引用,如下:

Set ObjReference = Server.CreateObject("ProjectName.ClassName")

为了在类中使用ASP的方法,你必须在此类中写上初始和终止这两个函数。输入如下代码:程序清单中

Class1.cls中的Private Sub Class_Initialize()和Private Sub Class_Terminate()

将ASP代码中的关键功能制作成动态链接库(.dll),部分隐藏 ASP源代码。 例如:程序清单中的Global.bas和Class1.cls中输入的代码(代码的主要功能是检索数据库中的记录并显示出来)。

在VB的下拉菜单中选择文件→生成article.dll→选择要保存的目录。找到article.dll将其复制到系统盘system32文件夹中,最后一步注册DLL文件。在开始菜单中选择运行输入regsvr32 c:winntsystem32article.dll。

三、程序清单

Global.bas中的代码:

以下是引用片段:

PublicobjContextAsObjectContext

PublicApplicationAsASPTypeLibrary.Application

PublicServerAsASPTypeLibrary.Server

PublicSessionAsASPTypeLibrary.Session

PublicResponseAsASPTypeLibrary.Response

PublicRequestAsASPTypeLibrary.Request

Class1.cls中的代码:

PrivateSubClass_Initialize()

OnErrorResumeNext

SetobjContext=GetObjectContext

SetApplication=objContext.Item("Application")

SetServer=objContext.Item("Server")

SetSession=objContext.Item("Session")

SetRequest=objContext.Item("Request")

SetResponse=objContext.Item("Response")

EndSub

PrivateSubClass_Terminate()

OnErrorResumeNext

SetApplication=Nothing

SetServer=Nothing

SetSession=Nothing

SetRequest=Nothing

SetResponse=Nothing

SetobjContext=Nothing

EndSub

PublicSubAspClassInit()

OnErrorGoToErr

Setconn=Server.CreateObject("ADODB.Connection")

strcon="Provider=Microsoft.Jet.OLEDB.4.0;"&_

"DataSource="&Server.MapPath("Article.mdb")

conn.Openstrcon

Setrs=Server.CreateObject("ADODB.Recordset")

sql="select*fromArticleorderbyArticleIDdesc"

rs.Opensql,conn,1,1

Response.Write"<html>"&vbCrLf

Response.Write"<head>"&vbCrLf

Response.Write"<metahttp-equiv=""Content-Type""content=""text/html;charset=gb2312"">"&vbCrLf

Response.Write"<title>文章管理系统-CSSTUDIO</title>"&vbCrLf

Response.Write"</head>"&vbCrLf

Response.Write"<bodybgcolor=""#FFFFFF""topmargin=""0"">"&vbCrLf

Response.Write"<tablewidth=""100%""border=""0""cellpadding=""2""cellspacing=""0"">"&vbCrLf

Response.Write"<tr>"&vbCrLf

Response.Write"<tdwidth=""742""height=""20"">文章标题</td>"&vbCrLf

Response.Write"<tdwidth=""90"">点击</td>"&vbCrLf

Response.Write"<tdwidth=""145"">添加日期</td>"&vbCrLf

Response.Write"</tr>"&vbCrLf

Response.Write"</table>"&vbCrLf

WhileNotrs.EOFAndRows<rs.PageSize

Response.Write"<tablewidth=""100%""border=""0""cellspacing=""0""cellpadding=""0"">"&vbCrLf

Response.Write"<tr>"&vbCrLf

Response.Write"<tdwidth=""747""height=""20"">☆<ahref=""view.asp?id="

Response.Writers("ArticleID")

Response.Write""">"&vbCrLf

Response.Write""

Response.Writers("标题")

Response.Write"</a></td>"&vbCrLf

Response.Write"<tdwidth=""94"">"

Response.Writers("点击")

Response.Write"</td>"&vbCrLf

Response.Write"<tdwidth=""148"">"

Response.Writers("添加日期")

Response.Write"</td>"&vbCrLf

Response.Write"</tr>"&vbCrLf

Response.Write"</table>"&vbCrLf

rs.MoveNext

Wend

Response.Write"</body>"&vbCrLf

Response.Write"</html>"&vbCrLf

rs.Close

Setrs=Nothing

conn.Close

Setconn=Nothing

ExitSub

Err:

IfErr.Number=-13572468ThenExitSub

ResumeNext

EndSub

使用article.dll后的index.asp中的代码:

以下是引用片段:

<%DimAspTransBuilderObject

SetAspTransBuilderObject=Server.CreateObject("article.Class1")

AspTransBuilderObject.AspClassInit

SetAspTransBuilderObject=Nothing%>

使用article.dll前的index.asp中的代码:

以下是引用片段:

<%Setconn=Server.CreateObject("ADODB.Connection")

strcon="Provider=Microsoft.Jet.OLEDB.4.0;"&_

"DataSource="&Server.MapPath("Article.mdb")

conn.Openstrcon%>

<%Setrs=Server.CreateObject("ADODB.Recordset")

sql="select*fromArticleorderbyArticleIDdesc"

rs.Opensql,Conn,1,1%>

<html>

<head>

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

<title>文章管理系统-CSSTUDIO</title>

</head>

<bodybgcolor="#FFFFFF"topmargin="0">

<tablewidth="100%"border="0"cellpadding="2"

cellspacing="0">

<tr>

<tdwidth="742"height="20">文章标题</td>

<tdwidth="90">点击</td>

<tdwidth="145">添加日期</td>

</tr>

</table>

<%WhileNotRs.EofAndRows<Rs.PageSize%>

<tablewidth="100%"border="0"cellspacing="0"

cellpadding="0">

<tr>

<tdwidth="747"height="20">☆<ahref="view.asp?id=<%

=rs("ArticleID")%>">

<%=rs("标题")%></a></td>

<tdwidth="94"><%=rs("点击")%></td>

<tdwidth="148"><%=rs("添加日期")%></td>

</tr>

</table>

<%Rs.MoveNext

Wend%>

</body>

</html>

<%rs.close

setrs=nothing

conn.close

setconn=nothing%>

四、结论

因为这些代码是在服务器端运行的,所以客户端不需要安装任何东西。这仅仅是用ActiveX DLL所能实现的功能的小小的例子。你们可以写好自己的更大的组件,而且还可以用VB中的很多控件。让我们用组件来扩展我们的程序的功能吧!也希望多多的看到我们中国人的组件。但愿本文能起到抛砖引玉的作用。

【使用VB将ASP代码封装生成DLL文件】相关文章:

UG NX怎么到导出自制工程图图框模板?

使用淘宝助理上传数据包的方法

使用XPDF将PDF转换为HTML的实现步骤

比较好用用的pdf转txt文本文件 图片文字提取工具使用介绍

用文档转换工具CAJViewer将PDF转成TXT文档

获取Google地图经纬度方法(通过js方法)

rootkit的检测工具使用介绍(chkrootkit和rootkit hunter)

斗鱼TV弹幕助手怎么用

如何使用印象笔记·圈点的详细使用图文教程

如何将模拟人生3mod安装到游戏中

精品推荐
分类导航