Java JSP:具有相对路径的FileReader引发FileNotFoundException
我有一些嵌入的Java代码,我试图在其中加载一个属性文件,该文件与JSP文件位于同一文件夹中:Java JSP:具有相对路径的FileReader引发FileNotFoundException,java,jsp,servlets,Java,Jsp,Servlets,我有一些嵌入的Java代码,我试图在其中加载一个属性文件,该文件与JSP文件位于同一文件夹中: Properties titles = new Properties(); titles.load(new FileReader("titles.txt")); 上面的代码引发FileNotFoundException 在这种情况下,如何准确地引用“当前文件夹”?通过使用加载类的类加载器,您可以轻松地获取文件 getClass().getClassLoader().getResourceAsStre
Properties titles = new Properties();
titles.load(new FileReader("titles.txt"));
上面的代码引发FileNotFoundException
在这种情况下,如何准确地引用“当前文件夹”?通过使用加载类的类加载器,您可以轻松地获取文件
getClass().getClassLoader().getResourceAsStream("titles.txt");
然而,我不知道它是否能与JSP一起工作
您也可以使用ServletContext.getResourceAsStream(“”),但是您必须给出完整的webcontent相对路径。两件事:
因此:创建一个控制器类,将属性文件放在同一文件夹中,并通过
getClass().getClassLoader().getResourceAsStream(“titles.txt”)从控制器类加载它代码>FileReader
要求绝对路径,或运行java的相对路径。但是对于web应用程序,这通常是通过/etc/init.d/tomcat startup
完成的,您不能依赖当前目录
通过调用servletContext.getRealPath(“/relative/path/to/file.txt”)
您可以通过调用request.getRequestURL()
来获取URL的相对部分
也就是说,您最好在servlet中使用此代码,而不是JSP-JSP是一种视图技术,不应将逻辑放在其中。是的,我也在考虑这一点,可能是JSP被编译而资源找不到的问题。当然,你在第一点上完全正确!!!最后一个不是真的。它只接受webcontent相对路径。相关:FileReader需要绝对路径。不,没有。这里的问题是,执行JSP时的当前目录不是由JSP本身的任何属性决定的,因此相对于JSP定位文件是没有意义的。