选择显示字体大小

用vb将asp代码封装成dll

     一、引言
  
    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:\winnt\system32\article.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=""text/html; charset=gb2312"">" & vbcrlf
  response.write "<title>文章管理系统-csstudio</title>" & 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.asp?id="
  response.write rs("articleid")
  response.write """>" & vbcrlf
  response.write " "
  response.write rs("标题")
  response.write "</a></td>" & 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="text/html; charset=gb2312">
  <title>文章管理系统-csstudio</title>
  </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 rows<rs.pagesize %>
  <table width="100%" border="0" cellspacing="0"
  cellpadding="0">
  <tr>
  <td width="747" height="20">☆<a href="view.asp?id=<%
  = rs("articleid") %>">
  <% =rs("标题") %></a></td>
  <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中的很多控件。让我们用组件来扩展我们的程序的功能吧!也希望多多的看到我们中国人的组件。但愿本文能起到抛砖引玉的作用。
  
  
    


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons