用 Node.js 重写 java applet

发布于 1周前 作者 songsunli 来自 nodejs/Nestjs

用 Node.js 重写 java applet

用户在浏览器端启动一个 java applet :

  1. 选择本地文件
  2. 获取其完整 path
  3. 把 path 发给一个 java application

现在需要更好的方案替换 applet , node.js 是否能做到?

12 回复

不能,现在的浏览器为了安全都是隐藏了文件的真实路径,如果还能让你拿到真实路径只能说明这浏览器不够安全
这是前端方案,跟 nodejs 有关系么


LZ 顶多只是不懂来请教罢了,最后一句话可以去掉的 :)

另外你对文件的真实路径有什么意图呢?拿到路径你也不可能拿其他用户没选择的文件,除非你整个上传组件都是用 activex 写的,绕过了浏览器的 file 封装


1. Why NodeJS?
是呀,我之前也是跟 leader 讲, nodeJS 是 server 端的,但是他还是说经过他的 search 认为 nodeJS 是替代 JavaApplet 的可行方案,并且给了我两个链接资料让我读[link1]( https://groups.google.com/forum/#!topic/nodejs/Udwceaa7bKM)[link2]( http://stackoverflow.com/questions/11681407/how-to-communicate-through-serial-port-on-client-side-using-javascript),我没太读明白这两个资料,大概是在客户端新开一个 socket 来使用 nodejs ???= =
2. Why path?
主要是为了实现一个大文件上传, server 使用 drupal 写的, applet 让用户在浏览器中启动并选择要上传的文件, applet 把选好的文件的 path 传给 javaApplication ,由 javaApplication 上传

所以你只是为了上传文件?那你直接搜索 HTML5 ajax 大文件上传 就好了啊?

leader 坚持保留 javaApplication ,不过 ajax 是很好的建议,谢谢~

link2 上说的是用 js 替代 applet ,用 node.js 替代 server 。原文“ Nodejs interacting with a javascript client (web) app is really easy and nice to do ” web 前端是普通的 js 。

既然能接受保留,那就保留吧

好可怕的 leader

既然在用户机器上使用了 JavaApplication ,为什么不直接使用 Java 开发图形界面呢?
或者使用 Electron 之类的东西包装一下页面,是可以拿到完整路径的。

另外,为什么不直接上传?

好可怕的 leader
快点走

重写 Java Applet 到 Node.js 涉及将客户端的 Java 代码迁移到基于 JavaScript 的服务器端(或客户端,如果使用浏览器端 JavaScript)环境。由于 Java Applet 通常运行在浏览器中,并且依赖于 Java 虚拟机,而 Node.js 是一个服务器端运行时,直接转换是不可能的。但我们可以尝试实现相同的功能逻辑。

假设你有一个简单的 Java Applet,它在网页上显示一个 “Hello, World!” 消息。以下是使用 Node.js 和 Express.js(一个流行的 Node.js 框架)来模拟这一功能的示例。

Java Applet 示例(伪代码)

// Java Applet code (pseudo-code)
public class HelloApplet extends Applet {
    public void paint(Graphics g) {
        g.drawString("Hello, World!", 20, 20);
    }
}

Node.js + Express.js 示例

  1. 创建一个新的 Node.js 项目并安装 Express.js。
mkdir hello-applet
cd hello-applet
npm init -y
npm install express
  1. 创建一个 server.js 文件,并添加以下代码:
const express = require('express');
const app = express();
const port = 3000;

app.get('/', (req, res) => {
    res.send('<h1>Hello, World!</h1>');
});

app.listen(port, () => {
    console.log(`Server is running at http://localhost:${port}`);
});
  1. 运行服务器:
node server.js

访问 http://localhost:3000,你将看到 “Hello, World!” 消息。虽然这不是直接转换,但它展示了如何在 Node.js 环境中实现类似的功能。

回到顶部