web開發中的路徑
路徑問題在Web開發中算是令人比較蛋疼的問題,尤其是用相對地址時,同樣的程式碼,在不同的目錄結構中竟然會出現有對有錯的結果,讓人茫然不知所措。這種錯誤,究其原因,還是對Web中路徑的概念一知半解,為徹底避免這種錯誤,提高開發效率,這裡對Web中路徑問題稍作總結。
1. 伺服器端的相對地址
是在伺服器端解析的,是相對於web應用的地址
servlet中的相對地址應該是相對於web應用,即相對於http://localhost:8080/webapp/
2. 重定向的路徑問題
forward跳轉: servlet中的request.getRequestDispatcher(address);這個address是在伺服器端解析的,
所以,要forward到a.jsp應該這麼寫: request.getRequestDispatcher("/user/a.jsp")這個/相對於當前的web應用webapp, 其絕對地址就是:http:// localhost:8080 /webapp/user/a.jsp
sendRedirect跳轉: response.sendRedirect(address);這個address是在客戶端解析的,要跳轉到a.jsp,應該這麼寫:response.sendRedirect("/webapp/user/a.jsp");
3. 客戶端的相對地址
所有的html中的相對地址都是相對於http:// localhost:8080 / 的,而不是http:// localhost:8080 /webapp/ 的。
Html中的form表單的action屬性的地址應該是相對於http:// localhost:8080 / 的。
所以,如果提交到a.jsp為:action="/webapp/user/a.jsp";提交到servlet為action="/webapp/handleservlet"
Javascript也是在客戶端解析的,所以其相對路徑和form表單一樣。
4. 兩種相對路徑
相對於根目錄的路徑:
/jsp/path/pathTest.jsp
在伺服器端解析為絕對路徑為:http://localhost:8080/webapp/jsp/path/pathTest.jsp
在客戶端解析為的絕對路徑為:http://localhost:8080/jsp/path/pathTest.jsp
相對於當前目錄的路徑:
jsp/path/pathTest.jsp
當前目錄的路徑為http://localhost:8080/webapp/jsp/path ,
那麼絕對路徑為:http://localhost:8080/webapp/jsp/path/jsp/path/pathTest.jsp
5. 站點根目錄和css路徑問題
當在jsp中引入css時,如果其相對路徑相對於當前jsp檔案的,會正常找到相應的css
但是如果從一個和當前jsp的路徑不一樣的Servlet中forward到這個jsp時,當前的相對路徑是哪個Servlet的相對路徑,而不是jsp所在的路徑,這時不能在jsp中用這樣的路徑:<link href="css.css" rel="stylesheet" type="text/css">或者<link href="../../css.css" rel="stylesheet" type="text/css">。
這中情況下,要用站點根目錄來引用css檔案,就是相對於http://ip/ 的目錄,以"/"開頭,即href="/webapp/css.css"。這樣在servlet轉發後和jsp中都是相對於站點根目錄的相對路徑,就能正確使用所定義的css樣式了。
也可以理解為在客戶端(jsp/html檔案中),引用檔案時,都要用/wabapp/***開頭,因為客戶端的相對地址是http://localhost:8080/
6. servlet中幾個獲取路徑方法的對比
對於url: http://localhost:8080/webapp/blog/list
那麼分別呼叫request.getContextPath( )、request.getServletPath( ) 、 request.getURI( )、request.getURL( )分別返回什麼路徑?
這幾個方法都是在HttpServletRequest介面中定義的。
1). request.getContextPath( )返回web應用程式的路徑,上例中該方法將返回/webapp;
2). request.getServletPath( ) 返回Servlet的路徑。上例中該方法將返回/blog/list;
3). request.getRequestURL( )返回請求的URL,上例中即為http://localhost:8080/webapp/blog/list ;
4). request.getRequestURI( )返回HTTP請求行中請求URI的部分。上例中該方法將返回/webapp/blog/list.
*注:事例所用伺服器埠號為8080,webapp是web工程名字
相關文章
- web應用中的路徑問題Web
- html中的路徑的介紹:絕對路徑和相對路徑HTML
- JAVA 取得當前目錄的路徑/Servlet/class/檔案路徑/web路徑/url地址JavaServletWeb
- web前端開發入門,學習路徑以及具體的學習內容Web前端
- 我的 iOS 開發入門自學路徑iOS
- web專案絕對路徑與相對路徑的問題Web
- 讓Web專案中Velocity的#parse支援相對路徑Web
- 利用perl提取web配置檔案中的域名對應的路徑Web
- 谷歌 Web 開發最佳實踐手冊(4.1.7):優化關鍵渲染路徑谷歌Web優化
- vue去除路徑中的#Vue
- 矩陣中的路徑矩陣
- SVG Path路徑在網頁開發的作用SVG網頁
- java web中servlet、jsp、html 互相訪問的路徑問題JavaWebServletJSHTML
- WEB應用開發中的ServletWebServlet
- WEB開發中的cookie與sessionWebCookieSession
- 容器網路中的 Iptables 包路徑
- web開發中公用元件的開發之一DateUtils .Web元件
- 在cmd中開啟指定檔案路徑
- web開發中圖形Web
- Java獲取WEB目錄路徑JavaWeb
- 路徑中./和../和/
- JavaWeb開發之Eclipse中jsp自動匯入類路徑JavaWebEclipseJS
- Python開發的職業發展路徑是什麼樣的?Python
- 好程式設計師web前端分享絕對路徑與相對路徑的引用程式設計師Web前端
- iOS開發學習路徑的一些建議iOS
- javaweb中的一些路徑JavaWeb
- Asp.net中的常用路徑ASP.NET
- Unity中的三種渲染路徑Unity
- Python中WEB開發(一)PythonWeb
- Silverlight獲取Web路徑Web
- web前端CSS開發中的10個不要Web前端CSS
- Java Web開發中的名詞解釋JavaWeb
- Web開發中的6個壞習慣Web
- Web3開發中的狀態同步Web
- apache對應的web服務預設根路徑ApacheWeb
- 谷歌 Web 開發最佳實踐手冊(4.1.5):使用Navigation Timing衡量關鍵渲染路徑谷歌WebNavigation
- 資料庫.NET中的Web service的開發資料庫Web
- JSP 和 Servlet 中的絕對路徑和相對路徑問題JSServlet