六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

做了個jsp&servlet路徑狀態的測試,花了偶幾個小時,把結果貼出共享

[摘要]PS:這里怎么貼html阿,害得我還得格式化文本!路徑狀態測試目的測試jsp之間互相跳轉,servlet跳轉jsp環境下絕對路徑和相對路徑的狀態尋找出一種通用的解決辦法資源打成的WAR包MyWAR組...
PS:這里怎么貼html阿,害得我還得格式化文本!




路徑狀態測試

目的
測試jsp之間互相跳轉,servlet跳轉jsp環境下絕對路徑和相對路徑的狀態
尋找出一種通用的解決辦法


資源

打成的WAR包
MyWAR

組成文件
JSP
a.jsp

b/
b.jsp
ccc.jsp


Servlet

TestServlet.java mapping: /layer1/layer2/TestServlet


流程描述
1. 由a.jsp直接跳轉到b.jsp
 或
 由a.jsp提交到TestServlet,TestServlet根據a的提交選擇相應跳轉方式(forward/sendRedirect)
 然后跳轉到b.jsp
2. b.jsp包含一系列超鏈,來顯示不同方式的跳轉后超鏈的情況
 /a.jsp
 ../a.jsp
 ../../a.jsp
 ../../../a.jsp

 ccc.jsp
 /b/ccc.jsp
 ../ccc.jsp
 ../b/ccc.jsp
 ../../ccc.jsp
 ../../b/ccc.jsp
 ../../../ccc.jso
 ../../../b/ccc.jsp

 [contextPath]/b/b.jsp



測試結果


短語替換

http://localhost:8080/ =>ip/
/MyWAR/=>war/
http://localhost:8080/MyWAR/ =>ip/war/
/MyWAR =>[contextPath](request.getContextPath())





跳轉方式直接跳轉<a ..>servlet/forward servlet/sendRedirect
 requestDispatcher.forward response.sendRedirect
---------------------+---------------------+----------------------------------+------------------------
servlet中跳轉的路徑x/b/b.jsp/war/b/b.jsp
---------------------+---------------------+----------------------------------+------------------------
跳轉后瀏覽器的地址欄 ip/war/b/b.jsp ip/war/layer1/layer2/TestServletip/war/b/b.jsp
---------------------+---------------------+----------------------------------+------------------------
b.jsp中的鏈接列表 瀏覽器狀態條出現的鏈接地址
<a href="這里的描述"
---------------------+---------------------+----------------------------------+------------------------
/a.jsp ip/a.jspip/a.jspip/a.jsp
../a.jsp ip/war/a.jspip/war/layer1/a.jsp ip/war/a.jsp
../../a.jspip/a.jspip/war/a.jspip/a.jsp
../../../a.jsp ip/a.jspip/a.jspip/a.jsp

ccc.jspip/war/b/ccc.jspip/war/layer1/layer2/ccc.jspip/war/b/ccc.jsp
/b/ccc.jsp ip/b/ccc.jspip/b/ccc.jspip/b/ccc.jsp
../ccc.jsp ip/war/ccc.jspip/war/layer1/ccc.jsp ip/war/ccc.jsp
../b/ccc.jsp ip/war/b/ccc.jspip/war/layer1/b/ccc.jsp ip/war/b/ccc.jsp
../../ccc.jspip/ccc.jspip/war/ccc.jspip/ccc.jsp
../../b/ccc.jspip/b/ccc.jspip/war/b/ccc.jspip/b/ccc.jsp
../../../ccc.jsp ip/ccc.jspip/ccc.jspip/ccc.jsp
../../../b/ccc.jsp ip/b/ccc.jspip/b/ccc.jspip/b/ccc.jsp


[contextPath]/b/b.jspip/war/b/b.jspip/war/b/b.jspip/war/b/b.jsp
---------------------+---------------------+----------------------------------+------------------------




總結

由上面的列表看出,只有最下面一行是有實際意義而且無論以任何方式跳轉鏈接地址都是正確無誤的
1. 在jsp中的“/”表示的根為“ip”,不包含WAR路徑
2. 在servlet中以forward方式使用的“/”表示的根為“ip/war/”,包含了WAR路徑
3. 在servlet中以sendRedirect方式使用的“/”表示的根為ip,不包含WAR路徑
4. 在servlet中以forward方式跳轉,則瀏覽器的地址欄仍然為此servlet,不會改變
5. 在servlet中以sendRedirect方式跳轉,則瀏覽器的地址欄改變為目的路徑
6. 相對路徑的確定是以瀏覽器的地址欄顯示的路徑為基準的,而非具體的目錄結構,所以
 跳轉到同目錄下的某個頁面使用<a href="文件名">link</a>這種方式不是永久成立的
 (做asp的人不要驚訝,這里說的jsp和servlet :))
7. 為了避免jsp跳jsp,servlet跳jsp,forward方式跳轉,sendRedirect跳轉產生的路徑問題,
 對于jsp和使用sendRedirect跳轉的servlet,采用直接使用帶
 容器路徑[String request.getContextPath()]的絕對路徑就可以徹底解決,即:
1)<%
String contextPath = request.getContextPath();
String url = contextPath + "/user/login.jsp";
 %>
 
 <a href="<%=url%>"> login</a>
 2) ....
String contextPath = request.getContextPath();
String targetPath = contextPath + "/user/login.jsp";
RequestDispatcher rd = request.getRequestDispatcher(targetPath);
rd.forward(request, response);
......

 對于使用forward跳轉的servlet,則不要加容器路徑,否則就重復出現 容器路徑,原因參見 2

8. 如果使用的“../”過多也不會出現嚴重問題,“../”最多使鏈接到達“ip/”
9. 另外,在使用
 <jsp:include page = "url" flush="true"/>
 <%@ include file="url" %>
 <%@ page errorPage = "url" %>時,
 這里url使用的“/”表示的根為“ip/war/”,包含了WAR路徑




主站蜘蛛池模板: 日本深夜福利视频 | 最新国语自产精品视频在 | 四虎影院观看视频 | 欧美视频免费在线播放 | 中国国产一级毛片视频 | 视频二区国产 | 日本免费三区 | 午夜在线免费观看 | 日韩我不卡 | 香蕉视频色 | 深爱激情婷婷 | 亚洲国产系列久久精品99人人 | 色综合久久中文综合网 | 中国国产一国产一级毛片视频 | 日日摸夜夜添夜夜添影院视频 | 天堂资源在线最新版 | 手机看片日韩欧美 | 奇米狠狠| 在线天堂网 | 天天躁夜夜躁狠狠躁20216 | 亚洲香蕉综合在人在线视看 | 一级毛片免费高清视频 | 色www精品视频在线观看 | 青青草免费在线观看视频 | 日韩中文字幕一区二区不卡 | 天天操天天干天天操 | 欧美系列第一页 | 人人看人人爱 | 色悠久久久久综合欧美99 | 日本天堂在线观看 | 天天天干 | 亚洲五月七月丁香缴情 | 天天干2018 | 四虎精品成人a在线观看 | 欧美在线香蕉在线现视频 | 五月婷婷综合基地 | 午夜老司机福利 | 色中文在线 | 日本黄页网 | 色一级| 日韩专区一区 |