从Applet下载文件

时间:2011-05-13 07:03:26

标签: java swing security applet next-generation-plugin

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

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

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

考虑到JApplets的安全功能,可以做到这一点吗?还要考虑Swing组件的事件处理机制。

1 个答案:

答案 0 :(得分:4)

沙盒小程序的选项。

有两种(.2)方式(我可以立即想到)。

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

  3. 受信任的applet可以使用此过程。

    1. 弹出JFileChooser以允许用户决定保存File的位置。
    2. 如果选择器返回有效File(表示未取消操作),请继续保存。
    3. InputStream获取URL
    4. OutputStream建立File
    5. InputStream读取字节,将其写入OutputStream
    6. 冲洗&重复直到读取产生-1。