⑴ J2EE web項目,絕對路徑和相對路徑如何設置與獲取
在開發Web方面的應用時, 經常需要獲取伺服器中當前WebRoot的物理路徑。
如果是Servlet , Action , Controller, 或者Filter , Listener , 攔截器等相關類時, 我們只需要獲得ServletContext, 然後通過ServletContext.getRealPath("/")來獲取當前應用在伺服器上的物理地址。
如果在類中取不到ServletContext時,有兩種方式可以做到:
(1)利用Java的類載入機制:調用 XXX.class.getClassLoader().getResource(""); 方法來獲取到ClassPath , 然後處理獲得WebRoot目錄。這種方式只能是該class在WebRoot/WEB-INF/classes下才能生效, 如果該class被打包到一個jar文件中, 則該方法失效。這時就應該用下面一種方式。
(2)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的物理路徑。
⑵ javaweb中怎麼獲取文件的絕對路徑
在jsp和class文件中調用的相對路徑不同。 在jsp里,根目錄是WebRoot 在class文件中,根目錄是WebRoot/WEB-INF/classes 當然你也可以用System.getProperty("user.dir")獲取你工程的絕對路徑。
另:在Jsp,Servlet,Java中詳細獲得路徑的方法!
1.jsp中取得路徑:
以工程名為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()
(3)得到相對地址:request.getRequestURI()
結果:/TEST/test
⑶ 關於WEB-INF下的jsp,使用絕對路徑如何訪問
WEB-INF下的東西是禁止直接訪問的。如果這個頁面是你的,要想讓人訪問最好不要放在這個目錄下。如果一定放在那裡。你可以使用:
request.getRequestDispatcher("/WEB-INF/test.jsp").forward(request,response);
所以你想直接添加一個鏈接那肯定是沒發過去的。你可以先跳到一個jsp,那個jsp里寫上上面的代碼就可以了。
⑷ 如何在web頁面獲取文件絕對路徑
Server.MapPath
⑸ javaweb中什麼時候使用絕對路徑,什麼時候用相對路徑
就我的經驗來說,沒有什麼絕對的情況,想用什麼就用什麼。一般相對路徑,寫得少嘛。或者你不想把所有的路徑暴露出來,那就用相對路經吧。有時候,發現路徑不識別的時候,我就會兩種路徑都寫寫,去嘗試一下哪種對。
⑹ web中html中的相對路徑和絕對路徑怎麼找
路徑是指文件在伺服器中的存儲位置。我們在使用計算機時要找到所需的文件時就必須知道文件的絕對路徑,例如,只要看到這個路徑d:/web/logo.gif,我們就知道logo.gif文件是在d盤的web目錄下。類似於這樣完整的描述文件位置的路徑就是絕對路徑。
絕對路徑還有一種表示方法就是以伺服器命名開始(如在本機中http://localhost)的完整描述文件位置的路徑,如通過IIS簡歷一個站點,站點下面有個文件叫test.htm,那麼用絕對路徑來顯示這個文件就是http://localhost//test.htm。
相對路徑主要用在我們的網站上,當ASP在發布一個目錄時,如果在Web上也像d:/web/test.htm一樣,就不會顯示在正常的頁面。這時需要通
過站點來訪問相對目錄,網頁上所有Web頁面程序和所顯示的圖片都是通過相對路徑來訪問的。如裡面的圖片訪問就是images/logo.gif我們可以
用"../"來表示上一級目錄,"../../"表示上上級目錄,依此類推。
⑺ web頁面連接是有相對路徑和絕對路徑,他們之間有什麼區別和聯系
絕對路徑是指比如你把這個index.html頁面放在電腦的真實位置,如:我D:\webapps\index.html,那這個index.html的絕對路徑就是你電腦上的真實路徑"D:\webapps\index.html"
相對路徑是指,如果你要把一個web頁面發布,讓別的電腦能夠訪問,那麼你必須將此頁面放在一個伺服器的目錄,如這個伺服器的目錄是在"D:\webapps"那麼你的網站的index.html的相對路徑就就是"\index.html",如果你頁面還包含了一些圖片文件,圖片文件又另外存放在一個文件夾,如"\img\a.jpg",那麼你這張圖片的絕對路徑就是"D:\webapps\img\a.jpg",你這張圖片的相對路徑就是"\img\a.jpg".