Servlet:context.getRealPath(“”)的用途是什么?

时间:2011-01-26 07:53:23

标签: java servlets

据我所知它返回应用程序路径?但究竟是什么用它。

4 个答案:

答案 0 :(得分:5)

在许多环境中,不允许应用程序用户读取部署目录之外的任何文件。这主要是出于安全目的 - 例如,如果有人攻击您的应用程序,他们将无法读取密码文件。

在专业管理的环境中,开发人员通常不知道应用程序将放在哪个目录中。

因此,如果您需要读取属性,图像,证书等文件,可以将其放在应用程序目录(或.war文件)中,并使用getRealPath(“”)来获取需要加载的路径。

作为替代方法,您可以将外部文件放在类路径上,但有时会出现问题。对于大型文件,大多数应用服务器会尝试将整个文件加载到内存中,如果它位于类路径中则将其缓存。

答案 1 :(得分:2)

getRealPath()给出绝对路径(在文件系统上),导致在调用参数中指定的文件。它以特定于OS的格式返回路径。 另一方面,getContextPath()返回URI或资源的相对路径。

答案 2 :(得分:1)

据我记忆,我已经用它来保存图片或其他数据文件,因为它可以让您看到目前部署应用程序的位置。例如,Eclipse和Tomcat将创建一个临时文件夹,该文件夹深埋在Eclipse配置文件中的某个位置并在那里部署应用程序。

答案 3 :(得分:1)

这是文件系统中的真实路径。

来自javadoc:

返回的实际路径将采用适合运行servlet容器的计算机和操作系统的形式,包括正确的路径分隔符。如果servlet容器由于任何原因(例如,当从.war存档中提供内容时)无法将虚拟路径转换为实际路径,则此方法返回null。

我认为很清楚。我们为什么需要这个?有时Web应用程序在文件系统中执行某些操作。例如,从文件,写入文件等中读取内容。此API允许您访问实际存储JSP和其他内容的位置。