小程序員之歌
                  java先(我應該為它寫點什么了?。?/div>

                  <轉>絕對路徑相對路徑

                  1.基本概念的理解

                    絕對路徑:絕對路徑就是你的主頁上的文件或目錄在硬盤上真正的路徑,(URL和物理路徑)例如:
                  C:\xyz\test.txt 代表了test.txt文件的絕對路徑。http://www.sun.com/index.htm也代表了一個
                  URL絕對路徑。

                    相對路徑:相對與某個基準目錄的路徑。包含Web的相對路徑(HTML中的相對目錄),例如:在
                  Servlet中,"/"代表Web應用的跟目錄。和物理路徑的相對表示。例如:"./" 代表當前目錄,
                  "../"代表上級目錄。這種類似的表示,也是屬于相對路徑。

                  另外關于URI,URL,URN等內容,請參考RFC相關文檔標準。

                  RFC 2396: Uniform Resource Identifiers (URI): Generic Syntax,
                  (http://www.ietf.org/rfc/rfc2396.txt)


                  2.關于JSP/Servlet中的相對路徑和絕對路徑。

                  2.1服務器端的地址

                     服務器端的相對地址指的是相對于你的web應用的地址,這個地址是在服務器端解析的
                  (不同于html和javascript中的相對地址,他們是由客戶端瀏覽器解析的)也就是說這時候
                  在jsp和servlet中的相對地址應該是相對于你的web應用,即相對于http://192.168.0.1/webapp/的。

                    其用到的地方有:
                  forward:servlet中的request.getRequestDispatcher(address);這個address是
                  在服務器端解析的,所以,你要forward到a.jsp應該這么寫:
                  request.getRequestDispatcher(“/user/a.jsp”)這個/相對于當前的web應用webapp,
                  其絕對地址就是:http://192.168.0.1/webapp/user/a.jsp。
                  sendRedirect:在jsp中<%response.sendRedirect("/rtccp/user/a.jsp");%>

                  2.22、客戶端的地址

                         所有的html頁面中的相對地址都是相對于服務器根目錄(http://192.168.0.1/)的,
                  而不是(跟目錄下的該Web應用的目錄)http://192.168.0.1/webapp/的。
                  Html中的form表單的action屬性的地址應該是相對于服務器根目錄(http://192.168.0.1/)的,
                  所以,如果提交到a.jsp為:action="/webapp/user/a.jsp"或action="<%=request.getContextPath()%>"/user/a.jsp;
                    提交到servlet為actiom="/webapp/handleservlet" 
                    Javascript也是在客戶端解析的,所以其相對路徑和form表單一樣。


                    因此,一般情況下,在JSP/HTML頁面等引用的CSS,Javascript.Action等屬性前面最好都加上
                  <%=request.getContextPath()%>,以確保所引用的文件都屬于Web應用中的目錄。
                  另外,應該盡量避免使用類似".","./","../../"等類似的相對該文件位置的相對路徑,這樣
                  當文件移動時,很容易出問題。


                  3. JSP/Servlet中獲得當前應用的相對路徑和絕對路徑
                  3.1 JSP中獲得當前應用的相對路徑和絕對路徑
                  根目錄所對應的絕對路徑:request.getRequestURI()
                  文件的絕對路徑     :application.getRealPath(request.getRequestURI());
                  當前web應用的絕對路徑 :application.getRealPath("/");
                  取得請求文件的上層目錄:new File(application.getRealPath(request.getRequestURI())).getParent()

                  3.2 Servlet中獲得當前應用的相對路徑和絕對路徑
                  根目錄所對應的絕對路徑:request.getServletPath();
                  文件的絕對路徑    :request.getSession().getServletContext().getRealPath
                  (request.getRequestURI())  
                  當前web應用的絕對路徑 :servletConfig.getServletContext().getRealPath("/");
                       (ServletContext對象獲得幾種方式:
                         javax.servlet.http.HttpSession.getServletContext()
                         javax.servlet.jsp.PageContext.getServletContext()
                         javax.servlet.ServletConfig.getServletContext()
                       )

                  4.java 的Class中獲得相對路徑,絕對路徑的方法
                  4.1單獨的Java類中獲得絕對路徑
                    根據java.io.File的Doc文擋,可知:
                  默認情況下new File("/")代表的目錄為:System.getProperty("user.dir")。
                  一下程序獲得執行類的當前路徑
                  package org.cheng.file;
                  import java.io.File;

                  public class FileTest {
                      public static void main(String[] args) throws Exception {     

                    System.out.println(Thread.currentThread().getContextClassLoader().getResource(""));    

                    System.out.println(FileTest.class.getClassLoader().getResource(""));       

                    System.out.println(ClassLoader.getSystemResource(""));       
                    System.out.println(FileTest.class.getResource(""));       
                    System.out.println(FileTest.class.getResource("/")); //Class文件所在路徑 
                    System.out.println(new File("/").getAbsolutePath());       
                    System.out.println(System.getProperty("user.dir"));   
                  }
                  }

                  4.2服務器中的Java類獲得當前路徑(來自網絡)
                  (1).Weblogic

                  WebApplication的系統文件根目錄是你的weblogic安裝所在根目錄。
                  例如:如果你的weblogic安裝在c:\bea\weblogic700.....
                  那么,你的文件根路徑就是c:\.
                  所以,有兩種方式能夠讓你訪問你的服務器端的文件:
                  a.使用絕對路徑:
                  比如將你的參數文件放在c:\yourconfig\yourconf.properties,
                  直接使用 new FileInputStream("yourconfig/yourconf.properties");
                  b.使用相對路徑:
                  相對路徑的根目錄就是你的webapplication的根路徑,即WEB-INF的上一級目錄,將你的參數文件放

                  在yourwebapp\yourconfig\yourconf.properties,
                  這樣使用:
                  new FileInputStream("./yourconfig/yourconf.properties");
                  這兩種方式均可,自己選擇。

                  (2).Tomcat

                  在類中輸出System.getProperty("user.dir");顯示的是%Tomcat_Home%/bin

                  (3).Resin

                  不是你的JSP放的相對路徑,是JSP引擎執行這個JSP編譯成SERVLET
                  的路徑為根.比如用新建文件法測試File f = new File("a.htm");
                  這個a.htm在resin的安裝目錄下

                  (4).如何讀相對路徑哪?

                  在Java文件中getResource或getResourceAsStream均可

                  例:getClass().getResourceAsStream(filePath);//filePath可以是"/filename",這里的/代表web

                  發布根路徑下WEB-INF/classes

                  默認使用該方法的路徑是:WEB-INF/classes。已經在Tomcat中測試。

                  5.讀取文件時的相對路徑,避免硬編碼和絕對路徑的使用。(來自網絡)
                  5.1 采用Spring的DI機制獲得文件,避免硬編碼。
                     參考下面的連接內容:
                     http://www.javajia.net/viewtopic.php?p=90213&
                  5.2 配置文件的讀取
                  參考下面的連接內容:
                  http://dev.csdn.net/develop/article/39/39681.shtm
                  5.3 通過虛擬路徑或相對路徑讀取一個xml文件,避免硬編碼
                  參考下面的連接內容:
                  http://club.gamvan.com/club/clubPage.jsp?iPage=1&tID=10708&ccID=8

                  6.Java中文件的常用操作(復制,移動,刪除,創建等)(來自網絡)
                  常用 java File 操作類
                  http://www.easydone.cn/014/200604022353065155.htm

                  Java文件操作大全(JSP中)
                  http://www.pconline.com.cn/pcedu/empolder/gj/java/0502/559401.html

                  java文件操作詳解(Java中文網)
                  http://www.51cto.com/html/2005/1108/10947.htm

                  JAVA 如何創建\刪除\修改\復制目錄及文件
                  http://www.gamvan.com/developer/java/2005/2/264.html

                  總結:
                  通過上面內容的使用,可以解決在Web應用服務器端,移動文件,查找文件,復制
                  刪除文件等操作,同時對服務器的相對地址,絕對地址概念更加清晰。
                  建議參考URI,的RFC標準文擋。同時對Java.io.File. Java.net.URI.等內容了解透徹
                  對其他方面的理解可以更加深入和透徹。
                  ==================================================================================

                  參考資料:
                  java/docs/

                  java.io.File
                  java.io.InputStream
                  java.io.OutputStream
                  java.io.FileInputStream
                  java.io.FileReader;
                  java.io.FileOutputStream
                  java.io.FileWriter;
                  java.net.URI
                  java.net.URL


                  絕對路徑與相對路徑祥解
                  http://www.webjx.com/htmldata/2005-02-26/1109430310.html

                  [『J道習練』]JSP和Servlet中的絕對路徑和相對路徑
                  http://w3china.org/blog/more.asp?name=pcthomas&id=9122&commentid=12376

                  JSP,Servlet,Class獲得當前應用的相對路徑和絕對路徑
                  http://cy.lzu.edu.cn/cy/club/clubPage.jsp?ccStyle=0&tID=886&ccID=77

                  如何獲得當前文件路徑
                  http://www.matrix.org.cn/resource/article/44/44113_java.html

                  通過Spring注入機制,取得文件
                  http://www.javajia.net/viewtopic.php?p=90213&

                  配置文件的讀取
                  http://dev.csdn.net/develop/article/39/39681.shtm

                  讀取配置文件,通過虛擬路徑或相對路徑讀取一個xml文件,避免硬編碼!
                  http://club.gamvan.com/club/clubPage.jsp?iPage=1&tID=10708&ccID=8

                  常用 java File 操作類
                  http://www.easydone.cn/014/200604022353065155.htm

                  Java文件操作大全
                  http://www.pconline.com.cn/pcedu/empolder/gj/java/0502/559401.html

                  Java文件操作詳解
                  http://www.51cto.com/html/2005/1108/10947.htm
                  原文地址:http://www.aygfsteel.com/meil/archive/2006/10/10/73908.html

                  posted on 2010-04-10 00:04 liujg 閱讀(422) 評論(0)  編輯  收藏 所屬分類: Java基礎

                  新用戶注冊  刷新評論列表  

                  只有注冊用戶登錄后才能發表評論。


                  網站導航:
                  博客園   IT新聞   Chat2DB   C++博客   博問   管理
                  相關文章:
                  • (轉)reflect
                  • 面試基礎題目
                  • (轉)讀HTTP協議(RFC-2616)總結
                  • (轉) 用JAVA 實現“生產者-消費者”問題
                  • <轉>絕對路徑相對路徑
                  • JVM內存模型(轉)
                  • 轉:用Java Socket開發小型服務器,支持上千個并發(上)
                  • snmp4j
                  • Serializable 相關(http://www.lupaworld.com/25070/viewspace_16379.html)
                  • 關于forward和redirect的區別(轉載)
                   

                  Powered by:
                  BlogJava
                  Copyright © liujg

                  <2025年7月>
                  日一二三四五六
                  293012345
                  6789101112
                  13141516171819
                  20212223242526
                  272829303112
                  3456789

                  導航

                  • BlogJava
                  • 首頁
                  • 新隨筆
                  • 聯系
                  • 聚合
                  • 管理

                  統計

                  • 隨筆 - 10
                  • 文章 - 40
                  • 評論 - 6
                  • 引用 - 0

                  常用鏈接

                  • 我的隨筆
                  • 我的評論
                  • 我的參與
                  • 最新評論

                  留言簿(1)

                  • 給我留言
                  • 查看公開留言
                  • 查看私人留言

                  隨筆分類

                  • js (rss)
                  • linux(1) (rss)
                  • strus2 (rss)
                  • Struts2 Tag語法(轉) (rss)

                  隨筆檔案

                  • 2014年12月 (1)
                  • 2011年9月 (1)
                  • 2011年5月 (2)
                  • 2011年1月 (1)
                  • 2007年11月 (1)
                  • 2007年10月 (1)
                  • 2007年5月 (1)
                  • 2006年12月 (1)

                  文章分類

                  • Java基礎(10) (rss)
                  • JDBC(1) (rss)
                  • js(1) (rss)
                  • portlet(1) (rss)
                  • Tapestry(1) (rss)
                  • 數據庫(9) (rss)
                  • 算法(1) (rss)

                  文章檔案

                  • 2011年10月 (1)
                  • 2011年5月 (2)
                  • 2011年1月 (1)
                  • 2010年12月 (1)
                  • 2010年8月 (1)
                  • 2010年7月 (1)
                  • 2010年5月 (2)
                  • 2010年4月 (1)
                  • 2009年7月 (1)
                  • 2009年4月 (1)
                  • 2009年3月 (2)
                  • 2009年1月 (2)
                  • 2008年12月 (1)
                  • 2008年11月 (1)
                  • 2008年7月 (3)
                  • 2008年4月 (2)
                  • 2008年3月 (2)
                  • 2008年1月 (2)
                  • 2007年11月 (3)
                  • 2007年7月 (1)
                  • 2007年6月 (4)
                  • 2007年1月 (1)
                  • 2006年7月 (4)

                  相冊

                  • me

                  收藏夾

                  • rmi(5) (rss)

                  boddiy

                  • boddi's blog

                  搜索

                  •  

                  最新評論

                  • 1.?re: oracle 取子串(轉)
                  • @aaa
                    別處轉來的,具體的不懂。
                  • --liujg
                  • 2.?re: oracle 取子串(轉)[未登錄]
                  • 樓主,你說的substring是在oracle哪個版本的???能用嗎???
                    charindex又是哪里的函數,能用嗎????搞笑
                  • --aaa
                  • 3.?re: oracle 取子串(轉)[未登錄]
                  • kao
                  • --aaa
                  • 4.?re: prototype詳解(轉)
                  • 郁悶,.NET的!,JAVA里面有MemberwiseClone這個方法么。怎么用JAVA搞原型模式呢?
                  • --hehei
                  • 5.?re: 轉載一篇jms的文章
                  • Thanks for you kind to share the article~~
                  • --lingruoxu

                  閱讀排行榜

                  • 1.?java程序員的5個好習慣()(809)
                  • 2.?java 關閉IE(588)
                  • 3.?OERR: ORA-12519(567)
                  • 4.?doGet()和doPost()的區別(轉)(485)
                  • 5.?看了下java核心技術中的代理,還是很暈(400)

                  評論排行榜

                  • 1.?執行./startup.sh,或者./shutdown.sh的時候,爆出了Permission denied(0)
                  • 2.?submit()和onsubmit()的區別(轉)(0)
                  • 3.?doGet()和doPost()的區別(轉)(0)
                  • 4.?轉載 Vim 基本用法(0)
                  • 5.?OERR: ORA-12519(0)
                  狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频
                  主站蜘蛛池模板: 九龙县| 大埔县| 鹤庆县| 容城县| 景泰县| 武穴市| 怀化市| 秦安县| 施甸县| 合作市| 镇雄县| 蒙山县| 湘阴县| 建德市| 尚志市| 莒南县| 松江区| 垣曲县| 沾益县| 内黄县| 莆田市| 温泉县| 宝兴县| 溧阳市| 新巴尔虎左旗| 定边县| 池州市| 称多县| 肇源县| 耒阳市| 丰原市| 依兰县| 孝昌县| 延川县| 天祝| 阳城县| 巴彦淖尔市| 苍梧县| 广宁县| 昆明市| 贵州省|