JavaWeb 之 web项目中的路径问题

Posted 格物致知_Tony

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaWeb 之 web项目中的路径问题相关的知识,希望对你有一定的参考价值。

一、web 中的相对路径和绝对路径

  在 JavaWeb 中,路径分为相对路径和绝对路径两种:

  1、相对路径

    相对路径就是指由这个文件所在的路径引起的跟其它文件(或文件夹)的路径关系。

.                                表示当前目录

../                              表示上一级目录

资源名                       表示当前目录/资源名

  2、绝对路径

    绝对路径是指目录下的绝对位置,直接到达目标位置,通常是从盘符开始的路径。(一般都是以"/"斜杠开头的)

    html中的绝对路径(Absolute path)指带域名的文件的完整路径。

    Web中的绝对路径:指带请求协议的路径,根据给出的请求路径可以准确定位到资源的路径,绝对路径=参照路径+相对路径

格式:http://ip:port/工程路径/资源路径

    注意:在实际开发中,路径都使用绝对路径,而不是使用相对路径。

       使用绝对路径的两种方式:

        ① 直接使用绝对路径;

        ② 也可以使用 <base>标签(参照路径)+ 相对路径 的方式               

二、web 中 "/" 的意义

  在 Web 项目中 /(斜杠) 是一种 绝对路径

  1、/ 斜杠被浏览器解析

         /(斜杠) 如果被浏览器解析,代表着当前服务器的路径

地址格式:http://ip:port                                  http://主机地址:端口号[到服务器]

    有下面几种情况都是由浏览器解析的:

     (1)html中的路径,如:

        ① img 标签和script标签的 src 的属性;

        ② a标签和link标签的 href 属性; 

        ③ from标签的 action属性;

     (2)重定向

        response.sendRediect(“/”);                把斜杠发送给浏览器解析,得到 http://ip:port/

  2、/ 斜杠被服务器解析

    /(斜杠) 如果被服务器解析,代表着当前项目的路径

地址格式是: http://ip:port/工程路径                 http://主机地址:端口号/项目名[到项目]

    以下几种情况都是由服务器解析的:

    (1)web.xml 中的设置,如 <url-pattern>/servlet1</url-pattern>
    (2)servletContext.getRealPath(“/”);      得到当前项目的真实路径
    (3)request.getRequestDispatcher(“/”); (请求转发)
  

  总结:  
  (1)带斜杠的放在配置文件和Java代码中的路径为后台路径(后台路径的参照路径是web应用的根,例如http://127.0.0.1:8080/ServletDemo)
       (2)带斜杠的放在 JSP 前台页面的前台路径(其参照路径是服务器的根,http://localhost:8080)
       (3)没有以斜杠开头的路径,其参照路径就是当前的访问路径

  (4)<base href="<%=basePath%>"> base标签会自动在当前页面的不以斜杠开头的路径前加上 basepath 的路径(即web项目的路径),使其变为绝对路径

  IDEA 中JavaWeb项目目录结构:

  

 

三、Base 标签的作用

    base标签是HTML语言中的基准网址标记,它是一个单标签,位于网页头部文件的head标签内,Title标签下面,一个页面最多只能使用一个base元素,用来提供一个指定的默认目标,也算是一种表达路径和连接网址的标记。

  

    通俗的说,base 标签可以设置当前页面中所有相对路径工作时,让相对路径不再参考相对位置,只和基准地址拼接,然后来进行跳转。(注意:是相对路径的参照,对绝对路径无效

 

    常见的 url 路径形式分别有相对路径与绝对路径,如果 base 标签指定了目标,浏览器将通过这个目标来解析当前文档中的所有相对路径,包括的标签有(a、img、link、form)。

 

    也就是说,浏览器解析时会在路径前加上base给的目标,而页面中的相对路径也都转换成了绝对路径。

    格式:

<base href="http://localhost:8080/项目路径/ ">

<base href="/项目路径/" >

    注意:base 后面的最后一个 /(斜杠) 不能省略,因为它表示一个目录,如果省略了,就代表一个资源。    

  使用了base标签就应带上href属性和target属性。

  1、base的 href属性

    比如由base制定了一个URL地址,接下来你所要调用的文件或图片等就无须再填写完整的地址,只需写上该文件名或图片名即可。

  2、base target

    target属性是网页窗口的打开方式,在base标签中设置该属性,那么页面中所有的链接都将遵循这个方式来打开网页,分别有如下几种选择:

 _blank:在新窗口打开链接页面。
 _parent:在上一级窗口中打开链接。
 _self: 在当前窗口打开链接,此为默认值,可以省略。
 _top: 在浏览器的整个窗口打开链接,忽略任何框架。

  注意:<base>标签仅对相对地址有效,对于绝对地址是无效的

 

 

 

以上是关于JavaWeb 之 web项目中的路径问题的主要内容,如果未能解决你的问题,请参考以下文章

在开发中关于javaweb中的路径问题小结

java web项目 相对路径怎么写

javaWeb中的/路径问题

JavaWeb中的路径问题

001_JavaWeb之Servlet的路径映射问题

Java web项目访问路径问题。求解啊!