javaWeb开发的绝对路径与相对路径

来源: http://www.linuxidc.com/Linux/2016-10/135693.htm

绝对路径与相对路径

  • URL的一般语法格式为:
URL由三部分组成:资源类型、存放资源的主机域名、资源文件名。
(带方括号[]的为可选项):protocol:// hostname[:port] / path / [;parameters][?query]#fragment
protocol(协议):一般是ftp、file、http(https)、mailto、thunder等协议。
hostname(主机名):是指存放资源的服务器的DNS(域名服务器)主机名或IP地址。有时,在主机名前也可以包含连接到服务器所需的用户名和密码(格式:username:password@hostname)。
port(端口号):各种传输协议都有默认的端口号,如http的默认端口为80,我们在开发过程中一般采用8080。
path(路径):由零或多个“/”符号隔开的字符串,一般用来表示主机上的一个目录或文件地址。
parameters(参数):这是用于指定特殊参数的可选项。
query(查询):用于传递参数,可有多个参数,用“&”符号隔开,每个参数的名和值用“=”符号隔开。
fragment(信息片段):用于指定网络资源中的片段。
以http请求为例,URL地址是http://192.168.0.1:8080/OutSourcingManage/login?username=gaodianhua&password=123456
  • URL格式细分含义

http:/主机名:[端口号]/web应用根目录/资源名称[?query]。

下面以http://192.168.0.1:8080/OutSourcingManage/login?username=gaodianhua&password=123456为例

①服务器根地址(或称为tomcat服务器地址)规范为:

http:/主机名:[端口号]/,例如:http://192.168.0.1:8080/

②web应用根地址规范为:

http:/主机名:[端口号]/web应用根目录/,例如:http://192.168.0.1:8080/OutSourcingManage/

③资源根地址规范为:

http:/主机名:[端口号]/web应用根目录/资源名称,例如:http://192.168.0.1:8080/OutSourcingManage/login

请记住:上面三个概念,即:tomcat服务器根地址、web应用根地址、资源根地址 

  • 服务器端(tomcat)和客户端(浏览器)对URL地址的解析规则

对于请求的任何资源,均需要转化为绝对URL地址。

服务器端对URL地址的解析一般使用web应用根地址作为相对路径。例如页面跳转和重定向时使用的地址:

request.getRequestDispatcher("/WEB-INF/views/success.jsp").forward(request, res);//页面跳转,跳转成功

request.getRequestDispatcher("WEB-INF/views/success.jsp").forward(request, res);//页面跳转,跳转成功

response.sendRedirect("/hello.html");//重定向,重定向失败

response.sendRedirect("hello.html");//重定向,重定向成功

"/"在服务器端和客户端的处理规则是不同的,即:

  1. 在服务器端解析时,被认为是以web应用根地址为基准地址的相对路径。
  2. 在客户端解析时,被认为是tomcat服务器根地址。

相对路径即不带"/"时,在服务器端和客户端的处理规则则是相同的,即:

  1. 在服务器端解析时,被认为是web应用根的地址。
  2. 在客户端解析时,被认为是父页面请求时web应用根地址为基准地址的相对地址。
  3. 下面以hello.html测试可得:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <H1>Hello World</H1>
    <a href="world.html">测试相对地址</a>
    <a href="/world.html">测试绝对地址</a>
    </body>
    </html>

    注:world.html和hello.html在相同目录下。

    地址栏输入:http://localhost:8080/OutSourcingManage/hello.html,其中,"http://localhost:8080/OutSourcingManage/"为web应用根地址。

    点击"测试相对地址"时,地址栏显示的是:http://localhost:8080/OutSourcingManage/world.html(请求成功)

    点击"测试绝对地址"时,地址栏显示的是:http://localhost:8080/world.html(请求失败,此时要想成功需要手工补充web应用地址)

    如果地址栏输入:http://localhost:8080/OutSourcingManage/springmvc/hello.html,其中,"http://localhost:8080/OutSourcingManage/"为web应用根地址。

    点击"测试相对地址"时,地址栏显示的是:http://localhost:8080/OutSourcingManage/springmvc/world.html(请求成功)若word.html与hello.html不在同一目录下则请求不到

    点击"测试绝对地址"时,地址栏显示的是:http://localhost:8080/world.html(请求失败,此时要想成功需要手工补充web应用地址)

    注意:①页面跳转(forward)是以web应用根地址为基准的,可以跳转到同应用下任意有效资源页面。

             ②WEB-INF只能被服务器端访问,不能被客户端访问。

             ③重定向(sendRedirect)是服务器向客户端响应的资源名称,由客户端重新向服务器端请求。

             ④重定向可以跨web应用。

             ⑤基准路径或者叫相对路径的基准:生手开车时,经常出现会问一个问题:"我的方向盘向左方(或向右方)打了半圈,还是一圈,还是打死了?",教练常常会告诉我,如果记不清了就把方向盘打死,然后回一圈半,方向盘就正了。同样,在操作系统中,可以使用命令"pwd"查看当前所处的目录。这些告诉我们基准路径很重要。

posted @ 2017-12-18 17:13  onyli  阅读(531)  评论(0)    收藏  举报