欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java 中sendredirect()和forward()方法的區(qū)別

 更新時間:2017年08月03日 17:30:00   作者:yoxibaga  
這篇文章主要介紹了java 中sendredirect()和forward()方法的區(qū)別,需要的朋友可以參考下

 HttpServletResponse.sendRedirect與RequestDispatcher.forward方法都可以實現(xiàn)獲取相應(yīng)URL資源。

sendRedirect實現(xiàn)請求重定向,forward實現(xiàn)的是請求轉(zhuǎn)發(fā)。

在web服務(wù)器內(nèi)部的處理機制也是不一樣的。 

1. 跳轉(zhuǎn)方式

 運用forward方法只能重定向到同一個Web應(yīng)用程序中的一個資源。而sendRedirect方法可以讓你重定向到任何URL。 

 表單form的action= "/uu ";sendRedirect( "/uu ");表示相對于服務(wù)器根路徑。

 如http://localhost:8080/Test應(yīng)用(則提交至http://localhost:8080/uu); 

 Forward代碼中的 "/uu "則代表相對與WEB應(yīng)用的路徑。如http://localhost:8080/Test應(yīng)用(則提交至http://localhost:8080/Test/uu); 

2.forward重定向后,瀏覽器url地址不變,sendRedirect轉(zhuǎn)發(fā)后,瀏覽器url地址變?yōu)槟康膗rl地址。

forward()無法重定向至有frame的jsp文件,可以重定向至有frame的html文件, 同時forward()無法在后面帶參數(shù)傳遞,

比如servlet?name=frank,這樣不行,可以程序內(nèi)通過response.setAttribute( "name ",name)來傳至下一個頁面.  

3. 使用forward重定向的過程,是瀏覽器先向目的Servlet發(fā)送一次Request請求,然后再服務(wù)器端由Servlet再將請求發(fā)送到目的url,再由服務(wù)器端Servlet返回Response到瀏覽器端。瀏覽器和服務(wù)器一次請求響應(yīng)。 

使用sendRedirect轉(zhuǎn)發(fā)的過程,瀏覽器先向目的Servlet發(fā)送一次請求,Servlet看到sendRedirect將目的url返回到瀏覽器,瀏覽器再去請求目的url,目的url再返回response到瀏覽器。瀏覽器和服務(wù)器兩次請求響應(yīng)。

4. forward方法的調(diào)用者與被調(diào)用者之間共享Request和Response

sendRedirect方法由于兩次瀏覽器服務(wù)器請求,所以有兩個Request和Response。 

如果使用request.setAttribute傳遞一些屬性就需要用forward,如果想要跳轉(zhuǎn)到別的應(yīng)用的資源,就需要用sendRedirect。 

5.無論是forward方法還是sendRedirect方法調(diào)用前面都不能有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)

總結(jié)

以上所述是小編給大家介紹的java 中sendredirect()和forward()方法的區(qū)別,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • spring中@RestController和@Controller的區(qū)別小結(jié)

    spring中@RestController和@Controller的區(qū)別小結(jié)

    @RestController和@Controller這兩個注解用于創(chuàng)建Web應(yīng)用程序的控制器類,那么這兩個注解有哪些區(qū)別,本文就來介紹一下,并用示例代碼說明,感興趣的可以了解一下
    2023-09-09
  • Mybatis-Plus使用saveOrUpdate及問題解決方法

    Mybatis-Plus使用saveOrUpdate及問題解決方法

    本文主要介紹了Mybatis-Plus使用saveOrUpdate及問題解決方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • SpringBoot + MapStruct 屬性映射工具的使用詳解

    SpringBoot + MapStruct 屬性映射工具的使用詳解

    MapStruct 是一個代碼生成器,簡化了不同的 Java Bean 之間映射的處理,所謂的映射指的就是從一個實體變化成一個實體。接下來通過本文給大家介紹SpringBoot + MapStruct 屬性映射工具的使用,需要的朋友可以參考下
    2021-09-09
  • Java實現(xiàn)撲克牌程序

    Java實現(xiàn)撲克牌程序

    這篇文章主要為大家詳細介紹了Java實現(xiàn)撲克牌程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • 詳解Java中多線程異常捕獲Runnable的實現(xiàn)

    詳解Java中多線程異常捕獲Runnable的實現(xiàn)

    這篇文章主要介紹了詳解Java中多線程異常捕獲Runnable的實現(xiàn)的相關(guān)資料,希望通過本文能幫助到大家,讓大家理解掌握這樣的知識,需要的朋友可以參考下
    2017-10-10
  • spring循環(huán)依賴策略解析

    spring循環(huán)依賴策略解析

    這篇文章主要為大家詳細介紹了spring循環(huán)依賴策略,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • 一分鐘入門Java Spring Boot徹底解決SSM配置問題

    一分鐘入門Java Spring Boot徹底解決SSM配置問題

    Spring Boot是由Pivotal團隊提供的全新框架,其設(shè)計目的是用來簡化新Spring應(yīng)用的初始搭建以及開發(fā)過程。該框架使用了特定的方式來進行配置,從而使開發(fā)人員不再需要定義樣板化的配置。通過這種方式,Spring Boot致力于在蓬勃發(fā)展的快速應(yīng)用開發(fā)領(lǐng)域成為領(lǐng)導(dǎo)者
    2021-10-10
  • 一文帶你深入理解Java?AbstractQueuedSynchronizer

    一文帶你深入理解Java?AbstractQueuedSynchronizer

    在并發(fā)編程中,鎖是一種保證線程安全的方式,這篇文章主要為大家介紹了AbstractQueuedSynchronizer(AQS)的數(shù)據(jù)結(jié)構(gòu)及實現(xiàn)原理,感興趣的小伙伴可以了解一下
    2023-07-07
  • 深入了解Java中的Filter過濾器

    深入了解Java中的Filter過濾器

    Filter也稱之為過濾器,WEB開發(fā)人員通過Filter技術(shù),對web服務(wù)器管理的所有web資源:從而實現(xiàn)一些特殊的功能。例如實現(xiàn)URL級別的權(quán)限訪問控制、過濾敏感詞匯、壓縮響應(yīng)信息等一些高級功能。下面我們來簡單學(xué)習(xí)一下吧
    2019-05-05
  • java 使用正則表達式去除前后空格

    java 使用正則表達式去除前后空格

    這篇文章主要介紹了java 使用正則表達式去除前后空格,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04

最新評論