[心缘地方]同学录
首页 | 功能说明 | 站长通知 | 最近更新 | 编码查看转换 | 代码下载 | 常见问题及讨论 | 《深入解析ASP核心技术》 | 王小鸭自动发工资条VBA版
登录系统:用户名: 密码: 如果要讨论问题,请先注册。

[转]用Java编写ASP组件

上一篇:[转]英语的电话用语
下一篇:[备忘]两个客户端上传控件

添加日期:2008/4/11 9:09:50 快速返回   返回列表 阅读4000次
ASP通过ActiveX Server Components(ActiveX 服务器元件 ) 使其具有无限可扩充性。在ASP开发当中,免不了使用组件,网上的确有很多的免费,试用的组件,但这是人家的东西,用起来总不免有些担心,自己写的组件用起来才踏实。ActiveX Server Component 可以使用 Visual Basic、 Delphi、 Java 、 Visual C 、 COBOL 等编程语言来编写。本文主要介绍如何使用Java来写ASP组件。 

先写个很简单的Java程序 


public class TestJava 

    public String Ver="1.0.1版"; 

    public int lenstr(String str) 
    { 
        return str.length(); 
    } 

    public String Version() 
    { 
    return 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: 组件.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子目录,如果安装了IIS或者PWS后会多出一个目录 trustlib 

打开com\ms\asp下,这里面就有能够在Java ActiveX组件使用的东东,使用这些内置对象,只要将它们 "import" 进来,便可 
在Java ActiveX组件中取得 ASP 内置的对象,程序如下: 


public class TestJava 

public String Ver="1.0.1版"; 

public int lenstr(String str) 

return str.length(); 


public String Version() 

return Ver; 


public void asptest() 

IGetContextProperties icp; 
Variant vari=new Variant(); 
IResponse iresp; 
icp=(IGetContextProperties)MTx.GetObjectContext(); 
vari=icp.GetProperty("Response"); 
iresp=(IResponse) vari.getDispatch(); 
iresp.Write(new Variant("<h1>Java ActiveX组件</h1>")); 

}



用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 
%>



结果如下: 

15 
1.0.1版 
1.0.1版 
Java ActiveX组件 

注:这个Java程序要用microsoft sdk for java 编译器才能成功编译(使用jVC.exe),另外在microsoft sdk for java 安装目录的Samples\ASP下有关于ASP的详细例子。 
 

评论 COMMENTS
没有评论 No Comments.

添加评论 Add new comment.
昵称 Name:
评论内容 Comment:
验证码(不区分大小写)
Validation Code:
(not case sensitive)
看不清?点这里换一张!(Change it here!)
 
评论由管理员查看后才能显示。the comment will be showed after it is checked by admin.
CopyRight © 心缘地方 2005-2999. All Rights Reserved