- 相關(guān)推薦
forward和redirect的區(qū)別
Forward和Redirect代表了兩種請(qǐng)求轉(zhuǎn)發(fā)方式:直接轉(zhuǎn)發(fā)和間接轉(zhuǎn)發(fā)。對(duì)應(yīng)到代碼里,分別是RequestDispatcher類的forward()方法和HttpServletRequest類的sendRedirect()方法。本文是大學(xué)網(wǎng)unjs.com小編精心收集的forward和redirect相關(guān)內(nèi)容,僅供參考!
redirect - 中文名:重定向
structs進(jìn)行葉面跳轉(zhuǎn)的方法有兩個(gè),forward和redirect(其實(shí)不單是structs,幾乎所有的web開(kāi)發(fā)都是)
forward簡(jiǎn)單來(lái)說(shuō)就是在服務(wù)器端完成葉面跳轉(zhuǎn),服務(wù)端從A頁(yè)forward到B頁(yè),對(duì)于客戶端來(lái)說(shuō)一直都在訪問(wèn)A頁(yè),不知道有個(gè)B頁(yè)存在(所以structs幾乎把所有的jsp文件藏起來(lái),客戶端地址欄看不到j(luò)sp,就是因?yàn)閟tructs的大部分jsp頁(yè)都是在Action里面通過(guò)forward跳轉(zhuǎn))。
redirect就容易理解的多了,從A頁(yè)forward到B頁(yè),服務(wù)端告訴客戶端,你要從A跳到B,由客戶端發(fā)出指揮,所以客戶端地址欄看到從A頁(yè)變成B頁(yè)了。
forward和redirect的區(qū)別
【出現(xiàn)頻率】 經(jīng)常出現(xiàn) 五顆星
【關(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)于:“張三找李四借錢(qián),李四說(shuō)沒(méi)有,李四去找王五借,借到借不到都會(huì)把消息傳遞給張三”;
間接轉(zhuǎn)發(fā)就相當(dāng)于:"張三找李四借錢(qián),李四說(shuō)沒(méi)有,讓張三去找王五借"。
下面詳細(xì)闡述一下兩者的原理:
一、間接請(qǐng)求轉(zhuǎn)發(fā)(Redirect)
間接轉(zhuǎn)發(fā)方式,有時(shí)也叫重定向,它一般用于避免用戶的非正常訪問(wèn)。例如:用戶在沒(méi)有登錄的情況下訪問(wèn)后臺(tái)資源,Servlet可以將該HTTP請(qǐng)求重定向到登錄頁(yè)面,讓用戶登錄以后再訪問(wèn)。在Servlet中,通過(guò)調(diào)用response對(duì)象的SendRedirect()方法,告訴瀏覽器重定向訪問(wèn)指定的URL,示例代碼如下:
上圖所示的間接轉(zhuǎn)發(fā)請(qǐng)求的過(guò)程如下:
1、瀏覽器向Servlet1發(fā)出訪問(wèn)請(qǐng)求;
2、Servlet1調(diào)用sendRedirect()方法,將瀏覽器重定向到Servlet2;
3、瀏覽器向servlet2發(fā)出請(qǐng)求;
4、最終由Servlet2做出響應(yīng)。
二、直接請(qǐng)求轉(zhuǎn)發(fā)(Forword)
直接轉(zhuǎn)發(fā)方式用的更多一些,一般說(shuō)的請(qǐng)求轉(zhuǎn)發(fā)指的就是直接轉(zhuǎn)發(fā)方式。Web應(yīng)用程序大多會(huì)有一個(gè)控制器。由控制器來(lái)控制請(qǐng)求應(yīng)該轉(zhuǎn)發(fā)給那個(gè)信息資源。然后由這些信息資源處理請(qǐng)求,處理完以后還可能轉(zhuǎn)發(fā)給另外的'信息資源來(lái)返回給用戶,這個(gè)過(guò)程就是經(jīng)典的MVC模式。
javax.serlvet.RequestDispatcher接口是請(qǐng)求轉(zhuǎn)發(fā)器必須實(shí)現(xiàn)的接口,由Web容器為Servlet提供實(shí)現(xiàn)該接口的對(duì)象,通過(guò)調(diào)用該接口的forward()方法到達(dá)請(qǐng)求轉(zhuǎn)發(fā)的目的,示例代碼如下:
上圖所示的直接轉(zhuǎn)發(fā)請(qǐng)求的過(guò)程如下:
1、瀏覽器向Servlet1發(fā)出訪問(wèn)請(qǐng)求;
2、Servlet1調(diào)用forward()方法,在服務(wù)器端將請(qǐng)求轉(zhuǎn)發(fā)給Servlet2;
3、最終由Servlet2做出響應(yīng)。
技巧:其實(shí),通過(guò)瀏覽器就可以觀察到服務(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ā)。相反,如果地址沒(méi)有發(fā)生變化,則代表的是直接請(qǐng)求轉(zhuǎn)發(fā)或者沒(méi)有轉(zhuǎn)發(fā)。
問(wèn):直接轉(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ì)象。
[forward和redirect的區(qū)別]相關(guān)文章:
1.JavaWeb筆試題黑馬程序員
2.javaee面試題專家總結(jié)
3.張孝祥java面試題4
4.java程序員面試之葵花寶典
【forward和redirect的區(qū)別】相關(guān)文章:
whether和if的區(qū)別11-17
環(huán)比和同比的區(qū)別08-19
精油和香水的區(qū)別08-31
香精和香水的區(qū)別09-13
唇膏和唇彩的區(qū)別07-28
創(chuàng)業(yè)和打工的區(qū)別?06-28
白醋和醋精的區(qū)別06-23
月季和玫瑰的區(qū)別07-14
律詩(shī)和絕句的區(qū)別09-05