1. 程式人生 > >Servlet頁面跳轉的URL拼接問題

Servlet頁面跳轉的URL拼接問題

  不用Servlet進行開發時間太久,關於其用法的部分知識容易忘記,最近在一個培訓機構做助理教師的時候才重新溫習了一下Servlet的知識,不得不說學習Servlet確實是我們學習

框架知識的一個基礎。

  由於經常被問到常常出現的404錯誤,我總結了一下出現的緣由:servlet跳轉和頁面跳轉中相對路徑與絕對路徑跳轉時URL自動拼接的路徑問題。

 1.絕對路徑:

 a.請求轉發:★ HttpServletRequest.getRequestDispatcher(String).forward(request,response)  

    如請求的絕對路徑為:“/user/queryUser.do”,

頁面跳轉的路徑是由容器相對於Web應用的根目錄(例如:http://localhost:8080/myweb)加上絕對路徑生成URL為:

    http://localhost:8080/myweb/user/queryUser.do,即請求為request.getRequestDispatcher(" / user/queryUser.do")生成的URL為http://localhost:8080/myweb/user/queryUser.do;

 b.重定向:★ HttpServletResponse.sendRedirect(String)

如請求的絕對路徑為“/user/queryUser.do”,頁面跳轉的路徑是由容器相對於Web應用本身參與URL生成:

http://localhost:8080/myweb/queryUser.do即請求為:

reponse.sendRedirect("/user/queryUser.do"),生成的URL為http://localhost:8080/myweb/queryUser.do;

2.相對路徑:

a.請求轉發:★ HttpServletRequest.getRequestDispatcher(String).forward(request,response)  

如請求的相對路徑為:"user/queryUser.do",頁面跳轉的路徑是容器相對於原來請求URL目錄(例如:Http://localhost:8080/myweb/admin/queryAdmin.do

)加引數來

生成完整URL為:Http://localhost:8080/myweb/admin/user/queryUser.do,可以注意到user目錄加到了admin後邊,在寫程式的時候需要注意

b.重定向:★ HttpServletResponse.sendRedirect(String) 與請求轉發一樣。