在
java中,forward指的是「直接轉送方式」。對於直接方式,客戶端瀏覽器只發出一次請求,Servlet把請求轉發給Servlet、HTML、JSP或其它信息資源,由第二個信息資源響應該請求,在請求對象request中,保存的對象對於每個資訊資源是共享的。
用戶向伺服器發送了一次HTTP請求,該請求可能會經過多個資訊資源處理以後才傳回給用戶,各個資訊資源使用請求轉送機制相互轉送請求,但是使用者是感覺不到請求轉送的。根據轉送方式的不同,可以區分為直接請求轉送(Forward)和間接請求轉送(Redirect)。
直接轉發方式(Forward),客戶端和瀏覽器只發出一次請求,Servlet、HTML、JSP或其它資訊資源,由第二個資訊資源回應該請求,在請求物件request中,保存的物件對於每個資訊資源是共享的。
間接轉發方式(Redirect)實際上是兩次HTTP請求,伺服器端在回應第一次請求的時候,讓瀏覽器再向另外一個URL發出請求,從而達到轉發的目的。
舉個通俗的例子:
直接轉發就相當於:「A找B借錢,B說沒有,B去找C借,借到借不到都會把訊息傳遞給A」;
間接轉發就相當於:「A找B借錢,B說沒有,讓A去找C借」。
詳解直接轉送方式(Forward)
直接轉送方式用的更多一些,一般說的請求轉送指的就是直接轉送方式。 Web應用程式大多會有一個控制器。由控制器來控制請求應該轉發給那個資訊資源。然後由這些資訊資源處理請求,處理完以後還可能轉發給另外的資訊資源來回傳給用戶,這個過程就是經典的MVC模式。
javax.serlvet.RequestDispatcher接口是請求轉發器必須實現的接口,由Web容器為Servlet提供實現該接口的對象,通過調用該接口的forward()方法到達請求轉發的目的,示例代碼如下:
...... //Servlet里处理get请求的方法 public void doGet(HttpServletRequest request , HttpServletResponse response){ //获取请求转发器对象,该转发器的指向通过getRequestDisPatcher()的参数设置 RequestDispatcher requestDispatcher =request.getRequestDispatcher("资源的URL"); //调用forward()方法,转发请求 requestDispatcher.forward(request,response); }......
上圖所示的直接轉送請求的程序如下:
瀏覽器向Servlet1發出存取請求;
Servlet1呼叫forward()方法,在伺服器端將請求轉送給Servlet2;
最終由Servlet2回應。
技巧:其實,透過瀏覽器就可以觀察到伺服器端使用了那種請求轉發方式,當點擊某一個超連結時,瀏覽器的網址列會出現當前請求的位址,如果伺服器端回應完成以後,發現網址列的位址變了,證明是間接的請求轉送。相反,如果位址沒有發生變化,則代表的是直接請求轉送或沒有轉送。
擴充資料:
直接轉送和間接轉送的原理及差異是什麼?
答案:Forward和Redirect代表了兩種請求轉送方式:直接轉送和間接轉送。對應到程式碼裡,分別是RequestDispatcher類別的forward()方法和HttpServletRequest類別的sendRedirect()方法。
對於間接方式,伺服器端在回應第一次請求的時候,讓瀏覽器再向另外一個URL發出請求,從而達到轉發的目的。它本質上是兩次HTTP請求,對應兩個request物件。
對於直接方式,客戶端瀏覽器只會發出一次請求,Servlet把請求轉發給Servlet、HTML、JSP或其它資訊資源,由第2個資訊資源回應該請求,兩個資訊資源共用同一個request物件。
以上是java中forward是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

JVMmanagesgarbagecollectionacrossplatformseffectivelybyusingagenerationalapproachandadaptingtoOSandhardwaredifferences.ItemploysvariouscollectorslikeSerial,Parallel,CMS,andG1,eachsuitedfordifferentscenarios.Performancecanbetunedwithflagslike-XX:NewRa

Java代碼可以在不同操作系統上無需修改即可運行,這是因為Java的“一次編寫,到處運行”哲學,由Java虛擬機(JVM)實現。 JVM作為編譯後的Java字節碼與操作系統之間的中介,將字節碼翻譯成特定機器指令,確保程序在任何安裝了JVM的平台上都能獨立運行。

Java程序的編譯和執行通過字節碼和JVM實現平台獨立性。 1)編寫Java源碼並編譯成字節碼。 2)使用JVM在任何平台上執行字節碼,確保代碼的跨平台運行。

Java性能与硬件架构密切相关,理解这种关系可以显著提升编程能力。1)JVM通过JIT编译将Java字节码转换为机器指令,受CPU架构影响。2)内存管理和垃圾回收受RAM和内存总线速度影响。3)缓存和分支预测优化Java代码执行。4)多线程和并行处理在多核系统上提升性能。

使用原生庫會破壞Java的平台獨立性,因為這些庫需要為每個操作系統單獨編譯。 1)原生庫通過JNI與Java交互,提供Java無法直接實現的功能。 2)使用原生庫增加了項目複雜性,需要為不同平台管理庫文件。 3)雖然原生庫能提高性能,但應謹慎使用並進行跨平台測試。

JVM通過JavaNativeInterface(JNI)和Java標準庫處理操作系統API差異:1.JNI允許Java代碼調用本地代碼,直接與操作系統API交互。 2.Java標準庫提供統一API,內部映射到不同操作系統API,確保代碼跨平台運行。

modularitydoesnotdirectlyaffectJava'splatformindependence.Java'splatformindependenceismaintainedbytheJVM,butmodularityinfluencesapplicationstructureandmanagement,indirectlyimpactingplatformindependence.1)Deploymentanddistributionbecomemoreefficientwi

BytecodeinJavaistheintermediaterepresentationthatenablesplatformindependence.1)Javacodeiscompiledintobytecodestoredin.classfiles.2)TheJVMinterpretsorcompilesthisbytecodeintomachinecodeatruntime,allowingthesamebytecodetorunonanydevicewithaJVM,thusfulf


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

SublimeText3漢化版
中文版,非常好用

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中