成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

JAVA面試題之Forward與Redirect的區(qū)別詳解

前言

在昭平等地區(qū),都構建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產品創(chuàng)新能力,以專注、極致的服務理念,為客戶提供成都網(wǎng)站制作、成都做網(wǎng)站 網(wǎng)站設計制作按需制作,公司網(wǎng)站建設,企業(yè)網(wǎng)站建設,成都品牌網(wǎng)站建設,營銷型網(wǎng)站建設,外貿網(wǎng)站建設,昭平網(wǎng)站建設費用合理。

當用戶向服務器發(fā)送了一次HTTP請求,該請求可能會經過多個信息資源處理以后才返回給用戶,各個信息資源使用請求轉發(fā)機制相互轉發(fā)請求,但是用戶是感覺不到請求轉發(fā)的。根據(jù)轉發(fā)方式的不同,可以區(qū)分為直接請求轉發(fā)(Forward)和間接請求轉發(fā)(Redirect),那么這兩種轉發(fā)方式有何區(qū)別呢?本篇在回答該問題的同時全面的講解兩種請求轉發(fā)方式的原理和區(qū)別。

【關鍵考點】

       •請求轉發(fā)的含義;

      •Forward轉發(fā)請求的原理;

      •Redirect轉發(fā)請求的原理。

【考題分析】

Forward和Redirect代表了兩種請求轉發(fā)方式:直接轉發(fā)和間接轉發(fā)。

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

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

舉個通俗的例子:

直接轉發(fā)就相當于:“A找B借錢,B說沒有,B去找C借,借到借不到都會把消息傳遞給A”;

間接轉發(fā)就相當于:"A找B借錢,B說沒有,讓A去找C借"。

下面詳細闡述一下兩者的原理:

一:間接請求轉發(fā)(Redirect)

間接轉發(fā)方式,有時也叫重定向,它一般用于避免用戶的非正常訪問。例如:用戶在沒有登錄的情況下訪問后臺資源,Servlet可以將該HTTP請求重定向到登錄頁面,讓用戶登錄以后再訪問。在Servlet中,通過調用response對象的SendRedirect()方法,告訴瀏覽器重定向訪問指定的URL,示例代碼如下: 

......
//Servlet中處理get請求的方法
public void doGet(HttpServletRequest request,HttpServletResponse response){
//請求重定向到另外的資源
 response.sendRedirect("資源的URL");
}
........

JAVA面試題之Forward與Redirect的區(qū)別詳解              

上圖所示的間接轉發(fā)請求的過程如下:

       1.瀏覽器向Servlet1發(fā)出訪問請求;

       2.Servlet1調用sendRedirect()方法,將瀏覽器重定向到Servlet2;

       3.瀏覽器向servlet2發(fā)出請求;

       4.最終由Servlet2做出響應。

二:直接請求轉發(fā)(Forward)

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

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

......
 //Servlet里處理get請求的方法
 public void doGet(HttpServletRequest request , HttpServletResponse response){
  //獲取請求轉發(fā)器對象,該轉發(fā)器的指向通過getRequestDisPatcher()的參數(shù)設置
 RequestDispatcher requestDispatcher =request.getRequestDispatcher("資源的URL");
 //調用forward()方法,轉發(fā)請求  
 requestDispatcher.forward(request,response); 
}
......

JAVA面試題之Forward與Redirect的區(qū)別詳解       

上圖所示的直接轉發(fā)請求的過程如下:

      1.瀏覽器向Servlet1發(fā)出訪問請求;

      2.Servlet1調用forward()方法,在服務器端將請求轉發(fā)給Servlet2;

      3.最終由Servlet2做出響應。

技巧:其實,通過瀏覽器就可以觀察到服務器端使用了那種請求轉發(fā)方式,當單擊某一個超鏈接時,瀏覽器的地址欄會出現(xiàn)當前請求的地址,如果服務器端響應完成以后,發(fā)現(xiàn)地址欄的地址變了,則證明是間接的請求轉發(fā)。相反,如果地址沒有發(fā)生變化,則代表的是直接請求轉發(fā)或者沒有轉發(fā)。

問:直接轉發(fā)和間接轉發(fā)的原理及區(qū)別是什么?

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

對于間接方式,服務器端在響應第一次請求的時候,讓瀏覽器再向另外一個URL發(fā)出請求,從而達到轉發(fā)的目的。它本質上是兩次HTTP請求,對應兩個request對象。

對于直接方式,客戶端瀏覽器只發(fā)出一次請求,Servlet把請求轉發(fā)給Servlet、HTML、JSP或其它信息資源,由第2個信息資源響應該請求,兩個信息資源共享同一個request對象。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對創(chuàng)新互聯(lián)的支持。最后,祝大家都能找到一個稱心滿意的工作!

本文題目:JAVA面試題之Forward與Redirect的區(qū)別詳解
當前網(wǎng)址:http://jinyejixie.com/article18/pgipgp.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設、網(wǎng)頁設計公司、移動網(wǎng)站建設、外貿建站、靜態(tài)網(wǎng)站、網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)
凌云县| 新干县| 卓尼县| 博湖县| 姜堰市| 河津市| 峨山| 乳源| 遂溪县| 石狮市| 巧家县| 玛纳斯县| 金塔县| 墨竹工卡县| 西华县| 和林格尔县| 昌吉市| 兴城市| 邵东县| 馆陶县| 天长市| 唐河县| 麟游县| 清原| 抚远县| 沅江市| 蒙山县| 边坝县| 龙海市| 静安区| 慈溪市| 怀安县| 两当县| 金川县| 高密市| 乐亭县| 白河县| 陆丰市| 公主岭市| 静宁县| 四子王旗|