JavaWeb(三)-關於web專案中的路徑問題及URL編碼問題
阿新 • • 發佈:2018-12-25
一、web專案中的路徑問題
1-1獲得資源路徑
1-1-1class類獲得資源
InputStream in= this.getClass().getResourceAsStream("...");
class類中的ResourceAsStream;
以“/”開頭,相對於classes路徑
不以“/”開頭,則相對於當前的class檔案所在的路徑
1-1-2 ClassLoader獲得資源
InputStream in= this.getClass().getClassLoader().getResourceAsStream("...");
classLoader類是相當於當前的classes路徑
1-1-3 ServletContext獲得資源
- 使用ServletContext的getResourceAsStream方法:返回資原始檔的讀取位元組流。
- 使用ServletContext的getRealPath方法,獲得檔案的完整絕對路徑path(除了可以獲取資料,還可以獲取資原始檔的名稱)
1-2:web.xml下的<url-pattern>路徑
- 以 * 開頭 用於過濾器
- 以 / 開頭 當前專案路徑 開始 (http://localhost:8080/專案名/)
1-3:轉發/包含路徑(伺服器<--->伺服器)
- 以 / 開頭,則相當於當前專案路徑 (http://localhost:8080/專案名/)
- 不以 / 開頭,則相當於當前Servlet路徑 (http://localhost:8080/專案名/Aservlet/)
1-4:重定向路徑(客戶端路徑)
只能以/ 開頭,相當於當前主機。 (http://localhost:8080/)
resp.sendRedirect(req.getContextPath()+"/EServlet");
1-5:頁面中的超連結
- 以/ 開頭,相當於當前主機。 (http://localhost:8080/)
- 不以 /開頭,則相當於當前頁面的所在路徑
二、URL編碼問題
由於表單型別是content-Type:application/x-www-form-urlencoded。可以直接把中文進行URL編碼(%+兩位16進位制);
然而GET中,的中文無法直接進行URL編碼
方法
java中URL 的編碼和解碼函式
java.net.URLEncoder.encode(String s)和java.net.URLDecoder.decode(String s);
String u=URLEncoder.encode("好的","UTF-8");
String uu=URLDecoder.decode(u,"UTF-8");