forward和sendRedirect

使用:

request.getRequestDispacther("/1.jsp").forward(request,response); 
or
servletContext.getRequestDispacther("/1.jsp").forward(request,response); 
response.sendRedirect("1.jsp");

forward:是容器內部(服務器)行爲,不修改更新request和response,URL地址欄不發生變化。

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

sendRedirect: 是客戶端行爲,發生了兩次請求,速度較慢,產生了新的request和response,URL地址欄發生了變化。

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章