各種path獲取到的路徑的區(qū)別
Main.class.getResource(""); 得到的是當(dāng)前class所在的路徑
Main.class.getResourceAsStream(""); 是從當(dāng)前路徑查找資源資源
Main.class.getClassLoader.getResource("");得到的是當(dāng)前類classloader加載類的起始位置
Main.class.getClassLoader.getResourceAsStream("");從classpath的起始位置查找資源
但是
Main.class.getResource("/"); 表示從classpath目錄下找
也就是說(shuō) Main.class.getResource("/"); 等價(jià)于 Main.class.getClassLoader.getResource("");
但是 Main.class.getClassLoader.getResourceAsStream("/"); 返回的是null
關(guān)于Servlet 資源路徑
ServletContext.getRealPath("/") 返回的是 war 包展開后的從系統(tǒng)根目錄到war展開地址的根路徑,比如windows 就是 file:///d/path/to/war/
也就是上面做了兩個(gè)動(dòng)作, 先從 war 根目錄找到資源, 然后返回資源完整路徑
同樣的 ServletContext.getResource("/") 返回的的是從war 根目錄查找到的資源,只不過(guò)返回的是 URL ServletContext.getResourceAsStream("/") 返回的是和上面一樣的 InputStream
但是 ServletContext.getResource("") 返回的是相對(duì)于URL的路徑,相當(dāng)于從當(dāng)前URL根路徑查找資源 ServletContext.getResourceAsStream("") 和上面一樣,只不過(guò)返回InputStream
關(guān)于maven工程下springmvc資源路徑配置
Java 源代碼文件資源在Maven工程中的默認(rèn)路徑是: src/main/java,這個(gè)路徑就是放置你的Java源代碼文件。默認(rèn)的路徑是無(wú)需在Maven的pom.xml配置文件中指定的
資源文件的缺省路徑為src/main/resources,這樣Maven在打包成war文件的時(shí)候,會(huì)將src/main/resources的資源文件復(fù)制到class目錄。
因此對(duì)于Spring mvc項(xiàng)目,servlet的配置文件springmvc-context.xml缺省會(huì)放置在 src/main/resources/springmvc-context.xml。
對(duì)應(yīng)的的web.xml指定的classpath:springmvc-context.xml中,servlet的配置文件springmvc-context.xml 需要從 class目錄下查找。