转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 站长学院 >> Web开发 >> 正文
用VB将ASP代码封装成DLL         ★★★★

用VB将ASP代码封装成DLL

作者:闵涛 文章来源:闵涛的学习笔记 点击数:583 更新时间:2009/4/23 10:35:47

一、引言

  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 cwinntsystem32article.dll。


三、程序清单

  Global.bas中的代码:
Public objContext As ObjectContext

Public Application As ASPTypeLibrary.Application

Public Server As ASPTypeLibrary.Server

Public Session As ASPTypeLibrary.Session

Public Response As ASPTypeLibrary.Response

Public Request As ASPTypeLibrary.Request


  Class1.cls中的代码:
Private Sub Class_Initialize()

On Error Resume Next

Set objContext = GetObjectContext

Set Application = objContext.Item(Application)

Set Server = objContext.Item(Server)

Set Session = objContext.Item(Session)

Set Request = objContext.Item(Request)

Set Response = objContext.Item(Response)

End Sub


Private Sub Class_Terminate()

On Error Resume Next

Set Application = Nothing

Set Server = Nothing

Set Session = Nothing

Set Request = Nothing

Set Response = Nothing

Set objContext = Nothing

End Sub


Public Sub AspClassInit()

On Error GoTo Err

Set conn = Server.CreateObject(ADODB.Connection)

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

Data Source= & Server.MapPath(Article.mdb)

conn.Open strcon

Set rs = Server.CreateObject(ADODB.Recordset)

sql = select  from Article order by ArticleID desc

rs.Open sql, conn, 1, 1

Response.Write html & vbCrLf
Response.Write head & vbCrLf
Response.Write meta http-equiv=Content-Type content=texthtml; charset=gb2312 & vbCrLf
Response.Write title文章管理系统-CSSTUDIOtitle & vbCrLf
Response.Write head & vbCrLf
Response.Write body bgcolor=#FFFFFF topmargin=0 & vbCrLf
Response.Write table width=100% border=0 cellpadding=2 cellspacing=0 & vbCrLf
Response.Write  tr & vbCrLf
Response.Write  td width=742 height=20文章标题td & vbCrLf
Response.Write  td width=90点击td & vbCrLf
Response.Write  td width=145添加日期td & vbCrLf
Response.Write  tr & vbCrLf
Response.Write table & vbCrLf
While Not rs.EOF And Rows  rs.PageSize
Response.Write table width=100% border=0 cellspacing=0 cellpadding=0 & vbCrLf
Response.Write  tr & vbCrLf
Response.Write  td width=747 height=20☆a href=view.aspid=
Response.Write rs(ArticleID)
Response.Write  & vbCrLf
Response.Write 
Response.Write rs(标题)
Response.Write atd & vbCrLf
Response.Write  td width=94
Response.Write rs(点击)
Response.Write td & vbCrLf
Response.Write  td width=148
Response.Write rs(添加日期)
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

Set rs = Nothing

conn.Close

Set conn = Nothing

Exit Sub


Err

If Err.Number = -13572468 Then Exit Sub

Resume Next

End Sub

 

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

Set AspTransBuilderObject = Server.CreateObject(article.Class1)

AspTransBuilderObject.AspClassInit

Set AspTransBuilderObject = Nothing%


  使用article.dll前的index.asp中的代码:
% Set conn=Server.CreateObject(ADODB.Connection)

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

Data Source= & Server.MapPath(Article.mdb)

conn.Open strcon %

% Set rs = Server.CreateObject (ADODB.Recordset)

sql=select  from Article order by ArticleID desc

rs.Open sql, Conn,1,1 %


html

head
meta http-equiv=Content-Type content=texthtml; charset=gb2312
title文章管理系统-CSSTUDIOtitle
head
body bgcolor=#FFFFFF topmargin=0
table width=100% border=0 cellpadding=2
cellspacing=0
tr
td width=742 height=20文章标题td
td width=90点击td
td width=145添加日期td
tr
table
% While Not Rs.Eof And RowsRs.PageSize %
table width=100% border=0 cellspacing=0
cellpadding=0
tr
td width=747 height=20☆a href=view.aspid=%
= rs(ArticleID) %
% =rs(标题) %atd
td width=94% = rs(点击) %td
td width=148% = rs(添加日期) %td
tr
table
% Rs.MoveNext
Wend %
body
html
% rs.close
set rs=nothing
conn.close
set conn=nothing %


四、结论

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

 
作者:csbq    

 


没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Web开发  · 网页制作
    · 平面设计  · 网站运营
    · 网站推广  · 搜索优化
    · 建站心得  · 站长故事
    · 互联动态
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台