⑴ Java或Web中怎樣解決路徑問題
歸根結底,Java本質上只能使用絕對路徑來尋找資源。所有的相對路徑尋找資源的方法,都不過是一些便利方法。不過是API在底層幫助我們構建了絕對路徑,從而找到資源的! 在開發Web方面的應用時, 經常需要獲取 伺服器中當前WebRoot的物理路徑。 如果是Servlet , Action , Controller, 或則Filter , Listener , 攔截器等相關類時, 我們只需要獲得ServletContext, 然後通過ServletContext.getRealPath("/")來獲取當前應用在伺服器上的物理地址。 如果在類中取不到ServletContext時, 有兩種方式可以做到: 1. spring框架的思路, 在WEB-INF/web.xml中 , 創建一個webAppRootKey的param, 指定一個值(默認為webapp.root)作為鍵值, 然後通過Listener , 或者Filter , 或者Servlet 執行String webAppRootKey = getServletContext().getRealPath("/"); 並將webAppRootKey對應的webapp.root 分別作為Key , Value寫到System Properties系統屬性中。之後在程序中通過System.getProperty("webapp.root")來獲得WebRoot的物理路徑。 2. 利用Java的類載入機制 調用 XXX.class.getClassLoader().getResource(""); 方法來獲取到ClassPath , 然後處理獲得WebRoot目錄,這種方式只能是該class在WebRoot/WEB-INF/classes下才能生效, 如果該class被打包到一個jar文件中, 則該方法失效。這時就應該用下面一種方式。 根據第二種的思路,我們還可以再擴展一下。不過對於在部署在一台伺服器中的應用來說,若還不是你所需請再往下看。 下面是一些得到classpath和當前類的絕對路徑的一些方法。你可使用其中的一些方法來得到你需要的資源的絕對路徑: 1. DebitNoteAction.class.getResource("") 得到的是當前類FileTest.class文件的URI目錄。不包括自己! 如:file:/D:/eclipse/springTest/WebRoot/WEB-INF/classes/ atacarnet/src/com/evi/moles/atacarnet/action/ 2. DebitNoteAction.class.getResource("/") 得到的是當前的classpath的絕對URI路徑。 如:file:/D:/eclipse/springTest/WebRoot/WEB-INF/classes/ 3. Thread.currentThread().getContextClassLoader().getResource("") 得到的也是當前ClassPath的絕對URI路徑 如:file:/D:/eclipse/springTest/WebRoot/WEB-INF/classes/ 4. DebitNoteAction.class.getClassLoader().getResource("") 或ClassLoader.getSystemResource("") 得到的也是當前ClassPath的絕對URI路徑。
⑵ java web路徑問題
webRoot下的text.xml路徑應該是/text.xml
src下的text.xml經過編譯後是放在classes目錄下的,所以這個文件的路徑是
webRoot/WEB-INF/classes/text.xml
這2個是有區別的哦,一般建議放在src下編譯後放在classes目錄里,這樣客戶端是無法直接訪問的,安全性好。
⑶ 求教java web 在伺服器上獲取路徑問題
歸根結底,Java本質上只能使用絕對路徑來尋找資源。所有的相對路徑尋找資源的方法,都不過是一些便利方法。不過是API在底層幫助我們構建了絕對路徑,從而找到資源的!
在開發Web方面的應用時, 經常需要獲取 伺服器中當前WebRoot的物理路徑。
如果是Servlet , Action , Controller, 或則Filter , Listener , 攔截器等相關類時, 我們只需要獲得ServletContext, 然後通過ServletContext.getRealPath("/")來獲取當前應用在伺服器上的物理地址。
如果在類中取不到ServletContext時, 有兩種方式可以做到:
1. spring框架的思路, 在WEB-INF/web.xml中 , 創建一個webAppRootKey的param, 指定一個值(默認為webapp.root)作為鍵值, 然後通過Listener , 或者Filter , 或者Servlet 執行String webAppRootKey = getServletContext().getRealPath("/"); 並將webAppRootKey對應的webapp.root 分別作為Key , Value寫到System Properties系統屬性中。之後在程序中通過System.getProperty("webapp.root")來獲得WebRoot的物理路徑。
2. 利用Java的類載入機制 調用 XXX.class.getClassLoader().getResource(""); 方法來獲取到ClassPath , 然後處理獲得WebRoot目錄,這種方式只能是該class在WebRoot/WEB-INF/classes下才能生效, 如果該class被打包到一個jar文件中, 則該方法失效。這時就應該用下面一種方式。
根據第二種的思路,我們還可以再擴展一下。不過對於在部署在一台伺服器中的應用來說,若還不是你所需請再往下看。
下面是一些得到classpath和當前類的絕對路徑的一些方法。你可使用其中的一些方法來得到你需要的資源的絕對路徑:
1. DebitNoteAction.class.getResource("")
得到的是當前類FileTest.class文件的URI目錄。不包括自己!
如:file:/D:/eclipse/springTest/WebRoot/WEB-INF/classes/
atacarnet/src/com/evi/moles/atacarnet/action/
2. DebitNoteAction.class.getResource("/")
得到的是當前的classpath的絕對URI路徑。
如:file:/D:/eclipse/springTest/WebRoot/WEB-INF/classes/
3. Thread.currentThread().getContextClassLoader().getResource("")
得到的也是當前ClassPath的絕對URI路徑
如:file:/D:/eclipse/springTest/WebRoot/WEB-INF/classes/
4. DebitNoteAction.class.getClassLoader().getResource("") 或ClassLoader.getSystemResource("")
得到的也是當前ClassPath的絕對URI路徑。
⑷ java web 讀取路徑中的圖片並顯示的問題
直接用img標簽顯示啊,至於路徑是相對路徑,當然你本地上有那個圖片資源填那個絕對路徑也沒問題。
⑸ java web項目中的路徑問題,
webContext目錄只是eclipse用來管理工程項目增加的目錄,當工程打包後就沒有webContext目錄了,webContext目錄下的所有文件都會復制到項目的根目錄下。你可以使用eclipse把工程打包成war包看一下就明白其中原因了。
『/『是你工程的根目錄。
⑹ java web怎麼訪問伺服器指定路徑
可以把文件目錄配置在web.xml文件的初始化參數中, 通過ServletAPI讀取文件目錄
比如
定義一個Properties文件保存相關配置
#可以上傳文件的後綴名
extensions=pptx,docx.doc,txt,jpg,jar
#單個文件的大小1M
fileMaxSize=1048576
#總共上傳文件大小5M
totalFileMaxSize=5242880
#文件保存路徑
filePath=z:/temp
#臨時文件路徑
tempDir=z:/temp/temp
使用Listener在伺服器啟動時載入配置信息
1
2
3
4
5
6
7
8
9
10
11
ServletContext context = event.getServletContext();
InputStream inputStream = context
.getResourceAsStream("/WEB-INF/classes/file/upload/commons/uploadConfig.properties");
Properties properties = new Properties();
try {
properties.load(inputStream);
context.setAttribute("fileConfig", properties);
System.out.println("properties = " + properties.size());
} catch (IOException e) {
e.printStackTrace();
}
在你上傳文件時通過配置文件讀取路徑保存
String filePath = ((Properties) this.getServletContext().getAttribute("fileConfig"))
.getProperty(FileUploadConstants.FILE_PATH);
⑺ java怎麼取到web服務的根路徑
java獲取根路徑有兩種方式:
1)在servlet可以用一下方法取得:
request.getRealPath(「/」)
例如:filepach = request.getRealPath(「/」)+」//upload//」;
2)不從jsp,或servlet中獲取,只從普通java類中獲取:
String path = getClass().getProtectionDomain().getCodeSource().getLocation().getPath();
SAXReader() saxReader = new SAXReader();
if(path.indexOf(「WEB-INF」)>0){
path = path.substring(0,path.indexOf(「/WEB-INF/classes」)+16);
// 『/WEB-INF/classes』為16位
document = saxReader.read(path+filename);
}else{
document = saxReader.read(getClass().getResourceAsStream(filename));
}