天天看點

servlet 之forward和sendRedirect跳轉

servlet 之forward和sendRedirect跳轉

servlet的跳轉分為用戶端的跳轉和伺服器端的跳轉。

1.      用戶端的跳轉

          在servlet中用戶端的跳轉是通過httpservletresponse的sendRedirect()跳轉。

          但次跳轉隻能傳遞session範圍的屬性,無法傳遞request範圍的屬性。如:request.setAttribute(“info”,”name”);其中,info的跳轉後為null。

          例如:response.sendRedirect(“login.jsp”);

          用戶端的跳轉:跳轉後位址欄會發生改變,隻能接受session屬性的範圍的内容,request屬性範圍的内容無法接收到,這是應為request屬性範圍隻有在伺服器端跳轉中才可以使用。

2.      伺服器端的跳轉

         在servlet中沒有像jsp中的<jsp:forward>指令,是以先要執行伺服器端的跳轉,就必須依靠RequestDispatcher借口完成,此接口提供了兩個方法:

            forward(servletRequestrequest, servletResponse response)和include(servletRequestrequest, servletResponse response)。使用RequestDispatcher借口的forward()方法即可完成跳轉功能的實作,但是如果想要使用ServletRequest接口提供的publicRequestDispatcher getRequestDispatcher(String path) 的方法進行執行個體化。

例如:RequestDispatcherrd = request.getRequestDispatcher(‘’login.jsp”);

re.forward(request,response); 伺服器端跳轉後,頁面的路徑不會發生變化,而且此時可以在跳轉後的jsp檔案中接受session及request範圍的屬性。

繼續閱讀