sendredirect()與forward()函數在java中的區別有哪些?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
創新互聯公司是一家集網站建設,高縣企業網站建設,高縣品牌網站建設,網站定制,高縣網站建設報價,網絡營銷,網絡優化,高縣網站推廣為一體的創新建站企業,幫助傳統企業提升企業形象加強企業競爭力。可充分滿足這一群體相比中小企業更為豐富、高端、多元的互聯網需求。同時我們時刻保持專業、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們為更多的企業打造出實用型網站。
HttpServletResponse.sendRedirect與RequestDispatcher.forward方法都可以實現獲取相應URL資源。
sendRedirect實現請求重定向,forward實現的是請求轉發。
在web服務器內部的處理機制也是不一樣的。
1. 跳轉方式
運用forward方法只能重定向到同一個Web應用程序中的一個資源。而sendRedirect方法可以讓你重定向到任何URL。
表單form的action= "/uu ";sendRedirect( "/uu ");表示相對于服務器根路徑。
如http://localhost:8080/Test應用(則提交至http://localhost:8080/uu);
Forward代碼中的 "/uu "則代表相對與WEB應用的路徑。如http://localhost:8080/Test應用(則提交至http://localhost:8080/Test/uu);
2.forward重定向后,瀏覽器url地址不變,sendRedirect轉發后,瀏覽器url地址變為目的url地址。
forward()無法重定向至有frame的jsp文件,可以重定向至有frame的html文件, 同時forward()無法在后面帶參數傳遞,
比如servlet?name=frank,這樣不行,可以程序內通過response.setAttribute( "name ",name)來傳至下一個頁面.
3. 使用forward重定向的過程,是瀏覽器先向目的Servlet發送一次Request請求,然后再服務器端由Servlet再將請求發送到目的url,再由服務器端Servlet返回Response到瀏覽器端。瀏覽器和服務器一次請求響應。
使用sendRedirect轉發的過程,瀏覽器先向目的Servlet發送一次請求,Servlet看到sendRedirect將目的url返回到瀏覽器,瀏覽器再去請求目的url,目的url再返回response到瀏覽器。瀏覽器和服務器兩次請求響應。
4. forward方法的調用者與被調用者之間共享Request和Response
sendRedirect方法由于兩次瀏覽器服務器請求,所以有兩個Request和Response。
如果使用request.setAttribute傳遞一些屬性就需要用forward,如果想要跳轉到別的應用的資源,就需要用sendRedirect。
5.無論是forward方法還是sendRedirect方法調用前面都不能有PrintWriter輸出到客戶端。
forward方法報錯: Java.lang.IllegalStateException: Cannot forward after response has been committed
sendRedirect報錯:java.lang.IllegalStateException
at org.apache.catalina.connector.ResponseFacade.sendRedirect(ResponseFacade.java:435)
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注創新互聯行業資訊頻道,感謝您對創新互聯的支持。
分享題目:sendredirect()與forward()函數在java中的區別有哪些
轉載注明:http://m.newbst.com/article6/jeidog.html
成都網站建設公司_創新互聯,為您提供網站改版、域名注冊、網站營銷、軟件開發、服務器托管、網站排名
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯