|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
Windows本身的所有问题都会一成不变的也累加到了它的身上。安全性、稳定性、跨平台性都会因为与NT的捆绑而显现出来;visualJava是一种以收集为中央的编程言语,很多只利用ASP剧本难以完成的义务能够用Java轻松地完成。同时,扩大ASP使用最好的办法莫过于到场COM组件。那末,能够使用Java为ASP开辟组件吗?本文经由过程实例,申明了在VisualJ++情况下开辟COM组件的详细历程。
1、概述
自Java问世以来,各类开辟工具、开辟情况不休呈现。这些情况和工具面向分歧条理的用户,具有各自的长处。那末,利用VisualJ++作为Java开辟平台又有哪些长处呢?大略地讲,这些长处包含:
熟习的开辟情况。Microsoft的很多开辟工具,在作风、利用办法上都十分类似。熟习VisualBasic和VisualC++开辟情况的用户很快能够学会VisualJ++的利用。
与其他开辟情况的合作。比方,VisualJ++能够与VisualInterDev无缝合作,一切HTML、ASP和JavaScript代码的编写都可以在一样的情况内完成。
调试器。利用集成开辟情况(IDE)最明显的长处之一在于可使用内置的调试器。与一切其他Microsoft开辟情况一样,VisualJ++的调试器功效也十分壮大。
固然,VisualJ++的IDE也具有其他很多长处,好比关头词黑色显现、代码主动格局化、使用布局全局视图等等。
出格地,关于那些在Java门外伎痒,却又不知从何入手下手的开辟者,我们以为VisualJ++是一个十分好的出发点。但是我们晓得,Sun和Microsoft已经由于后者对Java的“扩大”而产生争议。不论我们是不是把Java类封装成COM工具,Java程序都是扩大ASP使用的一种好办法。但思索到Microsoft公有的扩大不成能失掉一切Java平台或情况的撑持,因而,在VisualJ++编程中应该稳重思索是不是利用Microsoft的Java扩大。
接上去我们将用VisualJ++创立一个可用于ASP情况的组件。这个组件只包括一个办法,它的参数是字符串URL,功效是提取并前往由URL指定的HTML文档的内容。
本文将慢慢先容全部组件开辟历程。包含怎样在VisualJ++中创立工程,输出需要的Java代码并注释这些Java代码的感化,和怎样在ASP剧本内使用这个组件。
注重:本文将利用VisualJ++6.0,但也能够利用更早版本的VisualJ++,需要的时分我们会指出分歧版本之间的差别。
2、创立VisualJ++工程
启动VisualJ++,呈现以下对话框:
【】
在这个对话框当选择新建工程,输出这个工程的名字FetchURL和符合的事情目次,然后选择COMDLL图标,最初单击“翻开”按钮。
VisualJ++将主动为新建工程创立一个Java文件,名为Class1.java。在ProjectExplorer窗格,双击工程名字,按右键,然后将Class1.java更名为FetchURL.java。双击FetchURL.java文件名便可看到文件内容。FetchURL.java中由VisualJ++主动到场的代码是创立ASP组件必须的骨架代码,内容以下:
/**
*ThisclassisdesignedtobepackagedwithaCOMDLLoutputformat.
*Theclasshasnostandardentrypoints,otherthantheconstructor.
*PublicmethodswillbeexposedasmethodsonthedefaultCOMinterface.
*@com.register(clsid=600455A0-B534-11D3-A434-0080AD38C188,
*typelib=600455A1-B534-11D3-A434-0080AD38C188)
*/
publicclassClass1
{
//TODO:Addadditionalmethodsandcodehere
/**
*NOTE:Toaddauto-registrationcode,refertothedocumentation
*onthefollowingmethod
*publicstaticvoidonCOMRegister(booleanunRegister){}
*/
}
起首要做的是变动类的名字,即把内容为“publicclassClass1”的行改成“publicclassFetchURL”。Java请求每个类的名字与其对应的Java文件名完整不异(巨细写敏感)。
请注重上述代码中的COM指令,它由“@com.register”入手下手(在正文内)。该指令告知VisualJ++编译器把以后Java类包装成响应的COMDLL文件。将编译后的代码以DLL情势包装使得我们能够在ASP剧本中间接利用它。
接上去,我们要修正主动天生的初始代码,使其具有后面提出的功效。完全的代码工程见本文前面的链接,此处我们顺次先容所输出代码的寄义。
importjava.io.*;
importjava.net.*;
这两行代码导进了本组件要用到的Java包。JavaAPI由一系列的包构成,这些包供应的是间接可使用的代码,相似于C++中的库。在Java程序中利用import关头字有点相似于在C++程序中利用#include命令。
要检察所导进的包界说了哪些类,能够在ClassOutline窗格内扩大响应的目次。FetchURL将使用java.io包中界说的类从翻开的收集毗连读进数据,使用java.net包供应的类创建与远程服务器的毗连并哀求文档。
publicStringFetch(StringstrURL)
FetchURL包括独一的办法Fetch,它的参数是一个字符串,该字符串指向请求提取的HTML文档的URL。
StringstrInputLine=newString();
StringstrResponse=newString();
try
{
URLobjURL=newURL(strURL);
try
{
URLConnectionobjConnection=objURL.openConnection();
变量strInputLine将作为程序从远程服务器读取数据的缓冲区,变量strResponse将保留方针页面的全部文档,Fetch办法最初前往的就是这个strResponse变量。在这几行代码中,程序创立了一个URL工具并实验用该工具创建毗连。这两行代码都封装在try...catch块内以处置任何大概呈现的非常。Java使用“非常”来处置任何程序碰到的破例情形(一般是毛病)。比方,假如传送给Fetch办法的URL参数格局毛病,或程序运转时未能与指定服务器创建毗连,城市激发非常,此时程序将把非常信息前往给挪用Fetch办法的使用。非常处置代码见响应的catch关头字。
BufferedReaderobjInReader=newBufferedReader(
newInputStreamReader(
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工程了。VisualJ++不但将从Java源文件天生一般的类文件,还将天生一个DLL文件。这个DLL文件封装了Java类文件,它使得我们能够从任何COM情况(包含ASP)会见Java类文件所供应的功效。
假如利用VisualJ++6,将.java文件编译成.class文件和响应的.dll文件很复杂,只需从Build菜单选择Build命令就能够了。假如测试FetchURL.dll的呆板和编译是统一台盘算机,则不必要任何附加的事情了;假如不在统一台呆板上,则还必要在测试呆板上用regsvr32FetchURL.dll命令注册它,就像其他COM工具的注册一样。
</p>asp对于服务器的要求较高,一般的服务器如果访问量一大就垮了,不得不重启。 |
|