zoukankan      html  css  js  c++  java
  • 3.路径问题详解

    首先 ,什么是路径问题呢? 比如说我们有一个 1.jsp,然后 它想去访问一个 在 某个包下的 servlet,通过这个 servlet ,去跳转到2.jsp

    那么我们的 1.jsp 是要有个 超链接去 访问 servlet的 ,那么这个超链接应该怎么写,是不是直接写上在web.xml 中 配置的servlet的映射路径,要不要加上 "/",

    到了这个 servelt,我们的 路径又该怎么写才能最后跳转到2.jsp页面,网上的观点是这样的:


    先搞清楚几个概念:访问路径 ,绝对路径,相对路径

      1.访问路径,一个完整的URL访问路径 是由两部分组成:访问路径 + 资源名称,比如我们有一个web项目HelloWorld,

      这个HelloWorld根目录下呢,有一个1.jsp,我们去访问这个1.jsp,是输入whttp://localhost:8080/HelloWorld/1.jsp,这个链接吧

       index.jsp就是我们的资源名称,剩下的那部分http://localhost:8080/HelloWorld/ (注意最后面是带了一个 / 的)就是我们的访问路径,


      根据 “访问路径是否可以独立完成资源的准确定位”,可以将访问路径分为绝对路径和相对路径
      2.绝对路径,就是可以准确定位到资源的路径,说白了就是带有具体协议的路径,

      比如说什么 http://localhost:8080/HelloWorld/index.jsp 能够准确访问到 这个 index.jsp,这就是一个绝对路径


      除了绝对路径就是相对路径了,顾名思义啊, 相对路径要有相对的对象,它必须要结合其参照路径才可以找到资源,

      也就是说 绝对路径 = 参照路径 + 相对路径



    我们这里主要讨论的也就是相对路径 的 参照路径 的问题,

    根据相对路径是否以斜杠开头,这个路径是在前台还是在后台,这个相对路径的参照路径是不同的

    我们先讨论 以斜杠开头的相对路径,分为前台路径和 后台路径

      1.所谓前台路径,就是指在浏览器解析执行的代码中所包含的路径,比如,出现在html、css、js等中的路径

       比如最前面提出的要通过 1.jsp 去访问 servlet,写在1.jsp超链接中的路径,就是前台路径,如果这个路径以 斜杠 开头,

       那么这个 前台路径的参照路径 是web服务器的根路径 就是我们的 http://localhost:8080

       这样的话 我们在1.jsp里面写的路径要不要 加上 斜杠呢?如果我们加上 斜杠,因为这是个前台路径,我们前面说到,

       它的参照路径是web服务器的根路径 http://localhost:8080,那么它构成的路径是 参照路径 + 相对路径 = http://localhost:8080/servlet的映射名,

       这样写肯定不可以吧,连访问哪个web应用都不知道

      2.好,然后我们来看看什么是后台路径,它是指服务器解析执行的代码及文件中所包含的路径,比如说我们java代码中的路径,肯定包括servlet了

       后台路径的参照路径是 web应用的根路径(http://localhost:8080/HelloWorld)

       如果通过 我们的 1.jsp访问到了 servlet,servlet想去跳转到2.jsp,应该怎么写,要不要加上斜杠 ,如果加上斜杠 ,

       它的参照路径是web应用的根路径 ,然后它构成的路径是 参照路径 + 相对路径 http://localhost:8080/HelloWorld/2.jsp,这样是可以访问到的吧

      3.好,最后我们来看下 不以斜杠 开头的相对路径

       不以斜杠开头的相对路径,无论是前台路径 ,还是后台路径,它的参照路径 都是当前资源的访问路径 ,

       一个完整的URL 由两部分构成,访问路径 和 资源名称

       我们前面说到的 1.jsp去访问servlet 不能加上 “/”,如果不加上 斜杠,它的参照路径是当前资源的访问路径,

       我们访问1.jsp的时候,是输入http://localhost:8080/HelloWorld/1.jsp的吧,把1.jsp这个资源名称拿掉,

       剩下的就是我们的访问路径http://localhost:8080/HelloWorld/

       最后构成的路径是 参照路径 + 相对路径 = 访问路径 + 相对路径 = http://localhost:8080/HelloWorld/servlet/TestServlet,

       这样就能够访问到我们的servlet,然后servlet, 去跳转到 2.jsp

      如果是后台页面跳转的方式是重定向的话还有一点特殊,即使是在后台,但是加了 / 后,它的参照路径是 web应用的根路径(但是仔细想想重定向的原理也能理解)
    总结一下:前台路径的参照路径 是web服务器的根路径,后台路径的参照路径是web应用的根路径, 不加斜杠,参照路径就是访问路径

  • 相关阅读:
    结合<span id="outer"><span id="inter">text</span></span>这段结构,谈谈innerHTML、outerHTML、innerText之间的区别
    字符串的方法slice、substr、substring对比
    为什么两个一样的对象,用===打印是false
    this指向
    复制对象的方法
    Promise以及async和await的用法
    前端性能优化&&网站性能优化
    P1510 精卫填海
    分解质因数
    P2648 赚钱
  • 原文地址:https://www.cnblogs.com/xuzekun/p/7403275.html
Copyright © 2011-2022 走看看