記錄是為了更好的成長!
1、ssm項目中
以工程名為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)類的絕對路徑: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
(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)類的絕對路徑: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
注釋:當項目中的jsp頁面有<base href="<%=request.getContextPath()%>/">標簽時,可以使用以下代碼來獲取根目錄,以防項目名為空的時候報錯:
function getRootPath(){
return $("base").attr("href");
}
var webpath=getRootPath(); //webpath就是目錄路徑變量
return $("base").attr("href");
}
var webpath=getRootPath(); //webpath就是目錄路徑變量
2、springBoot項目中
1、在用戶頭像上傳的功能實現時,為了獲取目錄路徑,花了好些時間,簡單記錄一下:
String path = ClassUtils.getDefaultClassLoader().getResource("").getPath() //輸出path: D:/java_project/manage/target/classes/
項目中圖片上傳的路徑是 resources/static/img/headImg/ 中,路徑可以這樣寫:
String path = ClassUtils.getDefaultClassLoader().getResource("").getPath()+"static/img/headImg/";
//輸出path:/D:/java_project/manage/target/classes/static/img/headImg/
2、還有一種寫法,效果一樣
//獲取項目的根目錄 File path = new File(ResourceUtils.getURL("classpath:").getPath()); System.out.println("path:"+path.getAbsolutePath()); //path:D:\java_project\manage\target\classes //獲取項目根目錄下的某個文件夾,這里是 "static/img/headImg/" File uploadpath = new File(path.getAbsolutePath(),"static/img/headImg/"); System.out.println("uploadpath:"+uploadpath.getAbsolutePath()); //uploadpath:D:\java_project\manage\target\classes\static\img\headImg
//也可以直接寫成這樣
String path = ResourceUtils.getURL("classpath:static/img/headImg/").getPath();
注意:ResourceUtils的這種寫法在linux系統是無效,請注意
推薦使用一下兩種方式:
String rootPath = Class.class.getClass().getResource("/").getPath();
//D:\java_project\manage\target\classes\
String rootPath2 = ClassUtils.getDefaultClassLoader().getResource("").getPath();
//D:\java_project\manage\target\classes\
以上內容代表個人觀點,僅供參考,不喜勿噴。。。