首页
技术博客
PHP教程
数据库技术
前端开发
HTML5
Nginx
php论坛
新用户注册
|
会员登录
PHP教程
技术博客
编程问答
PNG素材
编程语言
前端技术
Android
PHP教程
HTML5教程
数据库
Linux技术
Nginx技术
PHP安全
WebSerer
职场攻略
JavaScript
开放平台
业界资讯
大话程序猿
登录
极速注册
取消
热门标签 | HotTags
css
listview
button
jquery
v8
bootstrap
textview
build
hybrid
charts
cookies
ajax
webkit
firefox
checkbox
node.js
dom
hover
base64
javascript
dialog
firebug
jq
js
chrome
chart
requirejs
vue.js
focus
css3
npm
layout
vue
正则
scroll
overflow
html5
label
console
icons
svg
scheme
iframe
react
chart.js
yarn
微信开发
html
上传
postman
view
当前位置:
开发笔记
>
前端
> 正文
在JSP中处理虚拟路径
作者:灵动的音乐xl | 来源:互联网 | 2022-06-16 03:28
在JSP中处理虚拟路径
摘要
在为服务器端组件编程时,你很可能要从相对于web根的路径来取得某个文件的真实路径,但此文件实际上在站点的一个虚拟路径上。
什么是虚拟路径?
在一个web服务器上,虚拟路径将物理上分离的各文件组合在一起,放在同一个站点路径上,在应用服务器上,每个应用定位于其自己的虚拟路径上,实际上相互之间有着完美地分离。
getRealPath()方法
JSP servlet API提供了getRealPath(path)方法,返回给定虚拟路径的真实路径,如果转换错误,则返回null。
getRealPath语法定义:
public java.lang.String getRealPath(java.lang.String path)
返回一个字符串,包含一个给定虚拟路径的真实路径。例如,虚拟路径 "/index.html"
不管在服务器文件系统上具有怎样的真实路径,使用"/index.html"总可以找到它。返回的真实路径使用了相近于servlet容器(srvlet container)所在计算机或操作系统的格式,包含了适当的路径分隔符。如果servlet容器无法转换则这个方法将返回null。
参数:
path -一个描述了虚拟路径的字符串
返回值:
描述真实路径的字符串或者null
遗憾的是,getRealPath常常返回不同的东西,这取决于服务器或jsp文件调用此方法的路径位置。
一个example站点
假设我们的站点组织如下:
根路径包含了我们的站点的根: http://address/
a_virtual目录包含了我们站点提供的虚拟路径的文件,例如:
http://addess/virtual_dir/
我们查找file1.txt和file2.txt的真实路径,它们一个在站点根路径下,一个在虚拟路径下。
getRealPath("/file1.txt") 应该返回“C:\site\site_root\file1.txt",
getRealPath("/virtual_dir/file2.txt")应该返回"C:\site\a_virtual\file2.txt"
getRealPath("/file3.txt")应该返回null,因为这个文件不存在。
但getRealPath()并不总是返回同样的结果,这还取决与你使用的js引擎。
JSP引擎
Tomcat 3.1
Tomcat返回的结果具有应用的独立性(application dependant):
它取决与调用getRealPath方法的那个jsp文件所在的位置。
实际上,当page1.jsp (位于站点根处)对file1.txt和file2.txt调用txtgetRealPath(), 它返回正确的结果。(这是在tomcat 3.1, 3.0版则对file2.txt返回错误的路径)
但是当page2.jsp(位于另一个应用,在一个虚拟路径中)调用getRealPath,它返回了错误的路径:它连接了该jsp文件所在的路径和请求的虚拟路径。
例如,从page2.jsp中调用getRealPath(/file1.txt)将返回 C:\site\a_virtual\file1.txt。
这一行为其实是使不同的应用相互独立的典型的处理方法。
JRun 2.3.3和INPRISE APPLICATION SERVER 4.0 (IAS)
JRun和IAS对file1.txt和file2.txt都返回正确的结果。
然而所有这些引擎有一个共同的行为: 当getRealPath处理不存在的文件时,它们都不返回null!
解决之道
既然getRealPath总是返回一个路径,我们怎么知道它是否正确呢?最简单的方法是检查这个返回的路径是否存在。
这就是isVirtual方法要做的:在对一个给定的文件调用getRealPath以后,它使用了java.io来
存取这个文件,于是就可以知道它是否存在。
/**
* isVirtual
*
* Check if the path name is a virtual or not.
*
* @param pathName The name of the path to check.
*/
private boolean isVirtual(String pathName) {
// Check if it is a virtual path
if (m_application.getRealPath(pathName)!=null) {
java.io.File virtualFile = new java.io.File(m_application.getRealPath(pathName));
if (virtualFile.exists()) {return true;}
else {return false;}
}
else {return false;}
}
服务器
html
容器
tomcat
写下你的评论吧 !
吐个槽吧,看都看了
会员登录
|
用户注册
推荐阅读
js
H5技术实现经典游戏《贪吃蛇》
本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ...
[详细]
蜡笔小新 2024-11-21 20:16:59
js
我的读书清单(持续更新)
我的读书清单(持续更新)201705311.《一千零一夜》2006(四五年级)2.《中华上下五千年》2008(初一)3.《鲁滨孙漂流记》2008(初二)4.《钢铁是怎样炼成的》20 ...
[详细]
蜡笔小新 2024-11-21 13:01:23
js
从CodeIgniter中提取图像处理组件
本指南旨在帮助开发者在未使用CodeIgniter框架的情况下,如何独立使用其强大的图像处理功能,包括图像尺寸调整、创建缩略图、裁剪、旋转及添加水印等。 ...
[详细]
蜡笔小新 2024-11-20 19:57:35
js
DedeCMS 手机端站点配置与优化指南
本文详细介绍如何安装和配置DedeCMS的移动端站点,包括新版本安装、老版本升级、模板适配以及必要的代码修改,以确保移动站点的正常运行。 ...
[详细]
蜡笔小新 2024-11-22 18:44:25
js
解决PHP项目在服务器无法抓取远程网页内容的问题
本文探讨了在使用PHP进行后端开发时,遇到的一个常见问题:即在本地环境中能够正常通过CURL获取远程网页内容,但在服务器上却无法实现。我们将分析可能的原因并提供解决方案。 ...
[详细]
蜡笔小新 2024-11-21 10:31:32
cookies
CentOS下ProFTPD的安装与配置指南
本文详细介绍在CentOS操作系统上安装和配置ProFTPD服务的方法,包括基本配置、安全设置及高级功能的启用。 ...
[详细]
蜡笔小新 2024-11-21 09:45:56
cookies
Web动态服务器Python基本实现
Web动态服务器Python基本实现 ...
[详细]
蜡笔小新 2024-11-21 08:01:30
js
Bootstrap Paginator 分页插件详解与应用
本文深入探讨了Bootstrap Paginator这款流行的JavaScript分页插件,提供了详细的使用指南和示例代码,旨在帮助开发者更好地理解和利用该工具进行高效的数据展示。 ...
[详细]
蜡笔小新 2024-11-20 13:39:53
js
HTML前端开发:UINavigationController与页面间数据传递详解
本文详细介绍了如何在HTML前端开发中利用UINavigationController进行页面管理和数据传递,适合初学者和有一定基础的开发者学习。 ...
[详细]
蜡笔小新 2024-11-20 09:46:39
js
2017年软件开发领域的七大变革
随着技术的不断进步,2017年对软件开发人员而言将充满挑战与机遇。本文探讨了开发人员需要适应的七个关键变化,包括人工智能、聊天机器人、容器技术、应用程序版本控制、云测试环境、大众开发者崛起以及系统管理的云迁移。 ...
[详细]
蜡笔小新 2024-11-19 20:17:20
js
提升工作效率:掌握15个键盘快捷键
在日常工作中,熟练掌握计算机操作技巧能够显著提升工作效率。本文将介绍15个常用的键盘快捷键,帮助用户更加高效地完成工作任务。 ...
[详细]
蜡笔小新 2024-11-19 15:20:10
build
华为鲲鹏平台适配的Redis Docker镜像构建指南
本文详细介绍如何在华为鲲鹏平台上构建和使用适配ARM架构的Redis Docker镜像,解决常见错误并提供优化建议。 ...
[详细]
蜡笔小新 2024-11-19 15:04:08
build
解决Tomcat启动时出现org.apache.catalina.LifecycleException异常的方法
在尝试启动Java应用服务器Tomcat时,遇到了org.apache.catalina.LifecycleException异常。本文详细记录了异常的具体表现形式,并提供了有效的解决方案。 ...
[详细]
蜡笔小新 2024-11-19 11:46:52
build
Struts2 中 ActionContext 与 ServletActionContext 的应用
本文将探讨如何在 Struts2 中使用 ActionContext 和 ServletActionContext 来获取请求参数和会话信息,同时解释它们的内部机制和最佳实践。 ...
[详细]
蜡笔小新 2024-11-18 15:28:59
build
RTThread线程间通信
线程中通信在裸机编程中,经常会使用全局变量进行功能间的通信,如某些功能可能由于一些操作而改变全局变量的值,另一个功能对此全局变量进行读取& ...
[详细]
蜡笔小新 2024-11-18 14:56:11
灵动的音乐xl
这个家伙很懒,什么也没留下!
Tags | 热门标签
css
listview
button
jquery
v8
bootstrap
textview
build
hybrid
charts
cookies
ajax
webkit
firefox
checkbox
node.js
dom
hover
base64
javascript
dialog
firebug
jq
js
chrome
chart
requirejs
vue.js
focus
css3
RankList | 热门文章
1
php更新数据库字段的函数是,php更新数据库字段的函数是
2
检查在所有可能的“?”替换中,给定的二进制字符串中是否出现子字符串“10”带 1 或 0
3
python解决CSF布料模拟滤波的批处理问题(解决获取多个点云数据las数据)
4
CM 创始人分享:在 GitHub 上成为开源项目的守护者
5
第六次团队作业总结
6
poj 3352 Road Construction
7
宋词《解语花》译文与赏析
8
电脑启动后黑屏,仅鼠标可见
9
开机自启动的几种方式
10
单元测试:使用mocha和should.js搭建nodejs的单元测试
11
在VSCode中自定义调试控制台名称
12
基于Linux开源VOIP系统LinPhone[四]
13
Python 3 Scrapy 框架执行流程详解
14
MySQL 数据迁移时 .frm 文件报错问题
15
线程同步与线程池管理
PHP1.CN | 中国最专业的PHP中文社区 |
DevBox开发工具箱
|
json解析格式化
|
PHP资讯
|
PHP教程
|
数据库技术
|
服务器技术
|
前端开发技术
|
PHP框架
|
开发工具
|
在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved |
京公网安备 11010802041100号
|
京ICP备19059560号-4
| PHP1.CN 第一PHP社区 版权所有