Servlet中的兩種跳轉方法:

方法一:response.sendRedirect("../success.jsp")
利用這個方法如果跳轉前有request.setAttribute("a","b")的話,那麼參數是傳不到success.jsp,因爲它在客戶端重定向到success.jsp了,本質上跳了2次。所以參數失效,使用這個的時候會發現瀏覽器的URL地址發生了變化。
方法二:RequestDispatcher  rd  =  getServletContext().getRequestDispatcher("/login.jsp");  rd.forward(request,response); 利用這個方法跳轉,參數可以被正確傳送,而且效率比第一種高,IE的URL地址不變。
 
 在什麼地方用就是看自己的需求了。具體問題具體分析。
 
    response.sendRedirect=把地址發送到瀏覽器端,讓瀏覽器再請求,這是地址欄變的原因
request.getRequestDispatcher().forward=服務端的控制權轉向,等於從一個servletClass跳到另一個servletClass或jsp繼續運行,最後才返回所有的結果,所以地址欄不會變
request中attribute與parameter的有效期是在一次請求後,而實際使用第一種情況後發生了再次請求,所以是attribute與parameter丟失的原因。
效率上講1肯定不如2,但有時候你必須得用1,其他時候用2即可。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章