java請求轉發,響應重定向的區別


請求轉發:request.getRequestDispatcher().forward();   

例:request.getRequestDispatcher("/index.jsp").forward(request,response);

 

響應重定向:response.sendRedirect();           

 例:response.sendRedirect(request.getContextPath + "/index.jsp");

 

請求轉發過程
    客戶首先發送一個請求到服務器端,服務器端發現匹配的servlet,並指定它去執行,當這個servlet執行完之后,它要調用getRequestDispacther()方法,把請求轉發給指定的index.jsp,整個流程都是在服務器端完成的,

而且是在同一個請求里面完成的,因此servlet和jsp共享的是同一個request,在servlet里面放的所有東西,在index中都能取出來,因此,index能把結果getAttribute()出來,getAttribute()出來后執行完把結果返回給客戶端。

整個過程是一個請求,一個響應。


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

總結

  請求轉發→一次請求→一次響應

  響應重定向→二次請求→二次響應

 


免責聲明!

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



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