request.getRequestDispatcher()的兩個方法forward()/include()!!!

RequestDispatcher rd = request.getRequestDispatcher("/MyServlet");
請求轉發: rd.forward( request , response );
請求包含: rd.include( request , response );

有時一個請求需要多個Servlet協作才能完成,所以需要在一個Servlet跳到另一個Servlet!
>一個請求跨多個Servlet,需要使用轉發和包含。
>請求轉發:由下一個Servlet完成響應體!當前Servlet可以設置響應頭!(留頭不留體)
>請求包含:由兩個Servlet共同完成響應體!(留頭又留體)
>無論是請求轉發還是請求包含,都在一個請求範圍內!使用同一個request和response!

request域
   void setAttribute(String name ,Object value)
   Object getAttribute(String name)
   >同一個請求範圍內使用request.setAttribute()/request.getAttribute()來傳值!前一個Servlet調用setAttribute()保存值,後一個Servlet調用getAttribute()獲取值;

請求轉發和重定向的區別:
>請求轉發是一個請求一次響應,而重定向是兩次請求兩次響應。
>請求轉發地址不變化,而重定向會顯示後一個請求的地址
>請求轉發只能轉發到本項目其它Servlet,而重定向不只能重定向到本項目的其它Servlet,還能定向到其它項目
>請求轉發是服務端行爲,只需給出轉發的Servlet路徑,而重定向需要給出requestURI,既包含項目名!

 

來自網易博客:http://jamkong.blog.163.com/blog/static/2361940132014101841545703/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章