java - ServeletContext.getRealPath(“”) 为什么返回应用的根目录绝对地址?
高洛峰
高洛峰 2017-04-18 10:14:00
0
1
368

getRealPath

java.lang.String getRealPath(java.lang.String path)

Gets the real path corresponding to the given virtual path.
For example, if path is equal to /index.html, this method will return the absolute file path on the server's filesystem to which a request of the form http://: corresponds to the context path of this ServletContext.

上面是API的解释,我疑惑的是这个virtual path。
一般的用法是serveletContext.getRealPath(“/”),“/”可以理解为,应用的根目录,那么“” 呢?
希望有大神能,详细的解释这个virtual path的概念。

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全員に返信 (1)
大家讲道理

=====回答你这个问题突然遇到segmentfault网站挂了答案又重新写一遍====

javax.servlet.ServletContext

是一个接口。具体实现由servlet容器来实现,比如tomcat。在这个接口中定义了一个方法叫getRealPath,相应的实现也是有各个servlet容器来实现的。我没有查看tomcat的源码,只看了spring的mock实现。

@Override public String getRealPath(String path) { Resource resource = this.resourceLoader.getResource(getResourceLocation(path)); try { return resource.getFile().getAbsolutePath(); } catch (IOException ex) { logger.warn("Couldn't determine real path of resource " + resource, ex); return null; } } protected String getResourceLocation(String path) { if (!path.startsWith("/")) { path = "/" + path; } return this.resourceBasePath + path; }

在这个实现中可以看到传入“”和传入“/”效果是一样,代码都有了就不用在多解释了吧。其他容器的实现估计也差不多。

いいねを押す+0
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート
    私たちについて 免責事項 Sitemap
    PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!