各种path获取到的路径的区别

时间:2020-02-19 21:28:45 类型:JAVA
字号:    

  各种path获取到的路径的区别

  Main.class.getResource(""); 得到的是当前class所在的路径

  Main.class.getResourceAsStream(""); 是从当前路径查找资源资源

  Main.class.getClassLoader.getResource("");得到的是当前类classloader加载类的起始位置

  Main.class.getClassLoader.getResourceAsStream("");从classpath的起始位置查找资源

  但是

  Main.class.getResource("/"); 表示从classpath目录下找

  也就是说 Main.class.getResource("/"); 等价于 Main.class.getClassLoader.getResource("");

  但是 Main.class.getClassLoader.getResourceAsStream("/"); 返回的是null

  关于Servlet 资源路径

  ServletContext.getRealPath("/") 返回的是 war 包展开后的从系统根目录到war展开地址的根路径,比如windows 就是 file:///d/path/to/war/

  也就是上面做了两个动作, 先从 war 根目录找到资源, 然后返回资源完整路径

  同样的 ServletContext.getResource("/") 返回的的是从war 根目录查找到的资源,只不过返回的是 URL ServletContext.getResourceAsStream("/") 返回的是和上面一样的 InputStream

  但是 ServletContext.getResource("") 返回的是相对于URL的路径,相当于从当前URL根路径查找资源 ServletContext.getResourceAsStream("") 和上面一样,只不过返回InputStream

  关于maven工程下springmvc资源路径配置

  Java 源代码文件资源在Maven工程中的默认路径是: src/main/java,这个路径就是放置你的Java源代码文件。默认的路径是无需在Maven的pom.xml配置文件中指定的

  资源文件的缺省路径为src/main/resources,这样Maven在打包成war文件的时候,会将src/main/resources的资源文件复制到class目录。

  因此对于Spring mvc项目,servlet的配置文件springmvc-context.xml缺省会放置在 src/main/resources/springmvc-context.xml。

  对应的的web.xml指定的classpath:springmvc-context.xml中,servlet的配置文件springmvc-context.xml 需要从 class目录下查找。


<