论绝对地址和相对地址

在电脑操作学习和互联网使用中,我们经常会接触绝对地址和相对地址的概念。这里,重点谈互联网上的,具体谈在做网站时,绝对地址和相对地址有什么区别?

绝对地址:互联网上的独立地址,在任何网站通过这个地址可以直接到达目标网页。包含主域名和目录地址。

相对地址:相对于网站的地址,当域名改变时,相对地址的“绝对地址”也发生变化。

假设2个网站A:www.seowhy.com  B: www.baidu.com

这2个网站的根目录下有都一个网页,比如:404.html

在这两个网站上,我们做同样的一个链接 /404.html (相对地址)

在网站A上,指向的是 www.seowhy.com/404.html

在网站B上,指向的是 www.baidu.com/404.html

如果你希望在A网站上的 /404.html 指向B网站,那么你需要写 www.baidu.com/404.html(绝对地址)。

上面是泛谈了两者的区别,最近我在学习javaweb时候,更深入的了解两者的用法与区别,下面我将用具体的例子作解释。

相信大家都不陌生Servlet中请求转发,下面我列出了两种转发方式。

ServletContext context = getServletContext();
RequestDispatcher dispatcher = context.getRequestDispatcher(path);
dispatcher.forward(request,response);

这两种方式都实现了请求转发,实现上都达到一样的效果;。两者的区别就是在path上,前者的path必须为绝对路径,后者的path既可以为绝对路径也可以为相对路径。所谓绝对路径就是以符号”/”开头的路径,”/”表示当前web应用的url入口,而相对路径就是指相对于当前文件的路径,不以”/”开头。下面我们来看一个例子就明白了。

examcodeServlet:

RequestDispatcher dispatcher = request.getRequestDispatcher("/register.jsp");
dispatcher.forward(request, response);

上面的servlet存在于MyWebApp的工程下的一个java程序。上面采用绝对路径,/代表 localhost:8080/MyWebApp,所以请求自己自然就转发到localhost:8080/MyWebApp/register.jsp

假如将path改为”register.jsp”,那么这种情况就有所不同了。先看一下examcodeServlet在web.xml配置。

<servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>examCode</servlet-name>
    <servlet-class>com.app.examCodeServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>examCode</servlet-name>
    <url-pattern>/examCode</url-pattern>
</servlet-mapping>

examcodeServlet的url的寻址路径采用/examCode,上面我们说过了/的用法,这里就不重复了。

可以得到url:localhost:8080/MyWebApp/examCode,而它的物理路径是D:/MyWebApp/src/com/app/examCodeServlet.java,讲清楚了这个问题,我们回到上一个问题,path改”register.jsp”后的变化,首先从web.xml中找到当前的servlet的寻址路径也就是.这里的寻址路径为localhost:8080/MyWebApp/examCode,然后以这个localhost:8080/MyWebApp为根目录,path的实际值就是localhost:8080/MyWebApp/register.jsp。相对路径的意思,大家应该也都明白了吧。就是指在寻址的url的层面上处于同一目录下面。

下面我想说一下重定向里面的路径问题.

response.sendRedirect(path);

这里也是存在绝对和相对路径的问题,但是和上面的请求转发又有点不一样。这里的”/”也表示绝对路径,但是不是相对于Web应用的绝对路径,而是相对于当前服务器的根目录路径的url,”/success.jsp” 就是指localhost:8080/success.jsp,相对路径的使用和请求转发是一样的。此外还存在一种以”http://”开头的路径,这代表一个完整的url。

不知道大家发现没有网页的url都是/表示下层的意思,而不是使用\,我觉得这是因为\容易产生转义字符的歧义问题所以才没有采用。不过说来也奇怪,我们计算机的磁盘路径却都是采用\来表示的,我们可以用”\\”转义表示\。当然你用/寻找磁盘路径也不会出错。系统也会自动转化成”\\”。

论绝对地址和相对地址

时间: 2024-11-05 16:06:27

论绝对地址和相对地址的相关文章

HTML第三天学习笔记

昨天学的超链接,今天深入学习了下,发现了更多的知识点,而且关于初始新建网页时,由于是初学者,所以还是纯手写代码~ 1 <html> 2 <head> 3 <title>超链接</title> 4 <meta http-equiv = "content-type" content = "text/html;charset = utf-8"> 5 <script type = "text/jav

HTML+CSS

HTML+CSS第一讲-HTML基本标签 1. HTML:超文本标记语言(Hyper Text Markup Language) 2. 第一个html程序 3. 网页开发的工具 a) notepad b) editplus c) webstorm(强烈推荐) d) HBuilder 4. 乱码造成的原因 5. 关于描述信息 6. 标签的分类 块级标签:独占一行 基本块级:h1-h6,p,hr 布局块级:ol. ul.dl dt dd . table.form.div(容器) 有序列表: <ol>

单页应用Scrat实践

单页应用Scrat实践 1.开始 随着前端工程化深入研究,前端工程师现在碉堡了,甚至搞了个自己的前端网站http://div.io/需要邀请码才能注册,不过里面的技术确实牛.距离顶级的前端架构,目前博主应该是far away,幸运的是现在有很多前端大神积极的分享自己的经验,比如百度这位https://github.com/fouber/blog/issues/4. 将iframe项目使用多页HTML与FIS重构以后,前端已经得到了极大的优化,然而多页HTML带来的状态丢失(登录信息,菜单信息),

Java之网络编程笔记

网络通讯要素: 1.IP地址 IP地址:用于标记一台计算机的身份证. IP地址由网络地址(确定网络)和主机地址(网络中的主机)组成. IP地址分为A类地址.B类地址.C类地址(常用).D类地址.E类地址. 子网掩码:为了区分网络地址和主机地址.  127.0.0.1(localhost)是本机地址. IPV4和IPV6:IPV4使用4个十进制数表示,即32位二进制. 测试网卡:ping 127.0.0.1 若出现问题,就说明网卡出问题     2.端口号    web服务器:80    mysq

用wget做站点镜像

用wget做站点镜像 2010-04-28 15:11:06 分类: LINUX # wget -r -p -np -k http://xxx.edu.cn -r 表示递归下载,会下载所有的链接,不过要注意的是,不要单独使用这个参数,因为如果你要下载的网站也有别的网站的链接,wget也会把别的网站的东西下载下来,所以要加上-np这个参数,表示不下载别的站点的链接. -np 表示不下载别的站点的链接. -k 表示将下载的网页里的链接修改为本地链接. -p 获得所有显示网页所需的元素,比如图片什么的

MVC之重定向

MVC的重定向主要通过RedirectResult和RedirectToRouteResult实现.很显然,这两个对象都是MVC返回对象ActionResult的两个继承,具体原理不赘述. 这两个方法的作用相同,第一个采用的是url的方式,第二个采用的是路由表的方式. RedirectResult构造方法中的第一个参数url传入要跳转的地址,可采用绝对地址跟相对地址,第二个参数描述是否是暂时重定向即(301重定向和302重定向).在返回该对象时会将重定向地址以及状态码(即301,302写入响应包

JSON和XML的关系

0.题外话 我相信任何一个和web打交道的程序员(尤其是前端工程师们),在初次与XML邂逅时,是完全不明白它是干嘛的.而又到了后来被安排与JSON相亲时,也是糊里糊涂的. 什么,不对么?好吧,至少,上文是我自己的亲身经历.在我实习时参与的第二个项目中,我被要求使用异步请求向服务器拿取一段JSON数据.通过浏览器的控制台,我查看服务器返回的结果,我还记得,那一刻我心中惊呼“what's that crap”. 而对于异步请求,那时候我只懂得单纯地使用jQuery库的$.ajax()方法,而到后来,

javaweb学习总结(二十八)——JSTL标签库之核心标签

一.JSTL标签库介绍 JSTL标签库的使用是为弥补html标签的不足,规范自定义标签的使用而诞生的.使用JSLT标签的目的就是不希望在jsp页面中出现java逻辑代码 二.JSTL标签库的分类 核心标签(用得最多) 国际化标签(I18N格式化标签) 数据库标签(SQL标签,很少使用) XML标签(几乎不用) JSTL函数(EL函数) 三.核心标签库使用说明 JSTL的核心标签库标签共13个,使用这些标签能够完成JSP页面的基本功能,减少编码工作. 从功能上可以分为4类:表达式控制标签.流程控制

JSTL标准标签库详解

JSTL标签库的使用是为类弥补html表的不足,规范自定义标签的使用而诞生的.在告别modle1模式开发应用程序后,人们开始注重软件的分层设计,不希望在jsp页面中出现java逻辑代码,同时也由于自定义标签的开发难度较大和不利于技术标准化产生了自定义标签库.JSTL标签库可分为5类: q        核心标签库 q        I18N格式化标签库 q        SQL标签库 q        XML标签库 q        函数标签库 本章将对这些内容一一讲述. 9.1 核心标签库 J