forward、redirect、浏览器的路径问题
| 瀏覽器: 1、路徑以“/”開頭,瀏覽器會把http://localhost:8080/作為根目錄 <img src="http://images.cnblogs.com/mark_arrow_03.gif" width="14" height="14"/> 在sysmgr文件中。 瀏覽器請求:http://zmg-pc:8088/images/mark_arrow_03.gif?? 失敗 2、路徑以“../”開頭,瀏覽器會把當前所在的目錄作為根目錄,查找上一級目錄 <img src="../images/mark_arrow_03.gif" width="14" height="14"/> 在sysmgr文件中。 瀏覽器請求:http://zmg-pc:8088/DRP/images/mark_arrow_03.gif?? 成功 3、以文件名開頭,瀏覽器會把當前所在的目錄作為根目錄,查找子目錄 <img src="images/mark_arrow_03.gif" width="14" height="14"/> 在sysmgr文件中。 瀏覽器請求:http://zmg-pc:8088/DRP/sysmgr/images/mark_arrow_03.gif? 失敗 ? ? forward,redirect 在相對路徑上,兩者的表現是相同的。 看看lingo-sample/03-03/這個例子,如果我們去請求relative/forward.jsp或redirect.jsp,然后從這里再轉向它下面的result/result.jsp會怎樣呢? forward的例子: <%request.getRequestDispatcher("result/result.jsp").forward(request, response);%>這里的相對路徑就是result/result.jsp。 因為剛剛請求的test.jsp是在/03-03/relative/下,所以我們的當前路徑就是/03-03/relative/,執行forward的時候會尋找當前路徑下的result/result.jsp,/03-03/relative/result/result.jsp,找到之后便轉發請求。 redirect的例子: <%response.sendRedirect("result/result.jsp");%>這里的相對路徑也是result/result.jsp。 因為剛剛請求的test.jsp是在/03-03/relative/下,所以我們的當前路徑就是/03-03/relative/, 3.4.1.2. 絕對路徑問題出現了,絕對路徑在forward和redirect中出現了差別,還是剛才的情況,但使用絕對路徑的時候寫法便不同了。 forward的例子: <%request.getRequestDispatcher("/relative/result/result.jsp").forward(request, response);%> 這里的絕對路徑就是/relative/result/result.jsp。 在本地測試時,forward把http://localhost:8080/03-03/當作根路徑,在它的基礎上計算絕對路徑。為什么? 因為這是由jsp的部署方式決定的,webapp里可以放好多項目,為了讓這些項目可以互不影響、獨立運行,不能讓請求從一個項目直接在服務器內部轉移到另一個項目。為了防止出現這種情況,Tomcat在執行forward的時候干脆把項目的路徑當作根目錄,開發者看不到其他項目,也就不會出現問題了。 redirect的例子: <%response.sendRedirect("/03-03/absolute/result/result.jsp");%>這里的絕對路徑卻是/03-03/absolute/result/result.jsp。 在本地測試時,redirect把http://localhost:8080/當作根路徑,在它的基礎上計算絕對路徑。 因為redirect會讓瀏覽器重新發起一個新請求,所以不會攪亂服務器里多個項目之間的關系, 總結: 以“文件名開頭”,相對路徑,都在當前目錄下找。 以“../”開頭的,相對路徑,都在當前目錄的上一級目錄找。 以“/”開頭,絕對路徑,forward以當前項目文件為根目錄找,瀏覽器和redirect以http://localhost:8080/為根目錄找。 |
轉載于:https://www.cnblogs.com/zengmiaogen/archive/2012/04/15/2450379.html
總結
以上是生活随笔為你收集整理的forward、redirect、浏览器的路径问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQL语句从入门到精通之笔记大全
- 下一篇: [ACM_NYOJ_21]三个水杯(BF