gpt4 book ai didi

java - 从 Javascript 调用的 Applet 方法

转载 作者:搜寻专家 更新时间:2023-11-01 03:51:02 26 4
gpt4 key购买 nike

我有一个小程序可以从特定文件夹上传一些文件并删除它们,但是当我从我的 javascript 代码调用小程序函数时,当我从 init() 调用该函数时出现了问题工作正常。

我的小程序代码:

public class Uploader extends Applet {
String serverPath;
String clientPath;
private JSObject win;
@Override
public void init() {
serverPath = getParameter("serverPath");
clientPath = getParameter("clientPath");
try {
win = JSObject.getWindow(this);
} catch (JSException e) {
log.warning("Can't access JSObject object");
}
upload(topic,clientPath);
}
public void upload(String topic,String clientPath) {
log.log(Level.SEVERE, "upload functiond");
DefaultHttpClient client = new DefaultHttpClient();
MultipartEntity form = new MultipartEntity();
log.log(Level.SEVERE, "upload functiond2");
try {
File directory = new File(clientPath);
log.log(Level.SEVERE, "upload functiond2.2");
File[] files = directory.listFiles();
log.log(Level.SEVERE, "upload functiond2.5");
int i = 0;
for (File file : files) {
log.log(Level.SEVERE, "upload functiond2.6");
i++;
form.addPart("file" + String.valueOf(i), new FileBody(file));
System.out.println("adding file " + String.valueOf(i) + " " + file);
log.log(Level.SEVERE, "adding file " + String.valueOf(i) + " " + file);
}
log.log(Level.SEVERE, "upload functiond3");
form.addPart("topic", new StringBody(topic, Charset.forName("UTF-8")));
form.addPart("action", new StringBody(action, Charset.forName("UTF-8")));
form.addPart("path", new StringBody(serverPath, Charset.forName("UTF-8")));
HttpPost post = new HttpPost(serverPath);
....

这是我的 javascript 代码:

document.applet.upload(title,"c:\scan");

当我从 javascript 调用时只打印日志:

log.log(Level.SEVERE, "upload functiond2.2");

请注意,当我从 applet 的 init 方法调用时,它工作正常。

我将我的代码包装到 PriviligedAction 中,但只向前迈出一步并坚持

log.log(Level.SEVERE, "upload functiond2.5");

最佳答案

Java 和 JS 的交互使安全性变得复杂。 JRE 不能信任 JS,因此它决定包括您的代码的整个“操作链”是不受信任的。有一种方法可以修复它。

代码需要包裹在PrivilegedAction中并使用 AccessController methods 之一调用doPrivileged(..)。查看 AccessController 文档的顶部。 (在方法上方)查看示例用法。

关于java - 从 Javascript 调用的 Applet 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28048078/

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