婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 在JSP中處理虛擬路徑

在JSP中處理虛擬路徑

熱門標簽:商丘百應電話機器人有沒有效果 電話機器人的特色和創新 黃石智能營銷電銷機器人效果 怎樣把地圖標注出來 騰訊地圖標注商戶改名注冊入駐 開封便宜外呼系統報價 漯河辦理400電話 地圖標注人員兼職 淮南騰訊地圖標注

摘要
在為服務器端組件編程時,你很可能要從相對于web根的路徑來取得某個文件的真實路徑,但此文件實際上在站點的一個虛擬路徑上。
什么是虛擬路徑?
在一個web服務器上,虛擬路徑將物理上分離的各文件組合在一起,放在同一個站點路徑上,在應用服務器上,每個應用定位于其自己的虛擬路徑上,實際上相互之間有著完美地分離。
getRealPath()方法
JSP servlet API提供了getRealPath(path)方法,返回給定虛擬路徑的真實路徑,如果轉換錯誤,則返回null。
getRealPath語法定義:
public java.lang.String getRealPath(java.lang.String path)
返回一個字符串,包含一個給定虛擬路徑的真實路徑。例如,虛擬路徑 "/index.html"
不管在服務器文件系統上具有怎樣的真實路徑,使用"/index.html"總可以找到它。返回的真實路徑使用了相近于servlet容器(srvlet container)所在計算機或操作系統的格式,包含了適當的路徑分隔符。如果servlet容器無法轉換則這個方法將返回null。
參數:
  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;}
您可能感興趣的文章:
  • JSP對URL鏈接中的中文亂碼處理方法總結
  • jsp中URL傳遞中文參數的處理方法
  • 在jsp頁面如何獲得url參數
  • JSP中js傳遞和解析URL參數以及中文轉碼和解碼問題
  • javascript通過url向jsp頁面傳遞中文參數導致亂碼解決方案
  • jsp文件絕對路徑的設置方法
  • JSP的相對路徑如何計算深入研究
  • jsp下顯示中文文件名及絕對路徑下的圖片解決方法
  • jsp獲取url路徑的方法分析

標簽:拉薩 鄭州 馬鞍山 武威 大興安嶺 岳陽 紅河 亳州

巨人網絡通訊聲明:本文標題《在JSP中處理虛擬路徑》,本文關鍵詞  在,JSP,中,處理,虛擬,路徑,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《在JSP中處理虛擬路徑》相關的同類信息!
  • 本頁收集關于在JSP中處理虛擬路徑的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 拉孜县| 宝应县| 高青县| 秦皇岛市| 专栏| 嵩明县| 宁晋县| 阿坝县| 海阳市| 金平| 巧家县| 澄江县| 溧阳市| 云梦县| 团风县| 化德县| 丘北县| 绍兴县| 汝阳县| 大石桥市| 崇信县| 四平市| 泽普县| 苍溪县| 凌海市| 邯郸市| 威信县| 凤凰县| 邛崃市| 遂昌县| 张家界市| 武鸣县| 昌平区| 福清市| 若羌县| 重庆市| 申扎县| 丹寨县| 高青县| 威海市| 河源市|