Javaweb项目中的路径问题

最近在完成一个作业的时候,需要读取一个在javaWeb的项目中的XML文件。老是弄不好,便去网上找了方法,有用!一开始也没深究,完成了作业后,有精力深究了一下。如今写出来,供大家参考。



我的项目目录如图所示,我使用的是Tomcat 8.0作为服务器,servlet 3.0



首先考虑在普通java类当中获取UserList.xml的路径,首先要了解两个基本知识:

System.out.println(new File("/").getAbsolutePath());//E:\
System.out.println(new File(".").getAbsolutePath());//E:\javaee项目\ContactListB\.

“/”代表了当前项目路径的根目录,就好比上面代码所示,我的workspace是在E:\javaee项目,所以在普通java类当中就定位在根目录所在位置---E:/.

"."代表了当前项目位置,相对于java命令运行目录。这不难得到,就是E:\javaee项目\ContactListB\.。也就是说打印“.”的绝对路径,得到的就是java命令运行目录!我们可以做个实验



这是我们的实验目录,我们可以看到有个名为“00.txt”的文件在extractWord的目录下,我们在Eclipse中可以通过“./00.txt”或者“00.txt”进行访问(最好加上“.”),那么如果我们进入命令行会怎样呢?


我们可以看到,访问不到路径。这是因为,在命令行下,java默认命令运行目录(因为该目录下面存放了我们编译好的.class文件)为:

E:\javaee项目\extractWord\bin
而不是先前我们在eclipse下面所看到的 E:\javaee项目\ContactListB\

现在我们设定classpath,将classpath设定为E:\javaee项目\extractWord\bin后,再去运行


如图所示我们又可以得到在Eclipse下面得到的路径了,这就是java 命令运行目录。而我们可以得出Eclipse帮助我们set classpath了,所以我们才会在cmd上得到的结果与Eclipse上不一样。这就是-java命令目录的意思。



接下来我们回到最初的问题,如果在普通java类当中,获得想要的文件路径呢?知道“.”的意思之后,再加上想对应的路径,就可以轻松获取文件了。


那么,如何在Servlet当中,获取javaweb项目当中的文件路径呢?众所周知,Servlet的程序是放入服务器中运行的,而

给服务器使用的:   / 表示在当前web应用的根目录(webRoot下),意思就是如果想要进去WebRoot目录,就是”/WebRoot”就行了
给浏览器使用的: /  表示在webapps的根目录下

而在servlet 3.0使用注释代替了web.xml,使得不用写xml文件就可以运行servlet,所以我们不用将javaWeb项目拷贝纸TomCat的Webapps下面,也可以直接运行,(可以放,也可以不放)

System.out.println(new File(".").getAbsolutePath());
System.out.println(new File("/").getAbsolutePath());
System.out.println(this.getServletContext().getRealPath(""));
在servlet上面运行如上代码,得到如下结果:

D:\Eclipse\eclipse-jee-neon-R-win32-x86_64\eclipse\.
D:\
E:\javaee项目\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\MyFirstJaveProject\
如果我们使用“ .”或者"/",得到的都是eclipse软件路径和eclipse软件所在的根目录。

可以看到第三个方法this.getServletContext().getRealPath(""),

这个方法就是得到ServletContext的路径,而ServletContext是对于一个项目的全文,是一个唯一路径。可以看出如果我们不将JavaWeb项目拷贝到TomCat服务器下面,Eclipse会自动在Workspace下面相应的文件下创建一个名为wtpwebapps的文件夹,这个文件夹的作用就相当于TomCat服务器下面的webapps,所以我们就找到了相对应的文件路径

对于在src下面的资源文件,在wtpwebapps(webapps)下面的classes文件夹里面
对于在其他文件下面的资源文件,根据标准的WEB项目文件去找即可

<hr>

类文件路径的获取:

System.out.println("类文件路径:"+testPath.class.getResource("/"));
System.out.println("类文件路径:"+testPath.class.getResource("."));

结果如图所示:




使用“/”获取到的路径是的最末端是bin目录


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值