1. 程式人生 > >request轉發與response重定向(面試題)

request轉發與response重定向(面試題)

請求轉發指的就是伺服器內的資源的跳轉,請求轉發時,就會形成一個請求鏈,它們共享同一個request與response物件。也就是說,它們之間就存在一個request域。
要想實現請求轉發可以通過request物件的getRequestDispatcher方法得到一個RequestDispatcher物件,呼叫這個物件的forward方法來實現。

  1. 請求轉發是伺服器的內部跳轉,所以瀏覽器位址列上的路徑沒有改變
    重定向時因為會從瀏覽器在次傳送請求,所有位址列會改變

  2. 請求轉發它只有一次請求一次響應,而重定向它是兩次請求兩次響應

  3. 請求轉發它存在request域,資源間使用的是同一個request,而重定向它使用的是不是同一個request.
  4. 請求轉發它是伺服器內部跳轉,也就是說,只能跳轉到站內資源
    而重定向可以跳轉任意資源
  5. 請求轉發的實現是靠request物件
    request.getRequestDispathcher(“路徑”).forward(request,response);
    而重定向
    response.sendRedirect(“路徑”);
    6.請求轉發時它的路徑寫法是 直接就是資源路徑,簡單說url-pattern值,也就是說在請求轉發時它的”/”其實代表的就是當前工程了。而重定向它的路徑寫法是 “/工程名”+url-pattern值,也就是說,當重定向時,我們所使用的是”/”它代表的是tomcat的根路徑.
    簡單說,請求轉發與重定向它的路徑區別就在於是否多一個工程名
    請求轉發 /資源路徑
    重定向 /工程名/資源路徑
    //請求轉發
    request.getRequestDispatcher(“轉發的站內路徑”).forward(request, response);
    //重定向
    response.sendRedirect(“”);