新聞中心
前言
當(dāng)用戶向服務(wù)器發(fā)送了一次HTTP請求,該請求可能會經(jīng)過多個信息資源處理以后才返回給用戶,各個信息資源使用請求轉(zhuǎn)發(fā)機制相互轉(zhuǎn)發(fā)請求,但是用戶是感覺不到請求轉(zhuǎn)發(fā)的。根據(jù)轉(zhuǎn)發(fā)方式的不同,可以區(qū)分為直接請求轉(zhuǎn)發(fā)(Forward)和間接請求轉(zhuǎn)發(fā)(Redirect),那么這兩種轉(zhuǎn)發(fā)方式有何區(qū)別呢?本篇在回答該問題的同時全面的講解兩種請求轉(zhuǎn)發(fā)方式的原理和區(qū)別。
【關(guān)鍵考點】
•請求轉(zhuǎn)發(fā)的含義;
•Forward轉(zhuǎn)發(fā)請求的原理;
•Redirect轉(zhuǎn)發(fā)請求的原理。
【考題分析】
Forward和Redirect代表了兩種請求轉(zhuǎn)發(fā)方式:直接轉(zhuǎn)發(fā)和間接轉(zhuǎn)發(fā)。
直接轉(zhuǎn)發(fā)方式(Forward),客戶端和瀏覽器只發(fā)出一次請求,Servlet、HTML、JSP或其它信息資源,由第二個信息資源響應(yīng)該請求,在請求對象request中,保存的對象對于每個信息資源是共享的。
間接轉(zhuǎn)發(fā)方式(Redirect)實際是兩次HTTP請求,服務(wù)器端在響應(yīng)第一次請求的時候,讓瀏覽器再向另外一個URL發(fā)出請求,從而達到轉(zhuǎn)發(fā)的目的。
舉個通俗的例子:
直接轉(zhuǎn)發(fā)就相當(dāng)于:“A找B借錢,B說沒有,B去找C借,借到借不到都會把消息傳遞給A”;
間接轉(zhuǎn)發(fā)就相當(dāng)于:"A找B借錢,B說沒有,讓A去找C借"。
下面詳細(xì)闡述一下兩者的原理:
一:間接請求轉(zhuǎn)發(fā)(Redirect)
間接轉(zhuǎn)發(fā)方式,有時也叫重定向,它一般用于避免用戶的非正常訪問。例如:用戶在沒有登錄的情況下訪問后臺資源,Servlet可以將該HTTP請求重定向到登錄頁面,讓用戶登錄以后再訪問。在Servlet中,通過調(diào)用response對象的SendRedirect()方法,告訴瀏覽器重定向訪問指定的URL,示例代碼如下:
...... //Servlet中處理get請求的方法 public void doGet(HttpServletRequest request,HttpServletResponse response){ //請求重定向到另外的資源 response.sendRedirect("資源的URL"); } ........
本文題目:JAVA面試題之Forward與Redirect的區(qū)別詳解-創(chuàng)新互聯(lián)
當(dāng)前鏈接:http://www.dlmjj.cn/article/cchjop.html