jsp、css中引入外部资源相对路径问题分析

  在jsp页面中添加base,可用相对路径:

  

复制代码 代码如下:

  <%

  String path = request.getContextPath();

  String basePath = request.getScheme() + "://"

  + request.getServerName() + ":" + request.getServerPort()

  + path + "/";

  %>

  然后在<head>标签内添加base

  <base href="<%=basePath%>"></base>

   在本页面中“直接”引入外部文件时,可直接

  

复制代码 代码如下:

  <script src="js/common/jquery-1.11.1.min.js" language="javascript"

  type="text/javascript"></script>

  <script src="js/common/frame.js" language="javascript"

  type="text/javascript"></script>

  <link href="css/common/frame.css"

  rel="stylesheet" type="text/css" />

  <link rel="shortcut icon" href="images/favicon.ico" type="image/x-icon" />

  同理,本页面中的css类

  

复制代码 代码如下:

  .top {

  position: absolute;

  left: 0;

  top: 95px;

  right: 0;

  height: 120px;

  background: url(images/common/title.jpg) repeat-x

  }

  ====================例外情况:引入的外部css、js文件又引入image等时=================================

  这时候如果也用相对路径的话,因为已经不在了jsp页面中,此时相对路径是相对于本css文件所在的目录:

  如:棠棣新系统,index.jsp页面中引入的css文件

  <link href="css/common/frame.css" rel="stylesheet" type="text/css" />这时在jsp页面中,引入的js/common/frame.js是从网站跟目录开始寻找,没问题。

  但在frame.js中有如下css

  

复制代码 代码如下:

  .show_menu{

  background-image: url(images/left_bg.gif);

  background-repeat: repeat-y;

  background-position:285px 51px;

  }

  这种情况下直接url(images/left_bg.gif);是默认从本css文件所在目录(/css/common/frame.css)+url(images/left_bg.gif),所以此处需要的image需要单独配置,

  改成

  

复制代码 代码如下:

  .show_menu{

  background-image: url(../../images/left_bg.gif);

  background-repeat: repeat-y;

  background-position:285px 51px;

  }