`

项目中 关于相对路径和绝对路径的问题

 
阅读更多

 

 

一般情况下最好用绝对路径 <%=basePath%>/js/jquery.js
其中basePath是下面的值
<%
 String path = request.getContextPath();
 String basePath = request.getScheme() + "://"
  + request.getServerName() + ":" + request.getServerPort()
  + path + "/";
%>

为什么要这么做?因为从静态的jsp路径来看它和js的路径相对关系是../js/,但是往往很多时候我们不是直接访问jsp页面的,是通过其他的jsp页面或者servlet,或者struts的action通过forward的方式转发过来访问的,这时候请求的当前路径就不是该jsp的路径,而是转发过来之前那个jsp,servlet或action的路径,所以和js的相对路径关系就可能不再是../js/了,而在实际使用中,访问同一个jsp可能由很多不同的来源,那么它的相对路径关系可能随时都可能改变,这时候jsp页面里写死的相对路径就无法访问到对应的资源了。所以要使用绝对路径访问。

 

例如:
假如我们要访问这个页面,http://localhost:8080/web/jsp/abc.jsp
abc.jsp的相对路径是http://localhost:8080/web/jsp/,abc.jsp里引用了../js/jquery.js,这时候直接访问abc.jsp是没有问题的。
但如果由以下三个请求转发到abc.jsp来访问
1. http://localhost:8080/web/business/test/test.jsp  
相对路径是http://localhost:8080/web/business/test/,访问js需要使用../../js/jquery.js
2. http://localhost:8080/web/struts/action/test.action
相对路径是http://localhost:8080/web/struts/test/,(?)访问js需要使用../../js/jquery.js

相对路径是http://localhost:8080/web/struts/action/ 
3. http://localhost:8080/web/servlet
相对路径是http://localhost:8080/web/,访问js需要使用js/jquery.js

这时候abc.jsp里的../js/jquery.js的死路径就不能正确访问到js了。


===========================================

而真正的相对于web工程的绝对路径写法是:/ 代表url根路径,例如http://localhost:8080/web/js/jquery.js里的http://localhost:8080/,而./代表web工程根路径http://localhost:8080/web/
所以你还可以这么写:
1. /web/js/jquery.js
2. ./js/jquery.js

 

 

建立的目录:

     WebRoot

        1  business-test-test.jsp

        2  js-jquery-1.8.1.js

        3  jsp-abc.jsp

 

代码如下

 

abc.jsp

   <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

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

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
   
    
    <title>My JSP 'abc.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
    <script type="text/javascript" src="../js/jquery-1.8.1.js"></script>
  </head>
  
  <body>
         这是abc.jsp 页面 <br>
  </body>
</html>
 

test.jsp

 

 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<jsp:forward page="../../jsp/abc.jsp"/>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'test.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <body>
      这是test.jsp页面<br>
  </body>
</html>
 


结果:
    1 由abc.jsp 访问 jquery-1.8.1.js 是没有错的
        http://localhost/RootTest/js/jquery-1.8.1.js
    2 由test.jsp访问abc.jsp 访问 jquery-1.8.1js是有错的 
        访问路径是(http://localhost/RootTest/business/js/jquery-1.8.1.js) 
       正确路径是:http://localhost/business/js/jquery-1.8.1.js

 结论 :显而易见, 项目中用绝对路径好,这样易于管理,而且不会乱套,相对路径修改没及时配置后期很麻烦

http://www.blogjava.net/simie/archive/2007/07/29/133094.html
分享到:
评论

相关推荐

    WPF中Image控件Source属性的相对路径和绝对路径问题(经验总结)

    WPF 中 Image 控件 Source 属性的相对路径和绝对路径问题总结 在 WPF 中,Image 控件的 Source 属性可以指定为相对路径或绝对路径,但这两种路径有不同的使用场景和注意事项。本文将总结 WPF 中 Image 控件 Source ...

    相对路径和绝对路径的概念

    绝对路径的优点在于其明确性和不变性,即不论从哪个页面引用同一个文件,其路径都保持一致,这在大型项目中特别有用,能够避免因路径问题导致的链接错误。但同时,绝对路径的缺点也很明显,即在进行文件移动或站点...

    java中相对路径与绝对路径的问题

    下面我们将详细地讨论 Java 中的相对路径和绝对路径的问题。 1. 获取工程的绝对路径 在 Java 中,我们可以使用 `System.getProperty("user.dir")` 来获取工程的绝对路径,这是一个固定形式的方法,无需更改。 2. ...

    java项目相对路径与绝对路径问题分析

    路径分为绝对路径和相对路径两种类型,它们各有不同的用途和特点。 绝对路径是指从根目录开始的完整路径,它明确指定了文件或目录的确切位置。例如,`file:/D:/java/eclipse32/workspace/jbpmtest3/bin/aaa.b` 是一...

    Servlet中的相对路径和绝对路径归纳

    Servlet 中的相对路径和绝对路径归纳 在 Servlet 编程中,路径是非常重要的一个概念。路径可以分为相对路径和绝对路径两种,在不同的场景下,选择合适的路径类型非常重要。本文将对 Servlet 中的相对路径和绝对路径...

    获取项目的相对路径和绝对路径

    本文将围绕“获取项目的相对路径和绝对路径”这一主题进行深入探讨,帮助读者理解不同场景下如何正确地获取路径。 ### 一、引言 在Java Web应用中,路径主要分为两种:相对路径与绝对路径。相对路径是指相对于当前...

    如何将相对路径转化为绝对路径

    在C#编程中,将相对路径转化为绝对路径是一个常见的问题。这篇文章将介绍如何使用C#将相对路径转化为绝对路径。 什么是相对路径和绝对路径? 在计算机科学中,路径是指文件或目录在文件系统中的位置。路径可以分为...

    绝对路径和相对路径

    在JSP和Servlet中获取当前应用的相对路径和绝对路径非常重要,可以帮助开发者更好地处理文件和目录。 ##### 3.1 JSP中获得当前应用的相对路径和绝对路径 - **根目录所对应的绝对路径**:可以通过`request....

    java中File的相对路径与绝对路径总结

    ### Java中File的相对路径与绝对路径总结...无论是相对路径还是绝对路径,都需要结合具体的项目结构和文件存储位置进行合理的设置。此外,还需要注意不同方法对路径格式的要求,确保能够正确无误地访问所需的文件资源。

    相对路径和绝对路径的区别与使用

    ### 相对路径和绝对路径的区别与使用 在计算机科学领域,路径是文件系统中用于标识文件或目录位置的一种方式。路径可以分为两种主要类型:绝对路径和相对路径。了解这两种路径的区别及其适用场景对于软件开发、网页...

    相对路径和绝对路径的优缺点

    1. **不利于本地测试**:由于绝对路径通常包含了完整的域名或服务器路径,因此在本地环境中进行测试时可能会遇到问题,需要额外的配置才能模拟服务器环境。 2. **代码迁移困难**:如果网站需要迁移至不同的服务器或...

    JSP中绝对路径与相对路径

    在JSP开发中,合理选择绝对路径与相对路径对于提高页面间的跳转效率和资源加载成功率非常重要。理解它们的区别及应用场景有助于开发者更好地组织和管理Web应用的结构。同时,需要注意forward与资源加载之间的潜在...

    相对路径和绝对路径

    ### 相对路径和绝对路径详解 #### 一、引言 在Web开发中,文件间的链接至关重要。正确的路径设置可以确保用户能够顺利地访问到所需的资源,如图片、样式表或JavaScript文件等。本文将深入探讨相对路径与绝对路径的...

    在JAVA文件中获取该项目的相对路径.doc

    在讨论获取项目的相对路径之前,我们需要了解绝对路径和相对路径的概念。绝对路径是指文件或目录在硬盘上的真正路径,例如 C:\xyz\test.txt 代表了 test.txt 文件的绝对路径。相对路径是指相对于某个基准目录的路径...

    java Web 中相对路径绝对路径问题总结

    在Java Web开发中,理解和掌握相对路径与绝对路径的运用是至关重要的,因为这直接影响到资源定位、页面跳转以及文件读写等操作的正确性。以下是对Java Web中相对路径与绝对路径问题的深入总结: ### 一、路径概念与...

    Java相对路径绝对路径总结

    通过上述总结,我们可以了解到在Java Web开发中,正确理解和使用相对路径和绝对路径是非常重要的。它们在服务器端和客户端有不同的含义,并且在不同的应用场景下有着不同的使用方式。了解这些基础知识有助于我们编写...

    相对路径和img标签demo

    本压缩包“相对路径和img标签demo”显然旨在演示如何在HTML文档中使用相对路径来引用图像,以及img标签的基本用法。让我们深入探讨这两个主题。 首先,我们来看**相对路径**。在HTML中,路径用于指示文件或目录的...

    Asp.net相对路径与绝对路径

    本文将深入解析Asp.net中的相对路径与绝对路径的概念,以及它们在实际项目中的具体应用。 ### 一、相对路径与绝对路径概念 #### 1. 相对路径 相对路径是指相对于当前文档位置的路径。它不包含完整的文件系统路径,...

    Java开发绝对和相对路径问题

    Java 开发中,路径问题是非常重要的一方面,不同的路径表示方式会带来不同的结果,了解绝对路径和相对路径的概念和使用方法对Java 开发非常重要。本文总结了Java 开发中的路径问题,帮助开发朋友方便解决路径问题,...

Global site tag (gtag.js) - Google Analytics