首頁 >Java >java教程 >java中forward是什麼

java中forward是什麼

(*-*)浩
(*-*)浩原創
2019-05-22 20:03:338485瀏覽

java中,forward指的是「直接轉送方式」。對於直接方式,客戶端瀏覽器只發出一次請求,Servlet把請求轉發給Servlet、HTML、JSP或其它信息資源,由第二個信息資源響應該請求,在請求對象request中,保存的對象對於每個資訊資源是共享的。

java中forward是什麼

用戶向伺服器發送了一次HTTP請求,該請求可能會經過多個資訊資源處理以後才傳回給用戶,各個資訊資源使用請求轉送機制相互轉送請求,但是使用者是感覺不到請求轉送的。根據轉送方式的不同,可以區分為直接請求轉送(Forward)和間接請求轉送(Redirect)。

直接轉發方式(Forward),客戶端和瀏覽器只發出一次請求,Servlet、HTML、JSP或其它資訊資源,由第二個資訊資源回應該請求,在請求物件request中,保存的物件對於每個資訊資源是共享的。

間接轉發方式(Redirect)實際上是兩次HTTP請求,伺服器端在回應第一次請求的時候,讓瀏覽器再向另外一個URL發出請求,從而達到轉發的目的。

舉個通俗的例子:

直接轉發就相當於:「A找B借錢,B說沒有,B去找C借,借到借不到都會把訊息傳遞給A」;

間接轉發就相當於:「A找B借錢,B說沒有,讓A去找C借」。

詳解直接轉送方式(Forward)

直接轉送方式用的更多一些,一般說的請求轉送指的就是直接轉送方式。 Web應用程式大多會有一個控制器。由控制器來控制請求應該轉發給那個資訊資源。然後由這些資訊資源處理請求,處理完以後還可能轉發給另外的資訊資源來回傳給用戶,這個過程就是經典的MVC模式。

javax.serlvet.RequestDispatcher接口是請求轉發器必須實現的接口,由Web容器為Servlet提供實現該接口的對象,通過調用該接口的forward()方法到達請求轉發的目的,示例代碼如下:

......
    //Servlet里处理get请求的方法
 public void doGet(HttpServletRequest request , HttpServletResponse response){
     //获取请求转发器对象,该转发器的指向通过getRequestDisPatcher()的参数设置
   RequestDispatcher requestDispatcher =request.getRequestDispatcher("资源的URL");
    //调用forward()方法,转发请求      
   requestDispatcher.forward(request,response);    
}......

java中forward是什麼

上圖所示的直接轉送請求的程序如下:

  • 瀏覽器向Servlet1發出存取請求;

  • Servlet1呼叫forward()方法,在伺服器端將請求轉送給Servlet2;

  • 最終由Servlet2回應。

技巧:其實,透過瀏覽器就可以觀察到伺服器端使用了那種請求轉發方式,當點擊某一個超連結時,瀏覽器的網址列會出現當前請求的位址,如果伺服器端回應完成以後,發現網址列的位址變了,證明是間接的請求轉送。相反,如果位址沒有發生變化,則代表的是直接請求轉送或沒有轉送。

擴充資料:

直接轉送和間接轉送的原理及差異是什麼?

答案:Forward和Redirect代表了兩種請求轉送方式:直接轉送和間接轉送。對應到程式碼裡,分別是RequestDispatcher類別的forward()方法和HttpServletRequest類別的sendRedirect()方法。

對於間接方式,伺服器端在回應第一次請求的時候,讓瀏覽器再向另外一個URL發出請求,從而達到轉發的目的。它本質上是兩次HTTP請求,對應兩個request物件。

對於直接方式,客戶端瀏覽器只會發出一次請求,Servlet把請求轉發給Servlet、HTML、JSP或其它資訊資源,由第2個資訊資源回應該請求,兩個資訊資源共用同一個request物件。

以上是java中forward是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn