`
清泉风影
  • 浏览: 107964 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

相对路径、绝对路径问题

阅读更多

昨天写了一个读取配置文件信息的程序如下:

java 代码
  1. public class Config {   
  2.     private static Properties prop = new Properties();   
  3.     static {   
  4.         try {   
  5.             //prop.load(Config.class.getResourceAsStream("../../config/config.properties"));   
  6.             prop.load(Config.class.getResourceAsStream("../aa/config.properties"));   
  7.         } catch (IOException e) {   
  8.             System.out.println("文件不存在!");   
  9.             e.printStackTrace();   
  10.         }   
  11.     }      
  12.     public static String CONNECTION_TYPE = prop.getProperty("conn_type");   
  13.     public static String CONNECTION_URL = prop.getProperty("conn_url");   
  14.     public static String CONNECTION_USER = prop.getProperty("conn_user");   
  15.     public static String CONNECTION_PWD = prop.getProperty("conn_pwd");   
  16.     public static String CONNECTION_DRIVER = prop.getProperty("conn_driver");   
  17.     public static String DB_CFG_URL = prop.getProperty("DB_CFG_URL");   
  18.     public static String DB_CFG_USER = prop.getProperty("DB_CFG_USER");   
  19.     public static String DB_CFG_PASSWORD = prop.getProperty("DB_CFG_PASSWORD");   
  20. }  

 

html 代码
  1. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>  
  2. <!---->>  
  3. <%@ page import="com.*" %>  
  4. <html>  
  5.   <head>  
  6.     <title>首页title>  
  7.   head>  
  8.   <body>  
  9.     URL名:<%=Config.DB_CFG_URL%><br>  
  10.     用户名:<%=Config.DB_CFG_USER%><br>  
  11.     密码:<%=Config.DB_CFG_PASSWORD%>  
  12.   body>  
  13. </html>  

配置文件的路径如下:1、WEB-INF----->config------->config.properties

                                         2、WEB-INF------>classes----->aa----->config.properties

上面的程序可以读到WEB-INF------>classes----->aa----->config.properties,但读不到WEB-INF----->config------->config.properties

另外一种实现方式:

java 代码
  1. package com;   
  2. import java.io.*;   
  3. import java.util.Properties;   
  4.   
  5. public class FileConfig   
  6. {   
  7.     public Properties getFileProp()   
  8.     {   
  9.         Properties prop = new Properties();   
  10.         try {   
  11.             //File fClass = new File("applications/dbtest/WEB-INF/config/config.properties"); 
  12. File fClass = new File("webapps/dbtest/WEB-INF/config/config.properties");      
  13.             FileInputStream fis = new FileInputStream(fClass);   
  14.             prop.load(fis);   
  15.         } catch (IOException e) {   
  16.             System.out.println("文件不存在!");   
  17.             e.printStackTrace();   
  18.         }   
  19.         if(prop != null)   
  20.             return prop;   
  21.         else    
  22.             return null;   
  23.     }   
  24. }   

 

html代码
  1. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>  
  2. <%@ page import="com.FileConfig" %>  
  3. <!---->>  
  4. <html>  
  5.   <head>  
  6.     <title>首页title>  
  7.   head>  
  8.   <body>  
  9.   <%   
  10.     FileConfig fc = new FileConfig();   
  11.     Properties prop = fc.getFileProp();   
  12.    %>  
  13.   body>  
  14.   <%=prop.getProperty("DB_CFG_PASSWORD")%>  
  15.   <%=prop.getProperty("DB_CFG_USER")%>  
  16.   <%=prop.getProperty("DB_CFG_URL")%>     
  17. </html>  

 第二种方法解决了不能读取classes上次目录下文件内容的问题。它认的是容器的根目录如:tomcat就是webapps是第一级录,而在weblogic下则是applications。

如果您刚刚开始接触网页设计,是不是经常发生这样的问题呢?做好的网页在自己机器上可以正常浏览,而把页面传到服务器上就总是出现看不到图片,css样式表失效等错误。这种情况下多半是由于你使用了错误的路径,在应该使用相对路径的地方使用了绝对路径,导致浏览器无法在指定的位置打开指定的文件。

  下面我们就来谈一下最让初学者头疼的相对路径与绝对路径的区别问题。

  什么是绝对路径:

  大家都知道,在我们平时使用计算机时要找到需要的文件就必须知道文件的位置,而表示文件的位置的方式就是路径,例如只要看到这个路径:c:/website/img/photo.jpg我们就知道photo.jpg文件是在c盘的website目录下的img子目录中。类似于这样完整的描述文件位置的路径就是绝对路径。我们不需要知道其他任何信息就可以根据绝对路径判断出文件的位置。而在网站中类似以http://www.pckings.net/img/photo.jpg来确定文件位置的方式也是绝对路径。

  另外,在网站的应用中,通常我们使用"/"来表示根目录,/img/photo.jpg就表示photo.jpg文件在这个网站的根目录上的img目录里。但是这样使用对于初学者来说是具有风险性的,因为要知道这里所指的根目录并不是你的网站的根目录,而是你的网站所在的服务器的根目录,因此当网站的根目录与服务器根目录不同时,就会发生错误。
  什么是相对路径:

  让我们先来分析一下为什么会发生图片不能正常显示的情况。举一个例子,现在有一个页面index.htm,在这个页面中联接有一张图片photo.jpg。他们的绝对路径如下:
  c:/website/index.htm
  c:/website/img/photo.jpg

  如果你使用绝对路径c:/website/img/photo.jpg,那么在自己的计算机上将一切正常,因为确实可以在指定的位置即c:/website/img/photo.jpg上找到photo.jpg文件,但是当你将页面上传到网站的时候就很可能会出错了,因为你的网站可能在服务器的c盘,可能在d盘,也可能在aa目录下,更可能在bb目录下,总之没有理由会有c:/website/img/photo.jpg这样一个路径。那么,在index.htm文件中要使用什么样的路径来定位photo.jpg文件呢?对,应该是用相对路径,所谓相对路径,顾名思义就是自己相对与目标位置。在上例中index.htm中联接的photo.jpg可以使用img/photo.jpg来定位文件,那么不论将这些文件放到哪里,只要他们的相对关系没有变,就不会出错。

  另外我们使用“../”来表示上一级目录,“../../”表示上上级的目录,以此类推。(学习过dos的朋友可能更容易理解)

  再看几个例子,注意所有例子中都是index.htm文件中联接有一张图片photo.jpg。

  例:
  c:/website/web/index.htm
  c:/website/img/photo.jpg
  在此例中index.htm中联接的photo.jpg应该怎样表示呢?
  错误写法:img/photo.jpg
  这种写法是不正确的,在此例中,对于index.htm文件来说img/photo.jpg所代表的绝对路径是:c:/website/web/img/photo.jpg,显然不符合要求。
  正确写法:使用../img/photo.jpg的相对路径来定位文件


  例:
  c:/website/web/xz/index.htm
  c:/website/img/images/photo.jpg
  在此例中index.htm中联接的photo.jpg应该怎样表示呢?
  错误写法:../img/images/photo.jpg
  这种写法是不正确的,在此例中对于index.htm文件来说../img/images/photo.jpg所代表的绝对路径是:c:/website/web/img/images/photo.jpg。
  正确写法:可以使用../../img/images/photo.jpg的相对路径来定位文件


  例:
  c:/website/web/xz/index.htm
  c:/website/web/img/photo.jpg
  在此例中index.htm中联接的photo.jpg应该怎样表示呢?
  错误写法:../../img/photo.jpg
  这种写法是不正确的,在此例中对于index.htm文件来说../../img/photo.jpg所代表的绝对路径是:c:/website/img/photo.jpg。
  正确写法:可以使用../img/photo.jpg的相对路径来定位文件


  总结:通过以上的例子可以发现,在把绝对路径转化为相对路径的时候,两个文件绝对路径中相同的部分都可以忽略,不做考虑。只要考虑他们不同之处就可以了。

  如何修改样式表的路径:

  使用文本编辑器打开htm文件,查看源代码,在源代码的开头部分<head>......</head>标记中间找到<link rel="stylesheet" href="test.css" type="text/css">。“Href=”后面的内容就是css的路径,我们可以根据以上的知识进行相对路径的转换。 _fcksavedurl="”后面的内容就是css的路径,我们可以根据以上的知识进行相对路径的转换。"

  例:
  c:/website/web/xz/index.htm
  c:/website/css/test.css
  在此例中index.htm中联接test.css文件,可以使用../../css/test.css的相对路径来定位文件,完整的代码标记是:<link rel="stylesheet" href="../../css/test.css " type="text/css">
  错误写法举例:../../../css/test.css
  这种写法是不正确的,在此例中对于index.htm文件来说../../../css/test.css所代表的绝对路径是:c:/css/test.css

  最后,为了避免在制作网页时出现路径错误,我们可以使用dreamweaver的站点管理功能来管理站点。只要使用菜单命令site-new site新建站点并定义站点目录之后,它将自动的把绝对路径转化为相对路径,并且当你在站点中移动文件的时候,与这些文件关联的连接路径都会自动更改,实在是非常的方便。

 

 

分享到:
评论

相关推荐

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

    以下是对Java Web中相对路径与绝对路径问题的深入总结: ### 一、路径概念与标准 #### 1. URL与URI URL(Uniform Resource Locator)统一资源定位符,是一种用于标识网络上资源位置的标准格式,如`...

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

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

    Java相对路径绝对路径总结

    ### Java相对路径与绝对路径详解 #### 一、基本概念理解 **绝对路径**:绝对路径是指文件或目录在硬盘上的真实路径,包括URL和物理路径。例如,“C:\xyz\test.txt”代表了test.txt文件的真实物理路径;而...

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

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

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

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

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

    "Java 中相对路径与绝对路径的问题" Java 中的路径问题一直是困扰许多编程人员的问题之一。在 Java 中,我们需要了解相对路径和绝对路径的概念,以及如何获取它们。下面我们将详细地讨论 Java 中的相对路径和绝对...

    绝对路径和相对路径

    ### 绝对路径和相对路径详解 #### 一、基本概念理解 在计算机科学领域,路径是用来标识文件或目录在文件系统中的位置的一种方法。路径可以分为两种类型:绝对路径和相对路径。 - **绝对路径**:指的是从根目录...

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

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

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

    在Asp.net开发环境中,理解和运用相对路径与绝对路径对于构建高效、可维护的网站或应用程序至关重要。本文将深入解析Asp.net中的相对路径与绝对路径的概念,以及它们在实际项目中的具体应用。 ### 一、相对路径与...

    相对路径和绝对路径

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

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

    在探讨相对路径与绝对路径的优缺点之前,我们先来明确两者的定义。绝对路径指的是从根目录开始,完整地指定文件或目录所在位置的一种路径表示方法,它以根目录作为起点,无论当前工作目录为何处,都能准确无误地定位...

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

    - **使用绝对路径时**,虽然可以更精确地定位文件,但同时也需要注意跨平台兼容性的问题,如Windows和Linux下的路径分隔符不同。 - **在使用`getResource()`方法时**,如果路径不以`/`开头,则默认是从调用该方法的...

    连接ACCESS绝对路径相对路径.txt

    根据提供的文件信息,本文将详细解释如何在C#中连接Access数据库,并且会重点讨论绝对路径与相对路径的使用方式。 ### 连接ACCESS绝对路径与相对路径 #### 使用C#连接Access数据库 在C#中连接Access数据库,通常...

    JSP中绝对路径与相对路径

    ### JSP中绝对路径与相对路径的理解与应用 #### 一、引言 在Web开发中,路径的选择对于页面间的跳转以及资源的加载至关重要。本文将深入探讨JSP(JavaServer Pages)环境中绝对路径与相对路径的区别及其应用场景,...

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

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

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

    - 在需要跨平台兼容性时,使用绝对路径可能会带来问题,因为不同操作系统中的路径表示方式不同。 - 如果应用程序或脚本必须始终访问固定位置的文件,则应使用绝对路径。 - 当文件结构复杂且不易改变时,绝对路径...

    绝对路径与相对路径祥解

    在编程和系统管理中,了解和正确使用绝对路径与相对路径是至关重要的。尤其是在Perl这样的脚本语言中,路径的处理对于程序的正确执行起到关键作用。本文将深入解析这两个概念,帮助新手清晰理解它们的区别和用法。 ...

    相对路径和img标签demo

    - `src`属性:这是必需的,用于指定图像文件的路径,可以是绝对路径或相对路径。 - `alt`属性:提供图像的替代文本,当图像无法显示(如网络问题或用户禁用了图像)时,这个文本会显示出来,同时对搜索引擎优化(SEO...

    java绝对路径和相对路径

    ### Java中的绝对路径与相对路径 在Java编程中,路径管理是进行文件操作的重要组成部分,尤其是在Web应用开发中。本文将详细介绍如何在Java中获取不同类型的路径,包括Web服务器下的文件路径、本地路径以及相对路径...

Global site tag (gtag.js) - Google Analytics