新手程序员的俩大疑惑之一路径问题

关于路径问题没有系统学习过的程序员就会被这个问题搞得很晕,很想立刻解决但是无从下手的感觉。接下来咱们就来深入了解一下路径问题。

首先来看下什么是相对路径和绝对路径

想对路径与绝对路径的区分很简单,就是看一个路径能否准确的定位到某个资源,若仅靠路径自身就能准确的定位到一个资源,那么这个路径就是一个绝对路径,而要依靠一个参照路径才能精准的定位到一个资源的话,这个路径就是一个相对路径。举个例子  绝对路径:http://localhost:8080/News/index.jsp,这就是一个绝对路径。而/News/index.jsp(以这样出现的路径)一般就是相对路径(这里插一小的知识点:http://localhost:8080/News/这个是资源路径,index.jsp为资源名称)。

相对路径和绝对路径的关系

绝对路径=参照路径+相对路径

参照路径对于浏览器端和服务器端是不一样的,浏览器端的参照路径是:http://localhost:8080/(即web服务器的根路径),服务器端的参照路径为:http://localhost:8080/News/(即web应用的根路径)。所有的相对路径到最后都得加上参照路径,来变成绝对路径来定位资源的。

为了加深理解:可以这样认为服务器端的url是标识资源的,浏览器端的url是查找资源的。

注意:将参照路径和相对路径结合成绝对路径是系统自动为我们合成的,我们只需要识别什么时候使用相对路径,怎样正确的使用相对路径即可。

相对路径又分为以斜杠开头的和不以斜杠开头的

以斜杠开头的表示其参照路径符合上面所说的,以斜杠为开头的前台路径的参照路径为http://localhost:8080

以斜杠为开头的后台路径的参照路径为http://localhost:8080/News。

扫描二维码关注公众号,回复: 2261401 查看本文章

不以斜杠开头的参照路径为所在页面的资源路径。

以上为理论知识下面结合代码来看

首先看前台路径有哪些:

<form action="/ServletTest/servletTest" method="post">
name:<input type="text"/>
<input type="submit" value="提交" />

</form>

(补充:前台路径一般是指静态资源例如html等中的url,以及jsp中的静态部分)

这是一个form表单其相对路径为/ServletTest/servletTest,从这个上面可以看出这是一个以“/”为开头的前台路径,所以参照路径为web服务器的根:http://localhost:8080,俩者结合为http://localhost:8080/ServletTest/servletTest

接下来举一个后台的路径例子

<servlet-mapping>
  <servlet-name>servletTest</servlet-name>
  <url-pattern>/servletTest</url-pattern>

  </servlet-mapping>

这是servlet-mapping中的url,从代码上可以看出这是一个这是一个以“/”为开头的后台路径,所以其参照路径为http://localhost:8080/ServletTest,结合起来的绝对路径是http://localhost:8080/ServletTest/servletTest

接下来来看一看不以“/”开头的url的参照路径

代码为<form action="servletTest" method="post">
name:<input type="text"/>
<input type="submit" value="提交" />

</form>

由于这段代码是在jsp中,jsp的url是http://localhost:8080/ServletTest/index.jsp,其资源路径是http://localhost:8080/ServletTest/,所以form标签中的url的参照路径是http://localhost:8080/ServletTest/,结合起来的绝对路径就是:http://localhost:8080/ServletTest/servletTest。

这些应该可以解释我们常见的路径问题了,因为笔者的电脑截屏比较麻烦,所以有些环节没有及时给出截屏,之后我会尽快解决这个问题的,如果有疑问可以私聊笔者。



猜你喜欢

转载自blog.csdn.net/qq_38638148/article/details/80645235