【问题标题】:How to run the local Notepad.exe using Spring web application如何使用 Spring Web 应用程序运行本地 Notepad.exe
【发布时间】:2016-04-12 09:00:06
【问题描述】:

我需要从 Spring 应用程序运行本地 notepad.exe。你能推荐我吗?

【问题讨论】:

  • 你的意思是你的代码运行在一个网络服务器上,但是你希望能够在我的机器上启动一个可执行文件(运行一个浏览器)?哎呀,不。您可以提供一个文本文件,让我(用户)选择在哪个应用程序中打开它,但这是另一回事。
  • Spring 桌面应用?还是弹簧网?听起来有点奇怪..

标签: java spring web-applications


【解决方案1】:

您可以使用来自Runtime classexec 方法调用。 像这样:

Runtime.getRuntime().exec("c:\\path\\to\\the\\executable\\notepad.exe"));

通过documentation:

在单独的进程中执行指定的字符串命令。 这是一种方便的方法。调用 exec(command) 形式的行为与调用 exec(command, null, null) 完全相同。

但恕我直言,只有在桌面应用程序中使用 Spring 才有意义。在服务器端,exec 通常用于调用带有命令行选项的非 GUI 可执行文件

【讨论】:

    【解决方案2】:

    您发出的任何 HTTP 请求都会获得 text/plain 作为响应,并且用户选择“打开”而不是“保存”或“另存为...”将触发记事本应用程序运行并显示该应用程序中的响应。

    如果你有一个链接到...

    <a href="http://your.server/your/application?foo=bar">Click me for a text file</a>

    ...并且此 Web 应用程序以 text/plain 响应,应提示用户打开或保存响应。如果他们选择打开,则记事本应用程序应该打开。

    【讨论】:

    • 如果没有选择记事本作为打开文本文件的默认应用程序怎么办?这实际上是一个非常有趣的问题 - 在请求该资源时在特定应用程序中打开该资源
    • 你根本无法控制它。您必须记住,Web 应用程序(HTML、CSS 和 Javascript)是严重沙盒化的。作为一名网络开发人员,您应该对用户的计算机拥有这种控制权。只有根据约定text/plain 被定向到当前注册以处理“文本/纯文本”请求的任何应用程序。默认情况下是 Notepad.exe,但用户可以很好地更改它。作为 Web 开发人员,您无能为力来强制执行它。这是设计使然,完全是故意的。
    猜你喜欢
    • 1970-01-01
    • 2017-12-29
    • 2011-07-08
    • 1970-01-01
    • 2020-07-12
    • 2014-07-03
    • 2017-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多