使用Java编写ASP组件

  ASP通过ActiveX服务器组件(ActiveX服务器组件)制定具有无限可增强性。在ASP开发中,免不了使用组件,网上没有很多的免费的,试用的组件,但这是人家的东西,用起来总不免有些担心,自己写的组件用起来才踏实。ActiveX Server组件可以使用Visual Basic、Delphi、Java、Visual C++、COBOL等编程语言来编写。这篇文章主要介绍如何使用Java来写ASP组件。先写个很简单
  的Java程序
  public class TestJava
  {
  public String Ver="1.0.1版";
  公共intlenstr(String str)
  {
  return str.length();
  }
  public String Version()
  {
  返回Ver;
  }
  }
  编译生成TestJava.class,将其注册成组件。然后注册
  Java组件:
  也许大多数人想到的是RegSvr32.exe这个程序,但这里用不到它,它用于注册编译成DLL的ActiveX组件,Java写成的Class文件不能够用它来注册,你需要JavaReg.exe,这个程序在Microsoft SDK for java中可以找到。你先安装了microsoft sdk for java,目前最新版本是4.0版本的。下载地址:
  Mricrosoft SDK for Java 4.0
  如果有误,自己去http://www.microsoft.com上找。下载后直接安装即可。
  安装后在Microsoft SDK for java的bin目录下有这个工具。在注册前,你可以将编译好的class文件复制到系统目录下的\java\trustlib\目录下(在我的机器上是C:\winnt\java\trustlib)。在“命令提示符”窗口下输入JavaReg并执行,可以看到它的最有效及参数。
  如:
  javareg/register/class:TestJava/progid:Components.TestJava
  注册上面生成的class文件
  可以用中文名。反向注册javareg/unregister...就行了。注意:如果你是Java重新编译过,又想立即生效的话,一定需要重启一下WEB服务器,这样才能正常使用,不然你会发现新加的方法不能用。
  ASP中的使用:
  <%
  'testjava.asp
  Set Obj=Server.CreateObject("组件.TestJava")
  response.write Obj.lenstr("你好!Hello World!")
  response.write"<br>"&Obj.version
  response.write"<br>"&Obj.Ver
  Obj.asptest
  set Obj=nothing
  %>
  保存为testjava.asp
  确定你的Web服务器在工作,然后在浏览器看看结果吧!
  关于使用ASP内置对象:
  如果能使用response.write("Hello World!"),那么将会很方便。下面简单介绍一下如何使用ASP内置对象。
  你打开windows系统目录下的java子目录,如果安装了或者IISPWS后会多出一个目录trustlib
  打开com\ms\asp下,这里面就有能够在Java ActiveX组件中使用的东东,使用这些内置对象,只要将它们“导入”进来,就可以
  在Java ActiveX组件中获取ASP内置的对象,程序如下:
  public class TestJava
  {
  public String Ver="1.0.1"1版”;
  公共intlenstr(String str)
  {
  return str.length();
  }
  public String Version()
  {
  返回Ver;
  }
  公共无效asptest()
  {
  IGetContextProperties icp;
  变体vari=new Variant();
  IResponse iresp;
  icp=(IGetContextProperties)MTx.GetObjectContext();
  vari=icp.GetProperty("响应");
  iresp=(IResponse)vari.getDispatch();
  iresp.Write(new Variant("<h1>Java ActiveX组件</h1>"));
  }
  }
  用asp测试一下:
  <%
  'testjava.asp
  Set Obj=Server.CreateObject("组件.
  response.write"<br>"&Obj.version
  response.write"<br>"&Obj.Ver
  Obj.asptest
  set Obj=nothing
  %>
  结果如下:
  15
  1.0.1版
  1.0.1版
  Java ActiveX组件
  注:这个Java程序使用microsoft sdk for java编译器才能编译成功(使用jvc.exe),另外在microsoft sdk for java安装目录的Samples\ASP下有关于ASP的详细例子。