您的位置:首页精文荟萃软件资讯 → 在Visual J++中编写ASP COM组件

在Visual J++中编写ASP COM组件

时间:2004/10/7 19:06:00来源:本站整理作者:蓝点我要评论(0)


            
             
              
             
            

               
               

            



            Java是一种以网络为中心的编程语言,许多只使用ASP脚本难以完成的任务可以用Java轻松地实现。同时,扩展ASP应用最好的方法莫过于加入COM组件。那么,可以利用Java为ASP开发组件吗?本文通过实例,说明了在Visual J++环境下开发COM组件的具体过程。
一、概述

   自Java问世以来,各种开发工具、开发环境不断出现。这些环境和工具面向不同层次的用户,具有各自的优点。那么,使用Visual J++作为Java开发平台又有哪些优点呢?粗略地讲,这些优点包括:

熟悉的开发环境。Microsoft的许多开发工具,在风格、使用方法上都非常相似。熟悉Visual Basic和Visual C++开发环境的用户很快可以学会Visual J++的使用。
与其他开发环境的协作。例如,Visual J++可以与Visual InterDev无缝协作,所有HTML、ASP和JavaScript代码的编写均可以在同样的环境内完成。
调试器。使用集成开发环境(IDE)最显著的优点之一在于可以使用内置的调试器。与所有其他Microsoft开发环境一样,Visual J++的调试器功能也非常强大。
当然,Visual J++的IDE也具有其他许多优点,比如关键词彩色显示、代码自动格式化、应用结构全局视图等等。
   特别地,对于那些在Java门外跃跃欲试,却又不知从何开始的开发者,我们认为Visual J++是一个非常好的起点。然而我们知道,Sun和Microsoft曾经因为后者对Java的“扩展”而发生争议。不管我们是否把Java类封装成COM对象,Java程序都是扩展ASP应用的一种好方法。但考虑到Microsoft私有的扩展不可能得到所有Java平台或环境的支持,因此,在Visual J++编程中应当慎重考虑是否使用Microsoft的Java扩展。

   接下来我们将用Visual J++创建一个可用于ASP环境的组件。这个组件只包含一个方法,它的参数是字符串URL,功能是提取并返回由URL指定的HTML文档的内容。

   本文将逐步介绍整个组件开发过程。包括如何在Visual J++中创建工程,输入必要的Java代码并解释这些Java代码的作用,以及如何在ASP脚本内应用这个组件。

   注意:本文将使用Visual J++ 6.0,但也可以使用更早版本的Visual J++,必要的时候我们会指出不同版本之间的差异。

   二、创建Visual J++工程

   启动Visual J++,出现如下对话框:



  



                     【图1】

   在这个对话框中选择新建工程,输入这个工程的名字FetchURL以及合适的工作目录,然后选择COM DLL图标,最后单击“打开”按钮。

   Visual J++将自动为新建工程创建一个Java文件,名为Class1.java。在Project Explorer窗格,双击工程名字,按右键,然后将Class1.java改名为FetchURL.java。双击FetchURL.java文件名即可看到文件内容。FetchURL.java中由Visual J++自动加入的代码是创建ASP组件必需的骨架代码,内容如下:

 /**
  * This class is designed to be packaged with a COM DLL output format.
  * The class has no standard entry points, other than the constructor.
  * Public methods will be exposed as methods on the default COM interface.
  * @com.register ( clsid=600455A0-B534-11D3-A434-0080AD38C188,
  * typelib=600455A1-B534-11D3-A434-0080AD38C188 )
 */
 public class Class1
 {
  // TODO: Add additional methods and code here
 
  /**
  * NOTE: To add auto-registration code, refer to the documentation
  * on the following method
  * public static void onCOMRegister(boolean unRegister) {}
  */
 }
   首先要做的是更改类的名字,即把内容为“public class Class1”的行改为“public class FetchURL”。Java要求每一个类的名字与其对应的Java文件名完全相同(大小写敏感)。

   请注意上述代码中的COM指令,它由“@com.register”开始(在注释内)。该指令告诉Visual J++编译器把当前Java类包装成相应的COM DLL文件。将编译后的代码以DLL形式包装使得我们可以在ASP脚本中直接使用它。

   接下来,我们要修改自动生成的初始代码,使其具备前面提出的功能。完整的代码工程见本文后面的链接,此处我们依次介绍所输入代码的含义。

 import java.io.*;
 import java.net.*;
   这两行代码导入了本组件要用到的Java包。Java API由一系列的包组成,这些包提供的是直接可以使用的代码,类似于C++中的库。在Java程序中使用import关键字有点类似于在C++程序中使用#include命令。

   要查看所导入的包定义了哪些类,可以在Class Outline窗格内扩展相应的目录。FetchURL将利用java.io包中定义的类从打开的网络连接读入数据,利用java.net包提供的类建立与远程服务器的连接并请求文档。

 public String Fetch(String strURL)
   FetchURL包含唯一的方法Fetch,它的参数是一个字符串,该字符串指向要求提取的HTML文档的URL。

 String strInputLine = new String();
 String strResponse = new String();
 try
 {
 URL objURL = new URL(strURL);
 try
 {
 URLConnection objConnection = objURL.openConnection();
   变量strInputLine将作为程序从远程服务器读取数据的缓冲区,变量strResponse将保存目标页面的整个文档,Fetch方法最后返回的就是这个strResponse变量。在这几行代码中,程序创建了一个URL对象并尝试用该对象建立连接。这两行代码都封装在try...catch块内以处理任何可能出现的异常。Java利用“异常”来处理任何程序遇到的例外情况(通常是错误)。例如,如果传递给Fetch方法的URL参数格式错误,或程序运行时未能与指定服务器建立连接,都会引发异常,此时程序将把异常信息返回给调用Fetch方法的应用。异常处理代码见相应的catch关键字。

 BufferedReader objInReader = new BufferedReader(
 new InputStreamReader(
 objConnection.getInputStream()));
   这一行代码有点复杂,所以在完全搞懂它的意思之前先不要着急。在这行代码中,程序利用了象Java这样完全面向对象编程语言所提供的优势。首先,它用objConnection对象创建了一个InputStream类的对象,这实际上是一个可以从服务器读取数据的流;然后,又把这个InputStream类的对象传递给InputStreamReader,后者将负责从InputStream对象读取数据;最后,又用这个InputStreamReader类的对象创建BufferedReader类的对象,也就是objInReader。程序将利用这个objInReader对象完成实际的数据读取操作,并将结果保存为一个字符串。

 while ((strInputLine = objInReader.readLine()) != null)
 strResponse += strInputLine + "
";
 objInReader.close();
   在这部分代码中,程序使用了一个while循环读入所有数据,直至输入为空(null)。objInReader是一个BufferedReader类的对象,它将缓冲读入的字符,整块地返回给strInputLine变量。然后,又把这个strInputLine和一个“ ”加到strResponse的末尾。“ ”是Java的一个转义字符,表示一个新的文本行。在读入目标文档的所有内容后,程序调用objInReader对象的close()方法显式地关闭输入流。

   在所有代码输入完毕之后就可以编译这个FetchURL工程了。Visual J++不仅将从Java源文件生成通常的类文件,还将生成一个DLL文件。这个DLL文件封装了Java类文件,它使得我们可以从任何COM环境(包括ASP)访问Java类文件所提供的功能。

   如果使用Visual J++ 6,将.java文件编译成.class文件和相应的.dll文件很简单,只需从Build菜单选择Build命令就可以了。如果测试FetchURL.dll的机器和编译是同一台计算机,则不需要任何附加的工作了;如果不在同一台机器上,则还需要在测试机器上用regsvr32 FetchURL.dll命令注册它,就像其他COM对象的注册一样。

   对于使用Visual J++早期版本的用户,编译.java文件的方法也类似,但还需要额外的注册步骤,即使用JavaReg /register 命令注册该类。

   三、编写ASP脚本

   测试FetchURL的ASP代码非常简单:

< %
 Set objFetchURL = Server.CreateObject("FetchURL.FetchURL")
 strResponse = objFetchURL.Fetch("http://www.chinabyte.com/")
 Response.Write(strResponse)
 Set objFetchURL = Nothing
 % >
   这段代码首先创建FetchURL的实例,创建方法和其他COM对象的创建方法一样。然后,程序调用Fetch方法,将结果字符串返回给客户浏览器。保存上述脚本为Test.asp,然而用类如“http://localhost/scripts/Test.asp”的URL打开它,就可以看到结果了
   以上我们介绍了在Visual J++中开发ASP COM组件的具体过程。对于ASP应用来说,Java以网络为中心所提供的许多功能是Visual Basic所缺乏的,如果代码有可能要在不同的平台下重用,更值得认真考虑Java;此外,我们还看到,即使是使用Visual J++,我们仍旧没有使用Microsoft的私有Java扩展,在Visual J++中完全可以写出能够用其他Java编译器编译的Java代码。

相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 360快剪辑怎么使用 36金山词霸如何屏幕取词百度收购PPS已敲定!3

最新文章 微信3.6.0测试版更新了微信支付漏洞会造成哪 360快剪辑怎么使用 360快剪辑软件使用方法介酷骑单车是什么 酷骑单车有什么用Apple pay与支付宝有什么区别 Apple pay与贝贝特卖是正品吗 贝贝特卖网可靠吗

人气排行 xp系统停止服务怎么办?xp系统升级win7系统方电脑闹钟怎么设置 win7电脑闹钟怎么设置office2013安装教程图解:手把手教你安装与qq影音闪退怎么办 QQ影音闪退解决方法VeryCD镜像网站逐个数,电驴资料库全集同步推是什么?同步推使用方法介绍QQ2012什么时候出 最新版下载EDiary——一款好用的电子日记本