我想知道如何在托管模式下获取文件的路径以访问它。我的应用程序正在使用servlet读取一些文件。最初文件位于文件夹“war”(例如“war / data / file1.txt”)下,在开发过程中一切正常,servlet读取文件并将数据发送到客户端。但是,当我在Tomcat中部署应用程序时,我遇到了问题。
我复制了文件夹war的内容,并将其放在“webapps”目录下的文件夹中(在Tomcat中)。在开发模式下,我使用路径“data / file1.txt”访问数据文件,但这在托管模式下不起作用,因为我发现在使用该路径时,servlet在“bin”中查找文件Tomcat安装目录的文件夹,不在应用程序的文件夹中。
因此,我想知道如何以编程方式找到访问该文件的正确路径,并避免在将应用程序部署到Tomcat或任何其他服务器时出现问题。
答案 0 :(得分:1)
使用ServletContext.getRealPath()
。您可以从Servlet.getServletConfig().getServletContext()
获取ServletContext的实例。
您看到它在开发模式下工作但在Tomcat中不工作的原因是路径通常与工作目录相关。如果您在Web应用程序目录中启动Tomcat或修改Tomcat快捷方式以在Web应用程序中拥有工作目录,您可能也可以使Tomcat工作。但你绝对不应该依赖它。
答案 1 :(得分:0)
看看GET.isProdMode()。如果在生产模式下运行,则返回true;如果在开发模式下,则返回false。您可以通过将其放在if语句中来选择适当的路径