請求轉發、重定向、請求包含的比較
一、請求轉發與請求包含比較
1,如果在AServlet中請求轉發到BServlet,那麼在AServlet中就不允許再輸出響應體,即不能再使用response.getWriter()和response.getOutputStream()向用戶端輸出,這一工作應該由BServlet來完成;如果是使用請求包含,那麼沒有這個限制;
2,請求轉發雖然不能輸出響應體,但還是可以設定響應頭的,例如:response.setContentType(”text/html;charset=utf-8”);
3,請求包含大多是應用在JSP頁面中,完成多頁面的合并;
4,請求轉發大多是應用在Servlet中,轉發目标大多是JSP頁面;
二、請求轉發與重定向比較
1 請求轉發是一個請求,而重定向是兩個請求;
2 請求轉發後浏覽器位址欄不會有變化,而重定向會有變化,因為重定向是兩個請求;
3 請求轉發的目标隻能是本應用中的資源,重定向的目标可以是其他應用;
4 請求轉發對AServlet和BServlet的請求方法是相同的,即要麼都是GET,要麼都是POST,因為請求轉發是一個請求;
5 重定向的第二個請求一定是GET;