小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

在JSP中處理虛擬路

 WindySky 2008-10-13
摘要 在為服務器端組件編程時,你很可能要從相對于web根的路徑來取得某個文件的真實路徑,但此文件實際上在站點的一個虛擬路徑上。 什么是虛擬路徑? 在一個web服務器上,虛擬路徑將物理上分離的各文件組合在一起,放在同一個站點路徑上,在應用服務器上,每個應用定位于其自己的虛擬路徑上,實際上相互之間有著完美地分離。 getRealPath()方法 JSP servlet API提供了getRealPath(path)方法,返回給定虛擬路徑的真實路徑,如果轉換錯誤,則返回null。 getRealPath語法定義:   public java.lang.String getRealPath(java.lang.String path)   返回一個字符串,包含一個給定虛擬路徑的真實路徑。例如,虛擬路徑 "/index.html" 不管在服務器文件系統(tǒng)上具有怎樣的真實路徑,使用"/index.html"總可以找到它。返回的真實路徑使用了相近于servlet容器(srvlet container)所在計算機或操作系統(tǒng)的格式,包含了適當?shù)穆窂椒指舴H绻鹲ervlet容器無法轉換則這個方法將返回null。   參數(shù):     path -一個描述了虛擬路徑的字符串   返回值:     描述真實路徑的字符串或者null 遺憾的是,getRealPath常常返回不同的東西,這取決于服務器或jsp文件調用此方法的路徑位置。 一個example站點 假設我們的站點組織如下: 根路徑包含了我們的站點的根: http://address/ a_virtual目錄包含了我們站點提供的虛擬路徑的文件,例如: http://addess/virtual_dir/ 我們查找file1.txt和file2.txt的真實路徑,它們一個在站點根路徑下,一個在虛擬路徑下。 getRealPath("/file1.txt") 應該返回“C:\site\site_root\file1.txt", getRealPath("/virtual_dir/file2.txt")應該返回"C:\site\a_virtual\file2.txt" getRealPath("/file3.txt")應該返回null,因為這個文件不存在。 但getRealPath()并不總是返回同樣的結果,這還取決與你使用的js引擎。 JSP引擎 Tomcat 3.1 Tomcat返回的結果具有應用的獨立性(application dependant): 它取決與調用getRealPath方法的那個jsp文件所在的位置。 實際上,當page1.jsp (位于站點根處)對file1.txt和file2.txt調用txtgetRealPath(), 它返回正確的結果。(這是在tomcat 3.1, 3.0版則對file2.txt返回錯誤的路徑) 但是當page2.jsp(位于另一個應用,在一個虛擬路徑中)調用getRealPath,它返回了錯誤的路徑:它連接了該jsp文件所在的路徑和請求的虛擬路徑。 例如,從page2.jsp中調用getRealPath(/file1.txt)將返回 C:\site\a_virtual\file1.txt。 這一行為其實是使不同的應用相互獨立的典型的處理方法。 JRun 2.3.3和INPRISE APPLICATION SERVER 4.0 (IAS) JRun和IAS對file1.txt和file2.txt都返回正確的結果。 然而所有這些引擎有一個共同的行為: 當getRealPath處理不存在的文件時,它們都不返回null! 解決之道 既然getRealPath總是返回一個路徑,我們怎么知道它是否正確呢?最簡單的方法是檢查這個返回的路徑是否存在。 這就是isVirtual方法要做的:在對一個給定的文件調用getRealPath以后,它使用了java.io來 存取這個文件,于是就可以知道它是否存在。 /** * isVirtual * * Check if the path name is a virtual or not. * * @param pathName The name of the path to check. */ private boolean isVirtual(String pathName) {   // Check if it is a virtual path   if (m_application.getRealPath(pathName)!=null) {     java.io.File virtualFile = new java.io.File(m_application.getRealPath(pathName));     if (virtualFile.exists()) {return true;}     else {return false;}   }   else {return false;} }

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多