Java Web项目中的相对路径与绝对路径

1.前情提要

1.相关知识:
java web项目发布时,其实只将WebContent文件夹部署到服务器上,并将文件夹名WebContent改为项目名,java源代码并不发布,而是运行存放在WebContent—>WEB-INF—>classes目录下的经过编译的class字节码文件。

2.这是用于下面测试的 web项目:
Java Web项目中的相对路径与绝对路径

2.相对路径

相对路径:相对于当前目录的路径为相对路径 (或者说是相对于当前文件所在目录的路径)

  1. 在web项目中,若我们在访问路径的最前端不加上“/”,那就是使用相对路径,如下图所示
    Java Web项目中的相对路径与绝对路径
    上面图中是一个jsp页面,它是项目中WebContent下的index.jsp。这里面写了一个form表单,将表单提交给LoginServlet,而action中没有添加“/”,则这里就是用了相对路径。而这里的相对路径指的是相对于当前的这个前端页面所在的文件夹(我们将在第4步进行测试)。

  2. 首先我们需要知道,在eclipse的web项目中,前端页面的默认起始路径就是WebContent.现在我们访问我这个项目中的index.jsp,那路径如下图:
    Java Web项目中的相对路径与绝对路径
    上图中,圈1是代表项目名,有人可能会问,你刚刚不是说前端页面的默认起始路径是webContent吗?这里没有看见webContent这字段,这是因为java web项目发布时,其实只将WebContent文件夹部署到服务器上,并将文件夹名WebContent改为项目名(这里项目就是叫TestWeb),圈2是文件名。

  3. 我们还需要知道,若需要访问servlet这种在src下的Java文件,也是直接“IP地址/项目名/servlet”,不需要加上包名。如下图,我将访问我项目下LoginServlet。
    Java Web项目中的相对路径与绝对路径

  4. 测试。
    当前我们jsp中代码如下(不加 / ,使用相对路径,看能否访问到LoginServlet):
    Java Web项目中的相对路径与绝对路径
    运行结果(点击提交后):
    Java Web项目中的相对路径与绝对路径
    Java Web项目中的相对路径与绝对路径
    可以访问到LoginServlet,接下来我将使用在WebContent文件下的Test文件下的index2.jsp文件进行测试,下面为index2.jsp的代码(依旧是使用相对路径)。
    Java Web项目中的相对路径与绝对路径
    运行之后的结果图如下:
    Java Web项目中的相对路径与绝对路径
    大家注意了:此时路径中有改变。当我点击提交后,运行结果图如下:
    Java Web项目中的相对路径与绝对路径
    从上图可以看出来,此时相对路径是http://localhost:8080/TestWeb/Test/,因为我们index2.jsp的页面是在Test文件夹下的,所以此时相对路径是 相对于index2.jsp的路径,自然会多个Test路径,而我们知道要访问src下的servlet 路径应该是,“IP地址/项目名/servlet”,此时多了个Test 怎么可能可以访问到呢。那怎么办呢,这时,我们只能使用绝对路径来访问。

3.绝对路径

  1. 绝对路径的使用方式就是在路径的开始加上“/”,若在路径开始处加上了一个“/”,那相对路径前缀就会被“清零”路径从最初位置开始

  2. 那么,绝对路径的最初位置路径是什么呢?就是服务器的IP地址+端口号,比如在本机访问,那就是http://localhost:8080。也就是说使用绝对地址,那访问所写的路径将会被拼接到http://localhost:8080之后。

  3. 测试。

    测试二:
    接下来我index1.jsp中 改成action=“/LoginServlet”(此时是绝对路径了),查看是否可以访问到页面。
    Java Web项目中的相对路径与绝对路径
    由上图可以得知,路径中的项目名TestWeb不见了,且出现了404页面,第一,说明了绝对路径的路径是 localhost:8080/ 而我们知道要访问src下的servlet 路径应该是,“IP地址/项目名/servlet”,那我们怎么才能访问到LoginServlet呢,此时,我们改index.jsp代码改成下面的样子(这里先不用jsp的方法)。
    Java Web项目中的相对路径与绝对路径
    如果用了绝对路径把项目名(TestWeb)清除掉了,那我们就自己加上去。运行结果如下:
    Java Web项目中的相对路径与绝对路径
    运行成功,且出现了TestWeb。接着我们把index2.jsp中 改成action=“/LoginServlet”(此时是绝对路径了),查看是否可以访问到页面。
    Java Web项目中的相对路径与绝对路径
    此时,我们发现不仅仅是项目名TestWeb不见了,连Test也不见了,只剩下localhost:8080,再次说明了绝对路径的路径,那我们要如何访问呢,跟上面例子同理,若清除了,我们自己加上。
    Java Web项目中的相对路径与绝对路径
    Java Web项目中的相对路径与绝对路径
    总结:

    1. 绝对路径就是在路径开头加“/”,那路径的起始就是服务器IP地址;
    2. 而相对路径就是开头不加“/”,而起始就是发起跳转的文件的所在路径;