转自:http://blog.csdn.net/randomnet/article/details/8630754
 
在谈basePath之前,先来讨论一下相对路径与绝对路径的区别。 
 
相对路径-以引用文件之网页所在位置为参考基础,而建立出的目录路径。 
绝对路径-以Web站点根目录为参考基础的目录路径。 
 
在web应用程序中绝对路径不是指的磁盘文件中盘符目录路径。如:C:\Windows\System32
 
其实绝对路径与相对路径的不同处,只在于描述目录路径时,所采用的参考点不同。由于对网站上所有文件而言,根目录这个参考点对所有文件都是一样的,因此,运用以根目录为参考点的路径描述方式才会被称之为绝对路径。
 
在这里需要讲几个特殊符号: 
"/"代表根目录,".."代表上一层目录,而"../../"所代表的是上一层目录的上一层目录。假设你注册了域名www.arm4u.com,并申请了虚拟主机,你的虚拟主机提供商会给你一个目录,比如www,这个www就是你网站的根目录。 
 
假设你在www根目录下放了一个文件index.html,这个文件的绝对路径就是: http://www.arm4u.com/index.html。 
 
假设你在www根目录下建了一个目录叫html_tutorials,然后在该目录下放了一个文件index.html,这个文件的绝对路径就是http://www.arm4u.com/html_tutorials/index.html 
 
了解了相对路径与绝对路劲的概念后,我们来看看所谓的basePath是怎么写的: 
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
 
看看上面的代码,我们来了解一下它具体的意思, 
request.getContextPath()是在开发Web项目时,经常用到的方法,其作用是获取当前的系统路径。request.getContextPath()得到项目名,如果项目为根目录,则得到一个"",即空的字条串, 如果项目为Test, <%=request.getContextPath()% >/ 将得到Test/,服务器端的路径则会自动加上. 
 
request.getScheme()返回的协议名称,默认是http。 
request.getServerName()返回的是你浏览器中显示的主机名(例127.0.0.1). 
getServerPort()获取服务器端口号(例:8080)。 
我们不妨把basePath打印出来看看是什么,http://127.0.0.1:8080/test。 
 
值得注意的是:request.getServerName()始终获取的是浏览器中显示的主机名,比如可以举个例子,我们在浏览其中输入的主机名是本地主机名192.168.10.23,那么我们在内网中可以通过http://192.168.10.23:8080/test这个路径来访问项目,如果是外网需要访问则需要提供域名http://www.arm4u.com/Test来访问,当然内网也可以通过这个路径来访问,此时打印出来的basePath是这个路径http://www.arm4u.com:8080/Test了,而不是http://192.168.10.23:8080/test
 
<base href="<%=basePath%>">必须放在<head></head>中。
 
在开发中试用basePath能够很好的避免出现路径的问题。basepath可称作web全路径。 页面中加了basepath,无论当前页面处于什么目录路径下,如manage/index.jsp,指的是web根目录下的manage文件夹下index.jsp。图片、链接引用的路径都是从当前应用程序的根路径开始的!如果没有basepath,写的路径是表示从相对于当前页面的路径,manage/index.jsp指的是当前目录下manage文件夹下的index.jsp

basepath的作用 (转)的更多相关文章

  1. JSP中<base href="<%=basePath%>">的作用

    来源于:http://fanshuyao.iteye.com/blog/2097229 首先了解是什么是<base href=""> <base href=&qu ...

  2. java web页面 base

    <base href="<%=basePath%>"> <base src="<%=basePath%>"> 主 ...

  3. jsp简单学习总结

    以下均为jsp页面 1:<jsp:include page="index.jsp"/>相当于嵌入一个页面.还有一种是<frame src="main_l ...

  4. jsp细节------<base>

    1:jsp一般都有这个<base href="<%=basePath%>">,它的作用一般用不到,但在使用java框架用注解时会用. 如下代码(xxx.js ...

  5. if ( ! defined('BASEPATH')) exit('No direct script access allowed')的作用

    在看源代码时,发现codeigniter框架的控制器中,总是加上这样一段话: if(!defined('BASEPATH'))exit('No direct script access allowed ...

  6. String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";作用!!!!!

    <%String path = request.getContextPath();String basePath = request.getScheme()+"://"+re ...

  7. JSP中<base href="<%=basePath%>">作用

    通常在JSP页面开通有如下代码: <% String path = request.getContextPath(); String basePath = request.getScheme() ...

  8. 解决JSP路径问题的方法(jsp文件开头path, basePath作用)

    原文:http://blog.csdn.net/mingxunzh/article/details/4627185 在JSP中的如果使用 "相对路径"  则有可能会出现问题. 因为 ...

  9. (转)解决JSP路径问题的方法(jsp文件开头path, basePath作用)

    在JSP中的如果使用 "相对路径"  则有可能会出现问题. 因为 网页中的 "相对路径" , 他是相对于 "URL请求的地址" 去寻找资源. ...

随机推荐

  1. 用css3的cursor:zoom-in/zoom-out实现微博看图片放大镜效果

    1.前言 CSS3的出现解决了很多让人头疼的问题,至少我想很多童鞋都这样认为.css3的cursor属性大家用的应该是非常的多的,我想用的比较多的像cursor:pointer;cursor:help ...

  2. RabbitMQ入门-高效的Work模式

    扛不住的Hello World模式 上篇<RabbitMQ入门-从HelloWorld开始>介绍了RabbitMQ中最基本的Hello World模型.正如其名,Hello World模型 ...

  3. 简单工厂设计模式--Java设计模式(一)

    一 概念: 简单工厂模式就是通过一个工厂类根据参数动态创建对应的类. 二 案例 我们以汽车作为例子,在现实生活中汽车只是一个抽象的产品,其中有很多类型的汽车才是具体产品,如奔驰.宝马.保时捷等等(当然 ...

  4. JavaScript基本数据类型

    JavaScript基本数据类型 在JavaScript种一共有6种数据类型:Null.Undefined.Boolean.String.Number.Object.其中Object是一种复杂数据类型 ...

  5. 解决oracle数据库删除sql语句出现^H字样

    1:安装readline包 yum install readline* 2:安装源码包: rlwrap-0.30.tar.gz    ./configure && make & ...

  6. 从equals和==的区别开始

    今天我要谈的,不是具体的一个小程序的设计,也不是什么高大上的遗传算法群体智能什么什么的理念.今天我想就非常简单的一个问题,深入地解释一些东西,把自己的一些看法传达给大家.我相信,认真看下去,大家会有所 ...

  7. 办公楼[POI2007]

    题目描述 FGD开办了一家电话公司.他雇用了N个职员,给了每个职员一部手机.每个职员的手机里都存储有一些同事的电话号码.由于FGD的公司规模不断扩大,旧的办公楼已经显得十分狭窄,FGD决定将公司迁至一 ...

  8. Unity 发布的 WebGL 使用SendMessage传递多个参数

    如果要实现Unity与浏览器的数据交互一般都会采用两种方式 方法一: Application.ExternalCall("SayHello","helloworld&qu ...

  9. mysql 报错 session halted的解决办法,实际工作中的结论。

    写后台程序,发现执行到sql语句时就报错session halted,如下图: 也上网搜过蛮多方法,都不能解决我的问题.后来自己发现了症结所在,其实很简单:执行insert的语句没有包含not nul ...

  10. python时间序列分析

              题记:毕业一年多天天coding,好久没写paper了.在这动荡的日子里,也希望写点东西让自己静一静.恰好前段时间用python做了一点时间序列方面的东西,有一丁点心得体会想和大家 ...