先描述一下资源的位置:我在src下建了一个cn.config的包,里面有config.xml这个文件。来看这一段代码
package cn.test;
import java.net.urisyntaxexception;
import java.net.url;
public class pathtest
{
public static void geturl()
{
url url = pathtest.class.getclassloader().getresource("");
system.out.println(url);
}
public static void geturl2()
url url = pathtest.class.getclassloader().getresource("cn/config/config.xml");
public static void geturi() throws urisyntaxexception
string uri = pathtest.class.getclassloader().getresource("cn/config/config.xml").getpath();
system.out.println(uri);
public static void main(string[] args) throws urisyntaxexception
geturl();
geturl2();
geturi();
}
对于java项目的结果
file:/e:/mydir/pathtest/bin/
file:/e:/mydir/pathtest/bin/cn/config/config.xml
/e:/mydir/pathtest/bin/cn/config/config.xml
bin文件夹中放的是.java被编译后的.class文件,若是普通文件就按照路径自动拷贝的bin文件夹下,类加载器在加载.class的时候把普通文件也一起加载了。web项目也是同样的道理,只是文件夹不同。
对于web项目的结果
file:/e:/mydir/pathtest_web/webroot/web-inf/classes/
file:/e:/mydir/pathtest_web/webroot/web-inf/classes/cn/config/config.xml
/e:/mydir/pathtest_web/webroot/web-inf/classes/cn/config/config.xml
对于servlet,action取到项目里的路径和上面一样,如何取到在服务器的值呢?比如在tomcat里面的值呢?
string path = servletactioncontext.getservletcontext().getrealpath("/");
那么uri和url有什么区别呢?
uri—universal resource identifier通用资源标志符
web上可用的每种资源如html文档、图像、视频片段、程序等都是一个来uri来定位的
uri一般由三部组成
①访问资源的命名机制
②存放资源的主机名
③资源自身的名称,由路径表示,着重强调于资源。
url—uniform resource location统一资源定位符
url是internet上用来描述信息资源的字符串,主要用在各种www客户程序和服务器程序上,特别是著名的mosaic。
采用url可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。
url一般由三部组成
①协议(或称为服务方式)
②存有该资源的主机ip地址(有时也包括端口号)
③主机资源的具体地址。如目录和文件名等