一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術|正則表達式|

服務器之家 - 編程語言 - JAVA教程 - JAVA面試題之Forward與Redirect的區別詳解

JAVA面試題之Forward與Redirect的區別詳解

2020-09-28 13:27阿赫瓦里 JAVA教程

這篇文章主要給大家介紹了在JAVA面試中可能遇到會遇到的一道題,就是java中Forward與Redirect兩者之前的區別,文中介紹的非常詳細,對大家具有一定參考學習價值,需要的朋友們下面來一起看看吧。

前言

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

【關鍵考點】

       •請求轉發的含義;

      •Forward轉發請求的原理;

      •Redirect轉發請求的原理。

【考題分析】

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

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

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

舉個通俗的例子:

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

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

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

一:間接請求轉發(Redirect)

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

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

JAVA面試題之Forward與Redirect的區別詳解              

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

       1.瀏覽器向Servlet1發出訪問請求;

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

       3.瀏覽器向servlet2發出請求;

       4.最終由Servlet2做出響應。

二:直接請求轉發(Forward)

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

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

?
1
2
3
4
5
6
7
8
9
......
 //Servlet里處理get請求的方法
 public void doGet(HttpServletRequest request , HttpServletResponse response){
  //獲取請求轉發器對象,該轉發器的指向通過getRequestDisPatcher()的參數設置
 RequestDispatcher requestDispatcher =request.getRequestDispatcher("資源的URL");
 //調用forward()方法,轉發請求 
 requestDispatcher.forward(request,response);
}
......

JAVA面試題之Forward與Redirect的區別詳解         

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

      1.瀏覽器向Servlet1發出訪問請求;

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

      3.最終由Servlet2做出響應。

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

問:直接轉發和間接轉發的原理及區別是什么?

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

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

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

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對服務器之家的支持。最后,祝大家都能找到一個稱心滿意的工作!

原文鏈接:http://www.cnblogs.com/selene/p/4518246.html#_label0

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产精品一级片 | 亚洲欧美日韩高清 | 国产播放器一区 | 3d动漫美女被吸乳羞羞有 | 从后面撕开老师的丝袜动态图 | 91视频综合网 | 免费全看男女拍拍拍的视频 | 3d美女触手怪爆羞羞漫画 | 黄漫在线播放 | 亚洲国产99在线精品一区69堂 | 第一福利在线观看永久视频 | 日本伦理动漫在线观看 | 日韩国产欧美视频 | 亚洲女性色尼古综合网 | 91精品国产综合久久消防器材 | 扒开女人下面使劲桶屁股动漫 | 四虎最新免费网址 | 手机在线免费观看日本推理片 | 俄罗斯美女破苞 | 国产视频播放 | 日本视频免费在线 | 亚洲国产精品嫩草影院久久 | 亚洲视频在线观看不卡 | 30分钟的高清视频在线观看 | 国产aaa毛片 | 卫生间被教官做好爽HH视频 | 出轨同学会2在线观看 | 亚洲AV无码乱码国产麻豆穿越 | 国产午夜成人无码免费看 | 性关系视频免费网站在线观看 | 非洲黑人gay巨大 | 欧洲女同同性videos0 | 日韩aaa| 香蕉国产精品偷在线播放 | 亚色九九九全国免费视频 | 午夜欧美精品久久久久久久久 | 高清国产精品久久久久 | 国产午夜精品一区二区三区不卡 | 99er热| 国产欧美精品一区二区三区–老狼 | 鸥美三级|