最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2017年05月10日 11:49:17   作者:阿赫瓦里  
這篇文章主要給大家介紹了在JAVA面試中可能遇到會(huì)遇到的一道題,就是java中Forward與Redirect兩者之前的區(qū)別,文中介紹的非常詳細(xì),對(duì)大家具有一定參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。

前言

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

【關(guān)鍵考點(diǎn)】

       •請(qǐng)求轉(zhuǎn)發(fā)的含義;

      •Forward轉(zhuǎn)發(fā)請(qǐng)求的原理;

      •Redirect轉(zhuǎn)發(fā)請(qǐng)求的原理。

【考題分析】

  Forward和Redirect代表了兩種請(qǐng)求轉(zhuǎn)發(fā)方式:直接轉(zhuǎn)發(fā)和間接轉(zhuǎn)發(fā)。

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

  間接轉(zhuǎn)發(fā)方式(Redirect)實(shí)際是兩次HTTP請(qǐng)求,服務(wù)器端在響應(yīng)第一次請(qǐng)求的時(shí)候,讓瀏覽器再向另外一個(gè)URL發(fā)出請(qǐng)求,從而達(dá)到轉(zhuǎn)發(fā)的目的。

舉個(gè)通俗的例子:

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

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

下面詳細(xì)闡述一下兩者的原理:

一:間接請(qǐng)求轉(zhuǎn)發(fā)(Redirect)

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

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

              

上圖所示的間接轉(zhuǎn)發(fā)請(qǐng)求的過程如下:

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

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

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

       4.最終由Servlet2做出響應(yīng)。

二:直接請(qǐng)求轉(zhuǎn)發(fā)(Forward)

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

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

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

         

上圖所示的直接轉(zhuǎn)發(fā)請(qǐng)求的過程如下:

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

      2.Servlet1調(diào)用forward()方法,在服務(wù)器端將請(qǐng)求轉(zhuǎn)發(fā)給Servlet2;

      3.最終由Servlet2做出響應(yīng)。

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

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

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

  對(duì)于間接方式,服務(wù)器端在響應(yīng)第一次請(qǐng)求的時(shí)候,讓瀏覽器再向另外一個(gè)URL發(fā)出請(qǐng)求,從而達(dá)到轉(zhuǎn)發(fā)的目的。它本質(zhì)上是兩次HTTP請(qǐng)求,對(duì)應(yīng)兩個(gè)request對(duì)象。

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

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。最后,祝大家都能找到一個(gè)稱心滿意的工作!

相關(guān)文章

  • Java中List根據(jù)map的某個(gè)key去重的代碼

    Java中List根據(jù)map的某個(gè)key去重的代碼

    今天小編就為大家分享一篇關(guān)于Java中List根據(jù)map的某個(gè)key去重的代碼,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • IDEA中GitLab的使用詳解

    IDEA中GitLab的使用詳解

    這篇文章主要介紹了IDEA中GitLab的使用,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-07-07
  • mybatis攔截器注冊(cè)初始化編寫示例及如何生效詳解

    mybatis攔截器注冊(cè)初始化編寫示例及如何生效詳解

    這篇文章主要為大家介紹了mybatis攔截器注冊(cè)初始化編寫示例及如何生效詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • Spring Boot 日志概念及使用詳解

    Spring Boot 日志概念及使用詳解

    文章介紹了日志的重要性、日志格式、日志使用方法、日志級(jí)別、日志配置、日志持久化以及使用Lombok簡(jiǎn)化日志輸出,感興趣的朋友一起看看吧
    2025-03-03
  • Spring Boot環(huán)境屬性占位符解析及類型轉(zhuǎn)換詳解

    Spring Boot環(huán)境屬性占位符解析及類型轉(zhuǎn)換詳解

    這篇文章主要給大家介紹了關(guān)于Spring Boot環(huán)境屬性占位符解析及類型轉(zhuǎn)換的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-08-08
  • java基于正則表達(dá)式實(shí)現(xiàn)時(shí)間日期的常用判斷操作實(shí)例

    java基于正則表達(dá)式實(shí)現(xiàn)時(shí)間日期的常用判斷操作實(shí)例

    這篇文章主要介紹了java基于正則表達(dá)式實(shí)現(xiàn)時(shí)間日期的常用判斷操作,簡(jiǎn)單說明了正則表達(dá)式常用元字符含義并結(jié)合實(shí)例形式分析了java基于正則表達(dá)式針對(duì)常用日期時(shí)間格式的判斷操作技巧,需要的朋友可以參考下
    2017-10-10
  • windows系統(tǒng)使用mvn命令打包并指定jdk路徑方式

    windows系統(tǒng)使用mvn命令打包并指定jdk路徑方式

    這篇文章主要介紹了windows系統(tǒng)使用mvn命令打包并指定jdk路徑方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • Json字符串與Object、List、Map的互轉(zhuǎn)工具類

    Json字符串與Object、List、Map的互轉(zhuǎn)工具類

    今天小編就為大家分享一篇關(guān)于Json字符串與Object、List、Map的互轉(zhuǎn)工具類,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • SpringBoot測(cè)試時(shí)卡在Resolving Maven dependencies的問題

    SpringBoot測(cè)試時(shí)卡在Resolving Maven dependencies的問題

    這篇文章主要介紹了SpringBoot測(cè)試時(shí)卡在Resolving Maven dependencies的問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • JMM核心概念之Happens-before原則

    JMM核心概念之Happens-before原則

    關(guān)于Java并發(fā)的通信機(jī)制是基于共享內(nèi)存實(shí)現(xiàn)的,線程之間共享程序的公共狀態(tài),通過寫-讀內(nèi)存中的公共狀態(tài)進(jìn)行隱式通信,這對(duì)程序員是透明的,我們需要理解其工作機(jī)制,以防止內(nèi)存可見性問題,從而編寫出正確同步的代碼
    2021-06-06

最新評(píng)論

广饶县| 贵港市| 娱乐| 白朗县| 攀枝花市| 阜南县| 龙陵县| 海盐县| 永登县| 花垣县| 卢湾区| 萨嘎县| 云和县| 宁化县| 阿拉善盟| 鲁山县| 门源| 鞍山市| 伊吾县| 亳州市| 嘉荫县| 德昌县| 鱼台县| 津南区| 越西县| 如皋市| 通州市| 丽水市| 米林县| 潼关县| 甘德县| 凤山县| 岳阳市| 夏邑县| 济阳县| 拉萨市| 松潘县| 隆化县| 浪卡子县| 无锡市| 泽普县|