先定義幾個替換:
http://localhost:8080/?????????? =>? ip/
/mywar/????????????????????????? =>? war/
http://localhost:8080/mywar/???? =>? ip/war/
/mywar?????????????????????????? =>? [contextpath]? (request.getcontextpath())
總結(jié)如下:
1. 在jsp中的“/”表示的根為“ip”,不包含war路徑
2. 在servlet中以forward方式使用的“/”表示的根為“ip/war/”,包含了war路徑
3. 在servlet中以sendredirect方式使用的“/”表示的根為ip,不包含war路徑
4. 在servlet中以forward方式跳轉(zhuǎn),則瀏覽器的地址欄仍然為此servlet,不會改動
5. 在servlet中以sendredirect方式跳轉(zhuǎn),則瀏覽器的地址欄改動為目的路徑
6. 相對路徑的確定是以瀏覽器的地址欄顯示的路徑為基準(zhǔn)的,而非具體的目錄結(jié)構(gòu),所以
?? 跳轉(zhuǎn)到同目錄下的某個頁面使用<a href="文件名">link</a>這種方式不是永久成立的
?? (做asp的人不要驚訝,這里說的jsp和servlet
)
7. 為了避免jsp跳jsp,servlet跳jsp,forward方式跳轉(zhuǎn),sendredirect跳轉(zhuǎn)產(chǎn)生的路徑問題, 對于jsp和使用sendredirect跳轉(zhuǎn)的servlet,采用直接使用帶容器路徑[string request.getcontextpath()]的絕對路徑就能完全解決,即:
?????
????
?? 對于使用forward跳轉(zhuǎn)的servlet,則不要加容器路徑,否則就重復(fù)出現(xiàn) 容器路徑,原因參見 2
8. 如果使用的“../”過多也不會出現(xiàn)嚴(yán)重問題,“../”最多使鏈接到達(dá)“ip/”
9. 另外,在使用
??????
http://localhost:8080/?????????? =>? ip/
/mywar/????????????????????????? =>? war/
http://localhost:8080/mywar/???? =>? ip/war/
/mywar?????????????????????????? =>? [contextpath]? (request.getcontextpath())
總結(jié)如下:
1. 在jsp中的“/”表示的根為“ip”,不包含war路徑
2. 在servlet中以forward方式使用的“/”表示的根為“ip/war/”,包含了war路徑
3. 在servlet中以sendredirect方式使用的“/”表示的根為ip,不包含war路徑
4. 在servlet中以forward方式跳轉(zhuǎn),則瀏覽器的地址欄仍然為此servlet,不會改動
5. 在servlet中以sendredirect方式跳轉(zhuǎn),則瀏覽器的地址欄改動為目的路徑
6. 相對路徑的確定是以瀏覽器的地址欄顯示的路徑為基準(zhǔn)的,而非具體的目錄結(jié)構(gòu),所以
?? 跳轉(zhuǎn)到同目錄下的某個頁面使用<a href="文件名">link</a>這種方式不是永久成立的
?? (做asp的人不要驚訝,這里說的jsp和servlet

7. 為了避免jsp跳jsp,servlet跳jsp,forward方式跳轉(zhuǎn),sendredirect跳轉(zhuǎn)產(chǎn)生的路徑問題, 對于jsp和使用sendredirect跳轉(zhuǎn)的servlet,采用直接使用帶容器路徑[string request.getcontextpath()]的絕對路徑就能完全解決,即:
?????
<% string contextpath = request.getcontextpath(); string url = contextpath + "/user/login.jsp"; %> <a href="<%=url%>"> login</a>
????
string contextpath = request.getcontextpath(); string targetpath = contextpath + "/user/login.jsp"; requestdispatcher rd = request.getrequestdispatcher(targetpath); rd.forward(request, response); ......
?? 對于使用forward跳轉(zhuǎn)的servlet,則不要加容器路徑,否則就重復(fù)出現(xiàn) 容器路徑,原因參見 2
8. 如果使用的“../”過多也不會出現(xiàn)嚴(yán)重問題,“../”最多使鏈接到達(dá)“ip/”
9. 另外,在使用
??????
<jsp:include page = "url" flush="true"/> <%@ include file="url" %> <%@ page errorpage = "url" %>時, 這里url使用的“/”表示的根為“ip/war/”,包含了war路徑
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
