【问题标题】:How can I get the server filepath of the JSP from a servlet?如何从 servlet 获取 JSP 的服务器文件路径?
【发布时间】:2017-09-01 18:24:25
【问题描述】:

这是我第二次提出这个问题 - 这次我将提供更多细节以帮助获得明智的答案。

我在这里真正要做的是填充一个下拉菜单,其中包含从应该在页面加载时运行的可执行文件动态生成的数据。问题是,可执行文件必须位于服务器上 JSP 的本地目录中。我的公司有这个网站的 3 或 4 个克隆,我不能将可执行文件放在某个绝对文件路径中 - 它必须是相对的(因为其他团队会同时将它与 JSP 页面一起运送到其他处理器)。

我知道 JSP 能够运行具有相对路径的可执行文件,因为我可以运行这个:

<form action="./my_executable_that_generates_a_dynamic_page">

但是,我需要从 servlet 运行它以使用 javascript 填充 Dropbox。

<%= new File("./exec_produce_dropdown_list").getPath() %>

上面的 sn-p 给了我一个不同的目录。

我也试过了:

<%= new File(new File(request.getServletContext().getRealPath(request.getRequestURI())).getParent().replace('\\', '/'), "exec_produce_dropdown_list"); %>

这非常接近,除非 URI 中有一个与文件系统不对应的虚拟路径(这就是我们所拥有的),它不会指向正确的目录。

我有一种简单的方法来运行可执行文件吗? 我还想补充一点,没有可供我使用的 web.xml。

【问题讨论】:

  • 什么是正确的目录?文件在哪里?如果它在您的网络应用程序的根目录中,请尝试使用 作为路径。
  • 真实路径不对应。不过我找到了解决方案,谢谢。

标签: java html jsp servlets web


【解决方案1】:

找到我的答案:

request.getRealPath(request.getServletPath())

应该给我 /path/in/filesystem/to/file.jsp

【讨论】:

  • 请求对象的该方法已被弃用。您应该使用我发布的应用程序对象。无论如何,我认为您正在混淆文件路径和网址。我认为您需要做的是获取文件路径,然后通过stackoverflow.com/questions/5604698/… 处的代码之类的方式执行
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-16
  • 2011-09-20
  • 1970-01-01
相关资源
最近更新 更多