1. 程式人生 > >請求轉發的forward , include 的區別

請求轉發的forward , include 的區別

nRequestDispatcher.forward()方法

RequestDispatcher介面所定義的forward()方法可以將HTTP請求轉送給其他Web資源(例如ServletJSPHTML)進行處理,併產生HTTP迴應。

呼叫forward()方法時必須注意下列兩點:

nHTTP迴應被“確認”(committed)以前才能呼叫forward()方法(這裡的“確認”是指將HTTP迴應的內容主體送回使用者端),否則將丟擲IllegalStateException異常。

n呼叫forward()方法後,原先存放在HttpResponse物件中的內容將會自動被清除(本章稍後的例項演練

2-3將探討此議題)。

nRequestDispatcher.include()方法

RequestDispatcher介面的include()方法與forward()方法非常類似,惟一的不同在於:利用include()方法將HTTP請求轉送給其他Servlet後,被呼叫的Servlet雖然可以處理這個HTTP請求,但是最後的主導權仍然是在原來的Servlet。換言之,被呼叫的Servlet如果產生任何HTTP迴應,將會併入原來的HttpResponse物件

簡單的說:

forward方法是把請求的內容轉發到另外的一個servlet/jsp.
include是把另一個servlet/jsp處理過後的內容拿過來與此時servlet的內容一同輸出.