先描述一下資源的位置:我在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位址(有時也包括端口号)
③主機資源的具體位址。如目錄和檔案名等