詳解spring mvc 請(qǐng)求轉(zhuǎn)發(fā)和重定向
請(qǐng)求重定向與請(qǐng)求轉(zhuǎn)發(fā)的比較,HttpServletResponse.sendRedirect方法和RequestDispatcher.forward方法都可以讓瀏覽器獲得另外一個(gè)URL所指向的資源,但兩者的內(nèi)部運(yùn)行機(jī)制有很大的區(qū)別。
1.RequestDispatcher.forward方法只能將請(qǐng)求轉(zhuǎn)發(fā)給同一個(gè)Web應(yīng)用中的組件,HttpServletResponse.sendRedirect不僅可以重定向到當(dāng)前應(yīng)用程序的其他資源,還可以重定向到同一個(gè)站點(diǎn)上的其他應(yīng)用程序的資源,甚至是使用絕對(duì)URL重定向到其他站點(diǎn)的資源。對(duì)于sendRedirect如果傳遞的URL以”/”開(kāi)頭,他是相對(duì)于整個(gè)Web站點(diǎn)的根目錄;對(duì)于forward如果傳遞的URL以”/”開(kāi)頭,它是相對(duì)于當(dāng)前Web應(yīng)用程序的根目錄。
2.sendRedirect對(duì)瀏覽器做出的響應(yīng)是重新發(fā)出對(duì)另外一個(gè)URL的訪問(wèn)請(qǐng)求,forward在服務(wù)器端內(nèi)部將請(qǐng)求轉(zhuǎn)發(fā)給另外一個(gè)資源,瀏覽器只知道發(fā)出了請(qǐng)求并得到了響應(yīng)結(jié)果
3.forward的調(diào)用者與被調(diào)用者之間共享相同的request對(duì)象和response對(duì)象,他們屬于同一個(gè)訪問(wèn)請(qǐng)求和響應(yīng)過(guò)程;sendRedirect的調(diào)用者與被調(diào)用者使用各自的request和response對(duì)象,屬于兩個(gè)獨(dú)立的訪問(wèn)請(qǐng)求和響應(yīng)過(guò)程
請(qǐng)求重定向以redirect:開(kāi)頭,請(qǐng)求轉(zhuǎn)發(fā)以forward:開(kāi)頭;
樣例如下:
@RequestMapping(value="/users") @Controller public class UserController { @RequestMapping(value="/queryuser",method = RequestMethod.GET) public String queryuser(Model model) throws Exception { return "forward:/users/uc"; } @RequestMapping(value="/uc",method = RequestMethod.GET) public String quer(Model model) throws Exception { return "redirect:/#/home"; } @RequestMapping(value = "/save", method = RequestMethod.GET) public ModelAndView saveUser(HttpServletRequest request, HttpServletResponse response) throws Exception { ModelAndView mv = new ModelAndView("forward:/users/uc");//默認(rèn)為forward模式 // ModelAndView mv = new ModelAndView("redirect:/#/home");//redirect模式 return mv; } }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
詳解SpringBoot中的index首頁(yè)的訪問(wèn)、自定義Favicon圖標(biāo)
這篇文章主要介紹了SpringBoot中的index首頁(yè)的訪問(wèn)、自定義Favicon圖標(biāo),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-08-08MybatisPlus中@TableField注解的使用詳解
這篇文章主要介紹了MybatisPlus中@TableField注解的使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09JVM Metaspace內(nèi)存溢出問(wèn)題解決方案
這篇文章主要介紹了JVM Metaspace內(nèi)存溢出排查總結(jié)過(guò)程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11Springboot如何獲取上下文ApplicationContext
這篇文章主要介紹了Springboot如何獲取上下文ApplicationContext,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11java通過(guò)反射創(chuàng)建對(duì)象并調(diào)用方法
這篇文章主要介紹了java通過(guò)反射創(chuàng)建對(duì)象并調(diào)用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01值得Java開(kāi)發(fā)者關(guān)注的7款新工具
作為老牌語(yǔ)言Java,其生態(tài)圈也出來(lái)了一些有關(guān)云服務(wù)、監(jiān)控、文檔分享方面的工具,這篇文章主要介紹了Java開(kāi)發(fā)者值得關(guān)注的7款新工具,感興趣的小伙伴們可以參考一下2016-07-07集合框架(Collections Framework)詳解及代碼示例
這篇文章主要介紹了集合框架(Collections Framework)詳解及代碼示例,文章涉及集合數(shù)組的區(qū)別,collection接口,iterator迭代器,list接口及其用法,LinkedHashSet集合等有關(guān)內(nèi)容,具有一定參考價(jià)值,需要的朋友可以了解下。2017-11-11Springboot+Shiro+Mybatis+mysql實(shí)現(xiàn)權(quán)限安全認(rèn)證的示例代碼
Shiro是Apache?的一個(gè)強(qiáng)大且易用的Java安全框架,執(zhí)行身份驗(yàn)證、授權(quán)、密碼學(xué)和會(huì)話管理,Shiro?主要分為兩個(gè)部分就是認(rèn)證和授權(quán)兩部分,這篇文章主要介紹了Springboot+Shiro+Mybatis+mysql實(shí)現(xiàn)權(quán)限安全認(rèn)證的示例代碼,需要的朋友可以參考下2024-07-07java科學(xué)計(jì)數(shù)法轉(zhuǎn)換成數(shù)字的幾種方法
我們?cè)谔幚泶髷?shù)值的時(shí)候,常常會(huì)遇到使用科學(xué)計(jì)數(shù)法表示的數(shù)字,科學(xué)計(jì)數(shù)法是一種表示大數(shù)值或小數(shù)值的方式,下面這篇文章主要給大家介紹了關(guān)于java科學(xué)計(jì)數(shù)法轉(zhuǎn)換成數(shù)字的幾種方法,需要的朋友可以參考下2024-03-03