gpt4 book ai didi

java - 如何在客户端从 JavaScript 执行 Java 文件

转载 作者:行者123 更新时间:2023-11-29 03:58:15 25 4
gpt4 key购买 nike

我在 JAVA 中有一个代码/类/脚本,当有人单击按钮/我将处理的任何内容时,我想执行这些代码/类/脚本。启动安装在客户端系统上的类/代码/脚本/编译程序的 JavaScript 代码应该是什么?

最佳答案

这取决于您在客户端尝试对程序执行的操作。如果你想调用客户端机器上的其他程序,你需要做一些事情。

  1. 来自 SSL vendor 的代码签名证书。
  2. 您需要创建一个扩展 Applet 的类。
  3. 对于您想在该客户端计算机上执行的任何操作,您都需要一个实现 java.security.PrivilegedAction 的类。
  4. 您现在真的应该使用 objet 和 embed 标签而不是 applet。
  5. 将属性添加到允许从 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

关键是允许 Javascript 调用小程序的 mayscript 和 scriptable 属性。

然后您使用 jarsigner 使用您获得的代码签名证书对 myapplet.jar 进行签名。

请参阅 Sun 关于混合浏览器 Java 插件支持的指南。

http://java.sun.com/j2se/1.5.0/docs/guide/plugin/developer_guide/using_tags.html#mixed

关于java - 如何在客户端从 JavaScript 执行 Java 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5104771/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com