如何深入淺出的理解跳轉方式:重定向和請求轉發



          轉發過程

    客戶首先發送一個請求到服務器端,服務器端發現匹配的servlet,並指定它去執行,當這個servlet執行完之后,它要調用getRequestDispacther()方法,把請求轉發給指定的student_list.jsp,整個流程都是在服務器端完成的,而且是在同一個請求里面完成的,因此servlet和jsp共享的是同一個request,在servlet里面放的所有東西,在student_list中都能取出來,因此,student_list能把結果getAttribute()出來,getAttribute()出來后執行完把結果返回給客戶端。整個過程是一個請求,一個響應。

 重點:轉發是服務器行為,因此也是在這個應用內轉發,整個過程是一個請求一個響應,共享一個request,所以由request執行轉發操作,request.getRequestDispacther("url").forward(request,response)

    重定向過程

    客戶發送一個請求到服務器,服務器匹配servlet,這都和請求轉發一樣,servlet處理完之后調用了sendRedirect()這個方法,這個方法是response的方法,所以,當這個servlet處理完之后,看到response.senRedirect()方法,立即向客戶端返回這個響應,響應行告訴客戶端你必須要再發送一個請求,去訪問student_list.jsp,緊接着客戶端受到這個請求后,立刻發出一個新的請求,去請求student_list.jsp,這里兩個請求互不干擾,相互獨立,在前面request里面setAttribute()的任何東西,在后面的request里面都獲得不了。可見,在sendRedirect()里面是兩個請求,兩個響應。

重點:重定向是客戶端行為,也就注定可以向任何地址發送請求,客戶端行為的改變是服務器所給的指示,亦即是response的行為返回,就像一個人不能兩次同時踏進一個河流一樣,每次請求都是新的行為,request不保留上次的內容。

兩者最大區別是:運用forward方法只能重定向到同一個Web應用程序中的一個資源。而sendRedirect方法可以讓你重定向到任何 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM