java - 从Applet下载文件

标签 java swing security applet next-generation-plugin

我有一个 Java Applet 应用程序。用例如下:

用户调用映射到 Servlet 的 URL。 servlet 作为响应返回一个 JSP 页面,用户可以在该页面中在 UI 中导航。整个 UI 由 Swing [基本上是一个 JApplet] 组成。 UI 中的事件以传统方式处理 [ActionListeners、SelectionListeners...]。现在我有以下需求:

服务器目录中有一个文件,我应该允许用户通过我的应用程序下载该文件。我需要在用户界面中为用户提供一个链接,单击该链接将触发下载。

考虑到 JApplet 的安全特性可以做到这一点吗?还要考虑Swing组件的事件处理机制。

最佳答案

沙盒小程序的选项。

有 2(.2) 条路可走(我可以立即想到)。

  1. 使用AppletContext.showDocument(URL,String)使用浏览器触发下载的方法。
  2. 对于基于“下一代”插件 2 的小程序(Sun/Oracle JVM 中的 1.6.0_10+),可以 Hook JNLP 的功能。 API Java Web Start
    1. JNLP API 提供了在沙盒应用程序或小程序中访问本地文件系统的能力。这是我的小demo. of the JNLP API file services .
    2. JNLP API 还提供 BasicService.showDocument(URL)方法。此版本稍微优于 AppletContext 等效版本,因为它返回一个 boolean 来指示成功/失败。基于小程序的版本可能会失败,如果失败,它也会默默地执行。另请参阅demo. of the BasicService .

受信任的小程序可以使用此过程。

  1. 弹出 JFileChooser 以允许用户决定将文件保存到何处。
  2. 如果选择器返回有效的文件(表明操作未取消),则继续保存。
  3. URL 获取 InputStream
  4. 文件建立一个OutputStream
  5. InputStream读取字节,并将它们写入OutputStream
  6. 冲洗并重复直到读取结果为-1。

关于java - 从Applet下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5988417/

相关文章:

android - Android 4.1 上的 KeyChain.getPrivateKey(Context,String)?

android - 在 Jelly Bean 设备上读取 ActivityManager 日志?

Java: isBinary 方法的类是什么?

java - JdbcBatchItemWriter 如何决定批量大小?

java - CardLayout不切换卡片

"Enter"之后的 Java 清除文本字段

java - java中是否可以将浮点值分配给枚举?

javascript - 如何检查文件名字符串不是文件路径

Java:无法转换为List的集合

java - $NON-NLS-1$ 是什么意思?