2017-04-06 105 views
-1

这是我第二次提出这个问题 - 这次我会提供一些更多的细节来帮助获得明智的答案。如何从servlet获取JSP的服务器文件路径?

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

我知道JSP必须与相对路径运行的可执行文件,因为我可以运行这个能力:

<form action="./my_executable_that_generates_a_dynamic_page"> 

不过,我需要这从一个servlet运行使用JavaScript来填充保管箱。

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

上面的代码片段给了我一个不同的目录。

我也试过:

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

这是非常接近,除非有一个在URI不对应于文件系统(这是我们所拥有的)虚拟路径,它赢得了” t指向正确的目录。

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

+0

什么是正确的目录?文件位于何处?如果它在您的Web应用程序的根目录中,请尝试使用<%= application.getRealPath(“/ exec_produce_dropdown_list”)%>作为路径。 – rickz

+0

真实路径不对应。我发现我的解决方案,谢谢。 – TLane

回答

0

发现我的答案是:

request.getRealPath(request.getServletPath()) 

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

+0

请求对象的方法已被弃用。您应该使用我发布的应用程序对象。无论如何,我认为你正在混合文件路径和网址。我认为你需要做的是获得文件路径,然后通过类似于http://stackoverflow.com/questions/5604698/java-programming-call-an-exe-from-java-和-passing参数 – rickz

相关问题