JSP和PHP中获得文件路径的办法

首先说说JSP吧。

JSP部分

如果是jsp页面,或者是servlet里面

1.request.getRealPath("/"));
//系统根目录实际物理路径
2.request.getContextPath();
//站点的根路径.比如项目为根目录,得到的是项目的名字;不是则得到一个"",即空字符串.

一般在上传文件时使用 1 多一点;很多时候 2 是用来解决jsp页面相对路径的问题。比如

1.<a href="index.jsp">首页</a>
2.<a href="<%=request.getContextPath();%>index.jsp">首页</a>

解析成html语言

1.<a href="index.jsp">首页</a>
2.<a href="webproject/index.jsp">首页</a>
//假设根目录为“webproject”

如果是java类里面,需要对web目录的一些文件操作,可以这样做

String path1 = this.getClass().getResource("/").getPath();
String path2 = this.getClass().getResource("/").toString();
String path3 = this.getClass().getResource("").getPath();
String path4 = this.getClass().getResource("").toString();

System.out.println("path1 "+path1);
System.out.println("path2 "+path2);
System.out.println("path3 "+path3);
System.out.println("path4 "+path4);

我们可以看看在我电脑上执行的结果,比对一下有什么不同

path1 /F:/JavaWorkplace/.metadata/.me_tcat/webapps/testPath/WEB-INF/classes/
path2 file:/F:/JavaWorkplace/.metadata/.me_tcat/webapps/testPath/WEB-INF/classes/
path3 /F:/JavaWorkplace/.metadata/.me_tcat/webapps/testPath/WEB-INF/classes/com/test/
path4 file:/F:/JavaWorkplace/.metadata/.me_tcat/webapps/testPath/WEB-INF/classes/com/test/

注:testPath为网站的根目录,com/test是java包,结构是com.test .
path1 和 path2 得到了 classes 目录的物理路径;path3 和 path4 获得了当前文件目录的物理路径。
path3 和 path4 返回了URL类型,使用 toString() 方法,就可以当作字符长操作了。
我再说一下我是怎么拼接到我的web目录下的。无论是上面哪一种方法,最后获得一个String类型的值。我们使用字符串的相关函数函数处理

substring(int beginindex,int endindex);
//截取从beginindex到endindex长度的字符,返回一个字符串
substring(int beginindex);
//从第 beginindex 位开始截取直到结束,返回一个字符串
indexOf(String str);
//这个函数参数好几种,详见jdk.返回str在原字符串中的位置,类型为 int

例如使用 path2 的方法。

int begin = 6;
//URL类型头固定,“file://“,所以从第六位开始.
int end = path2.indexOf("WEB-INF");
//“WEB-INF”特征明显,用户物理路径很少出现一样的路径,所以作为截取的结束
String tarPath = path2.substring(begin,end);

最后,tarPath为

F:/JavaWorkplace/.metadata/.me_tcat/webapps/testPath/

获得这样一个目录的物理路径,然后操作web目录下的文件就方便多了。

这样一个东西,没什么难度,做一个记录吧。另外,最近涉及到php文件包含之类的一些东西,学习使用php操作文件相关。
今天正好也把常见的php获得文件路径的方法一并记录下来。

PHP部分

本人对PHP学习很浅,以下内容多为网络或书籍中摘录,没有原创.

/***********************************/
/*输出结果:		            /
/*	1. /testPath.php            /
/*	2. /web/www	            /
/*	3. E:\web\www		    /
/*	4. E:\web\www\testPath.php  /
/*	5. E:\web\www		    /
/*	6. /web/www/testPath.php    /
/*		      By TomyTime   /
/***********************************/
<?php>  
echo "1. ".$_SERVER['PHP_SELF']."<br />";  echo "2. ".$_SERVER['DOCUMENT_ROOT']."<br />"; 
echo "3. ".realpath(".")."<br />"; 
echo "4. ".__FILE__."<br />"; 
echo "5. ".dirname(__FILE__)."<br />"; 
echo "6. ".$_SERVER[SCRIPT_FILENAME]."<br />";  
<?>   
注:服务器根目录物理路径为 "E:\web\www",当前文件为"testPath.php".

以上代码为我本人学习时候测试使用的,可以简单对比一下。在实际中,寻找最合适的表达形式就好。

已有 11 条评论
  1. 网络安全923 网络安全923

    想跟你的http://www.tomytime.com/ 交换下友情链接 hack520`s Blog http://hack520.co.kr/923

    1. 好的,链接已添加。

添加新评论