❶ 怎麼在一個java程序里獲得當前web應用的路徑
在java中獲得文件的路徑在我們做上傳文件操作時是不可避免的。
web 上運行
1:this.getClass().getClassLoader().getResource("/").getPath();
this.getClass().getClassLoader().getResource("").getPath(); 得到的是 ClassPath的絕對URI路徑。
如:/D:/jboss-4.2.2.GA/server/default/deploy/hp.war/WEB-INF/classes/
System.getProperty("user.dir");
this.getClass().getClassLoader().getResource(".").getPath(); 得到的是 項目的絕對路徑。
如:/D:/jboss-4.2.2.GA/server/default/deploy/hp.war
2:this.getClass().getResource("/").getPath();
this.getClass().getResource("").getPath(); 得到的是當前類 文件的URI目錄。
如:/D:/jboss-4.2.2.GA/server/default/deploy/hp.war/WEB-INF/classes/com/jebel/helper/
this.getClass().getResource(".").getPath(); X 不 能運行
3:Thread.currentThread().getContextClassLoader().getResource("/").getPath()
Thread.currentThread().getContextClassLoader().getResource("").getPath() 得到的是 ClassPath的絕對URI路徑。
如:/D:/jboss-4.2.2.GA/server/default/deploy/hp.war/WEB-INF/classes/
Thread.currentThread().getContextClassLoader().getResource(".").getPath() 得到的是 項目的絕對路徑。
如:/D:/jboss-4.2.2.GA/server/default/deploy/hp.war
在本地運行中
1:this.getClass().getClassLoader().getResource("").getPath();
this.getClass().getClassLoader().getResource(".").getPath(); 得到的是 ClassPath的絕對URI路徑。
如:/D:/myProjects/hp/WebRoot/WEB-INF/classes
this.getClass().getClassLoader().getResource(".").getPath(); X 不 能運行
2:this.getClass().getResource("").getPath();
this.getClass().getResource(".").getPath(); 得到的是當前類 文件的URI目錄。
如:/D:/myProjects/hp/WebRoot/WEB-INF/classes/com/jebel/helper/
/D:/myProjects/hp/WebRoot/WEB-INF/classes/ 得到的是 ClassPath的絕對URI路徑。
如:/D:/myProjects/hp/WebRoot/WEB-INF/classes
3:Thread.currentThread().getContextClassLoader().getResource(".").getPath()
Thread.currentThread().getContextClassLoader().getResource("").getPath() 得到的是 ClassPath的絕對URI路徑。。
如:/D:/myProjects/hp/WebRoot/WEB-INF/classes
Thread.currentThread().getContextClassLoader().getResource("/").getPath() X 不 能運行
最後
在Web應用程序中,我們一般通過ServletContext.getRealPath("/")方法得到Web應用程序的根目錄的絕對路徑。
還有request.getContextPath(); 在Weblogic中要用request.getServletContext().getContextPath();但如果打包成war部署到Weblogic伺服器,項目內部並沒有文件結構的概念,用這種方式是始終得到null,獲取不到路徑,目前還沒有找到具體的解決方案。
❷ ------------如何在java類中取得web容器在系統中的絕對路徑或相對路徑--------
我記得當初我用了個new File在網路上傳輸文件,結果失敗了,文件地址全是new 在 伺服器上的地址,你可以試試用new File,然後得到他的toURI,然後再toURL,不知道你的問題合適不,你可以試試
❸ javaweb項目絕對路徑問題求教
${pageContext.request.contextPath }是jsp中內置對象,你放在html中肯定不好使了,要是在jsp中就好使了
❹ 普通JAVA類 如何獲取,WEB項目的根路徑
在提問前,你應該選搜索下。web項目的路徑問題已有過回答了。貼個代碼片段給你吧……,希望能對你有所幫助
/**
* 獲取項目classpath目錄的絕對路徑
*
* @return classes目錄的絕對路徑<br/>
* file:/F:/tomcat/webapps/J2EEUtil/WEB-INF/classes/
* */
public static URL getAbsolutePathWithClass() {
return WebPath.class.getResource("/");
}
/**
* 獲取項目classPath目錄下的指定目錄的絕對路徑
*
* @param path
* classes目錄下的指定目錄.比如:/com/
* @return file:/F:/tomcat/webapps/J2EEUtil/WEB-INF/classes/com/
* */
public static URL getAbsolutePathWithClass(String path) {
return WebPath.class.getResource(path);
}
/**
* 獲取指定類文件的所在目錄的絕對路徑
*
* @param clazz
* 類
* @return 類文件的絕對路徑.例如:<br/> 包com.Aries.Util.Web下的Main.java類.<br/>
* 路徑為:file:/
* F:/tomcat/webapps/J2EEUtil/WEB-INF/classes/com/Aries/Util/Web/
* */
public static URL getAbsolutePathWithClass(Class clazz) {
return clazz.getResource("");
}
}
❺ 在java web項目中,如何獲取項目的絕對路徑(考慮到後期移植不能寫死),大神幫忙!
傳遞一個參數進去不就有了,沒辦法傳遞那就 ThreadLocal.set 然後在另一個地方 ThreadLocal.get 再拿回來就是了。
pubblic class A {
private static final ThreadLocal instances = new ThreadLocal();
public static void put (Object target) { instances.set(target);}
public static Object get() {return instances.get();}
}
在請求之後調用 A.put(ServletContext); 在你的普通 java 類中調用 A.get();
ThreadLocal 像它的名字一樣,它能保證這個 set 和 get 能對線程進行隔離,get 到的肯定是這個線程在之前 set 進去的東西,不會拿到其它線程的東西,因為 servlet 一個請求由一個線程服務的,我們需要保證請求完成後清理掉現場 set(null) 就可以了。
public void doGet(request, response) {
try {
A.set(request.getServletContext());
// ... 其它正常的操作。
} finally {
A.set(null);
}
}
你的普通類 A.get() 得到剛才那個 ServletContext。這個 try / finally 配對是必須的,因為 HTTP 伺服器都是使用線程池的,也就是說一個 http request 完成之後這個線程並不會終止而是被另一個請求使用,為了不影響其它的請求,我們需要清理現場。
❻ java 怎麼獲取web根目錄
以工程名為TEST為例:
(1)得到包含工程名的當前頁面全路徑:request.getRequestURI()
結果:/TEST/test.jsp
(2)得到工程名:request.getContextPath()
結果:/TEST
(3)得到當前頁面所在目錄下全名稱:request.getServletPath()
結果:如果頁面在jsp目錄下 /TEST/jsp/test.jsp
(4)得到頁面所在伺服器的全路徑:application.getRealPath("頁面.jsp")
結果:D:/resin/webapps/TEST/test.jsp
(5)得到頁面所在伺服器的絕對路徑:absPath=new java.io.File(application.getRealPath(request.getRequestURI())).getParent();
結果:D:/resin/webapps/TEST
2.在類中取得路徑:
(1)類的絕對路徑:String u=Class.class.getClass().getResource("/").getPath()
結果:/D:/TEST/WebRoot/WEB-INF/classes/pack/
(2)得到工程的路徑:System.getProperty("user.dir")
結果:D:/TEST
3.在Servlet中取得路徑:
(1)得到工程目錄:request.getSession().getServletContext().getRealPath("") 參數可具體到包名。
結果:E:/Tomcat/webapps/TEST
(2)得到IE地址欄地址:request.getRequestURL()
結果:http://localhost:8080/TEST/test
(3)得到相對地址:request.getRequestURI()
結果:/TEST/test
❼ java 怎麼獲取web根目錄
在java中獲得文件的路徑在我們做上傳文件操作時是不可避免的。 web 上運行 1:this.getClass().getClassLoader().getResource("/").getPath(); this.getClass().getClassLoader().getResource("").getPath(); 得到的是 ClassPath的絕對URI路徑。
以工程名為TEST為例:
(1)得到包含工程名的當前頁面全路徑:request.getRequestURI(),結果:/TEST/test.jsp。
(2)得到工程名:request.getContextPath(),結果:/TEST。
(3)得到當前頁面所在目錄下全名稱:request.getServletPath()。結果:如果頁面在jsp目錄下 /TEST/jsp/test.jsp。
(4)得到頁面所在伺服器的全路徑:application.getRealPath("頁面.jsp"),結果D:/resin/webapps/TEST/test.jsp。
(5)得到頁面所在伺服器的絕對路徑:absPath=new java.io.File(application.getRealPath(request.getRequestURI())).getParent();
結果:D:/resin/webapps/TEST。
❽ 求教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 開發中,獲取絕對路徑,沒有打出war包時可以,打成war包後就成null
你應該在項目中(war)開發的時候,就配置一個 config.properties 的文件,專門用來定義這些固定的路徑或參數。
然後,你在程序中或頁面中使用的時候,直接通過載入這個 config.properties 文件內容到一個 ResourceBundle 中,然後通過 ResourceBundle 讀這個內容裡面定義的參數名來處理。
如:
ResourceBundle config = (這里載入的方法網上找一下,忘記了);
String path = config.getProperty("real-path");