如何从客户端的JavaScript执行Java文件
我有一个JAVA中的代码/类/脚本,当有人点击一个按钮/我将处理的任何东西时,我想执行它。什么应该是JavaScript中的代码来启动在客户端的系统上安装的类/代码/脚本/编译程序?如何从客户端的JavaScript执行Java文件
这取决于您在客户端使用该程序所要做的事情。如果你想在客户端的机器上调用其他程序,你将需要一些东西。
- 来自SSL供应商的代码签名证书。
- 您需要创建一个扩展Applet的类。
- 对于任何你想在客户端机器上执行的操作,你都需要一个实现了java.security.PrivilegedAction的类。
- 现在你应该真的使用objet和embed标签代替applet。
- 将属性添加到允许从Javascript脚本编写的对象和嵌入标签。
Java代码
public class MyApplet extends Applet
{
public Object myScriptAction(String arg1, String arg2)
{
PrivilegedAction action = new MyAction();
action.setXXXX();
Object o = AccessController.doPrivileged(action);
return o;
}
private class MyAction implements PrivilegedAction
{
public MyAction() {}
...
public Object run()
{
// Do something here, Runtime.exec() or something else
Runtime.getRuntime().exec(cmdarray, envarray, workingDir);
return myobj;
}
}
}
HTML使用标签代码中删除
object name="myapplet" classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" width="1" height="1"
param name="name" value="myapplet"
param name="code" value="com.example.MyApplet"
param name="codebase" value="<c:out value="/path/to/applet/"
param name="archive" value="myapplet.jar"
param name="scriptable" value="true"
param name="mayscript" value="true"
comment
embed
type="application/x-java-applet;version=1.5"
code="com.example.MyApplet"
java_codebase="/path/to/applet/"
archive="myapplet.jar"
name="myapplet"
width="1"
height="1"
mayscript="true"
scriptable="false"
pluginspage="http://java.sun.com/products/plugin/index.html#download"
noembed
Java not supported.
noembed
embed
comment
object
的关键是MAYSCRIPT和脚本化的属性,这些属性允许JavaScript调用的小程序。
然后您使用jarsigner使用您获得的代码签名证书签署myapplet.jar。
请参阅Sun关于混合浏览器Java插件支持的指南。
http://java.sun.com/j2se/1.5.0/docs/guide/plugin/developer_guide/using_tags.html#mixed
我只需要在客户端系统上打开一个文件 – kritya 2011-02-24 13:19:14
打开就像在客户端上读取文件一样?我已经使用上述方法在客户机上启动应用程序。因此,使用这种方法可以打开notepad.exe并为其指定要打开的文件的路径。你可能不得不多说你想要打开什么。 – 2011-02-24 15:40:00
我认为你必须在你的网页上部署applet,然后才能从javascript调用它的方法。
所以,首先你需要appelet,即扩展Applet的类。如果你已经有一个,你就完成了。否则,您必须创建一个并公开已有的API。 接下来,您应该在网页上部署小程序。使用标记<applet>
或<object>
来执行此操作。这很简单,你可以在互联网上找到很多例子。
现在你必须能够从JavaScript调用这个小程序。它也很简单。例如,如果你的小程序的名字(我的意思是HTML的属性值名字)是MYAPP和小程序有方法foo(),你可以从JavaScript调用它是这样的:myapp.foo()
下面是一个例子:
<applet name="myapp" archive="myjar.jar" code="com.company.MyApplet"/>
<script>
var result = myapp.foo();
</script>
不可能没有浏览器特定的扩展... – yent 2011-02-24 12:41:15
但我已经看到了使用该 – kritya 2011-02-24 12:43:01
如何嵌入一个[功能]一些网站(http://java.sun.com/applets/)? – erickb 2011-02-24 12:43:34