Servlet系列之(1) getRealPath、getRes

2017-08-20  本文已影响89人  Ethan_Walker

1. servletContext.getRealPath()

Intellij Idea 目录结构

image.png
  1. getRealPath("")
  1. getRealPath("")拼接路径的方法仅仅是:
    在原有基础路径后添加查找路径, 而不管真实文件是否存在

    例:
getRealPath("/demo.txt")
 F:\6_workspace\intellij_idea\12-Remind\out\artifacts\12_Remind_war_exploded\demo.txt

即使demo.txt 不在 src 根目录下,仍然拼接成该路径
实际上src下的 demo.txt 对应的路径应该是:
F:\6_workspace\intellij_idea\12-Remind\out\artifacts\12_Remind_war_exploded\WEB-INF\classes\demo.txt

解决:getRealPath("/WEB-INF/classes/demo.txt")

**故获取项目下资源时,都要添加 /WEB-INF/classes/ **

例:
demo.txt 在 src 根目录下


image.png

部署路径:


获取到实际资源路径:
getServletContext().getRealPath("/WEB-INF/classes/demo.txt")

2. servletContext.getResourceAsStream("");

根据文件的路径获取流, 参数的路径
例如,同上,获取 src 根目录下的 demo.txt,demo.txt 最终被部署时,文件相对路径是 /WEB-INF/classes,
InputStream is1 = getServletContext().getResourceAsStream("/WEB-INF/classes/demo.txt");

只能使用相对路径,不能通过绝对路径获取项目下资源

3.class.getResource("")

this.getClass().getResource("/demo.txt") 表示获取的是classpath 即 src下的 demo.txt 文件, / 表示 classpath

如果没有 / , 即 getResource("demo.txt") 表示获取的是与当前类在同一个包下的 demo.txt

上一篇下一篇

猜你喜欢

热点阅读