kapok
垃圾桶,嘿嘿,我藏的这么深你们还能找到啊,真牛!
BlogJava
::
首页
::
新随笔
::
联系
::
聚合
::
管理
::
455 随笔 :: 0 文章 :: 76 评论 :: 0 Trackbacks
<
2005年4月
>
日
一
二
三
四
五
六
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(28)
给我留言
查看公开留言
查看私人留言
随笔分类
.NET(10)
(rss)
ALL(464)
(rss)
AppFuse(20)
(rss)
CorBa(2)
(rss)
Eclipse技巧和插件等(7)
(rss)
English(10)
(rss)
ERP(3)
(rss)
HibernateAndSpring(82)
(rss)
J2EE(290)
(rss)
J2SE(27)
(rss)
JB(2)
(rss)
JBOSS(4)
(rss)
JDO(1)
(rss)
Linux(7)
(rss)
Oracle(9)
(rss)
PetStore
(rss)
Struts(9)
(rss)
UML与RUP(13)
(rss)
Web Services(8)
(rss)
Weblogic Portal(72)
(rss)
XDoclet(6)
(rss)
个人项目所需资料(8)
(rss)
办公自动化(2)
(rss)
点滴(1)
(rss)
程序员生活(10)
(rss)
行业知识(15)
(rss)
软件工程和项目管理(32)
(rss)
软件测试(1)
(rss)
随手贴(5)
(rss)
面试(4)
(rss)
随笔档案
2005年9月 (18)
2005年8月 (39)
2005年7月 (42)
2005年6月 (49)
2005年5月 (70)
2005年4月 (116)
2005年3月 (121)
Corba
EAI
Bea Portal相关
dnnchina
Enterprise Java Research Library
xoops
泡泡-博客
Online Document
Bea Resource Center
WebLogic Online Help_ZH
Open Source
exo portal
Groller
Mule
pow2toolkit
xpetstore
开源
Portal
huihoo JSR168
灰狐
RSS Links
.Text 0.958 安装&问题解决方案
All about Blog and RSS
RSS links
Weblogic净化贴
Weblogic
WL Portal FAQs
WLP FAQss
不错的链接
chenyun2000
CSDN专栏作家
Eclipse Live Forum
firebody
gigix
glchengang
IT人
JavaEye
JavaPassion
michael
ODMG
oracle_tech
Pattern在线查询手册
querycriteria
rosen
spring reference
上海电子地图
兔八哥
兔子
思维导图
范凯的废纸篓
工具集合
AppFuse
数据仓库相关
blog on dw
BRM业务参考模型
chinabi
china-bi
CNOUG DW
datawarehouse
dbazine
dmreview
DW 信息目录
dw-institute
DWWAY
ewsolutions
flymouse
inmoncif
intelligententerprise
isomebody
IT售前论坛
rkimball
SummerRain
tdan
商业智能
头头脑脑
快语综合
精进门
搜索
最新评论
1. re: Java中的URLEncoder和URLDecoder类
asdfsdf
--sadf
2. re: 面试题,做出来3万月薪[未登录]
很强,就是这样的逻辑@此外
--TEST
3. re: MKS Toolkit[未登录]
政治
--s
4. re: Java 远程方法调用(RMI)
if (r instanceof Meeting )
这个Meeting从哪里来?
--nx
5. re: ClearCase指南-基础篇(连载一)
clearcase 可以使用clearfsimport -recurse -nsetevent进行批量导入
--china-java.net
阅读排行榜
1. weblogic部署方法(11445)
2. x509数字证书介绍(11412)
3. 一个很不错的基于角色的权限管理系统设计!(10485)
4. UML的StereoType的解释(9002)
5. When Runtime.exec() won't (5431)
6. 完全卸载Oracle(5392)
7. OpenLDAP快速指南(5099)
8. 如何发布和查找 WSDL 服务描述(4488)
9. Eclipse不能自动编译的问题(4275)
10. SSL※ X509(3867)
评论排行榜
1. 面试题,做出来3万月薪(11)
2. x509数字证书介绍(5)
3. OpenLDAP快速指南(5)
4. Compiere的汉化 (5)
5. oracle的select for update(4)
6. 使用Eclipse plus Pluto开发你的第一个与JSR168兼容的Portlet(3)
7. 迎接RFID的时代(3)
8. 简化JavaMail:小巧 Jakarta Commons-Email 简单教程(3)
9. Visual CHM和jd2chm不错(2)
10. Java 远程方法调用(RMI)(2)
在JSP中处理虚拟路径
http://www.ziyuan8.com/down/Article/Catalog4/12.html
摘要
在为服务器端组件编程时,你很可能要从相对于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;}
}
posted on 2005-04-27 16:14
笨笨
阅读(342)
评论(0)
编辑
收藏
所属分类:
J2EE
、
ALL
、
J2SE
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
相关文章:
简化JavaMail:小巧 Jakarta Commons-Email 简单教程
读"Under the Hood of J2EE Clustering" J2EE集群
Phase
x509数字证书介绍
SSL※ X509
了解安全性断言标记语言
架构蓝图--软件架构 "4+1" 视图模型
主动对象
Profile,Stereotype,TaggedValue与OCL漫谈
Drools 为你的业务逻辑提供框架(翻译)
Powered by:
BlogJava
Copyright © 笨笨