最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用SpringMVC在redirect重定向的時候攜帶參數(shù)的問題

 更新時間:2022年03月21日 09:30:31   作者:zzzgd816  
這篇文章主要介紹了使用SpringMVC在redirect重定向的時候攜帶參數(shù)的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

在redirect重定向的時候攜帶參數(shù)問題

SpringMVC 中常用到 redirect來實(shí)現(xiàn)重定向。但使用場景各有需求,如果只是簡單的頁面跳轉(zhuǎn)顯然無法滿足所有要求,比如重定向時需要在 url 中拼接參數(shù),或者返回的頁面需要傳遞 Model。SpringMVC 用 RedirectAttributes 解決了這兩個需要。

首先,在 Controller 中做 redirect 中可用如下方式實(shí)現(xiàn):

return new ModelAndView(“redirect:/index”);

return “redirect:/index”;

此時,如果只是重定向至某一 URL 或者比較簡單地址,也可以不用 RedirectAttributes,直接拼接,如:return “redirect:/index?param1=value1″;

但是這樣似乎有點(diǎn)過于簡單粗暴,而且參數(shù)多了很容易使代碼可讀性變差。使用 RedirectAttributes 來設(shè)置重定向頁面的參數(shù),SpringMVC 會自動拼接 url。

接下來主要介紹該對象的兩個方法:

1. addAttribute

@RequestMapping("/save")
public String save(User user, RedirectAttributes redirectAttributes) {
? ? redirectAttributes.addAttribute("param", "value1");
? ? return "redirect:/index";
}

請求 /save 后,跳轉(zhuǎn)至/index,并且會在url拼接 ?param=value1。

2. addFlashAttribute

@RequestMapping("/save")
public String save(User user, RedirectAttributes redirectAttributes) {
? ? redirectAttributes.addFlashAttribute("param", "value1");
? ? return "redirect:/index";
}

請求 /save 后,跳轉(zhuǎn)至 /index,并且可以在 index 對應(yīng)的模版中通過表達(dá)式,比如 jsp 中 jstl 用 ${param},獲取返回值。該值其實(shí)是保存在 session 中的,并且會在下次重定向請求時刪除。

RedirectAttributes 中兩個方法的簡單介紹就是這樣。 

redirect重定向3種方式(帶參數(shù))

Spring MVC中做form表單功能提交時,防止用戶客戶端后退或者刷新時重復(fù)提交問題,需要在服務(wù)端進(jìn)行重定向跳轉(zhuǎn),其中redirect是直接跳轉(zhuǎn)到其他頁面,有以下3種方法進(jìn)行重定向。

redirect重定向流程

客戶發(fā)送一個請求到服務(wù)器,服務(wù)器匹配servlet,這都和請求轉(zhuǎn)發(fā)一樣,servlet處理完之后調(diào)用了sendRedirect()這個方法,這個方法是response的方法,所以,當(dāng)這個servlet處理完之后,看到response.senRedirect()方法,立即向客戶端返回這個響應(yīng),響應(yīng)行告訴客戶端你必須要再發(fā)送一個請求,去訪問test.jsp,緊接著客戶端受到這個請求后,立刻發(fā)出一個新的請求,去請求test.jsp,這里兩個請求互不干擾,相互獨(dú)立,在前面request里面setAttribute()的任何東西,在后面的request里面都獲得不了。可見,在sendRedirect()里面是兩個請求,兩個響應(yīng)。

1. response.sendRedirect重定向跳轉(zhuǎn)

@RequestMapping(value="/testredirect",method = { RequestMethod.POST, RequestMethod.GET }) ?
public ModelAndView testredirect(HttpServletResponse response){ ?
? ? response.sendRedirect("/index");
? ? return null;?
}

2. ViewResolver直接跳轉(zhuǎn)

不帶參數(shù)

@RequestMapping(value="/testredirect",method = { RequestMethod.POST, RequestMethod.GET }) ?
public ?String testredirect(HttpServletResponse response){ ?
? ? return "redirect:/index"; ?
}?

帶參數(shù)

@RequestMapping("/testredirect")
public String testredirect(Model model, RedirectAttributes attr) {
?? ?attr.addAttribute("test", "51gjie");//跳轉(zhuǎn)地址帶上test參數(shù)
? ? attr.addFlashAttribute("u2", "51gjie");//跳轉(zhuǎn)地址不帶上u2參數(shù)
?? ?return "redirect:/user/users";
}

使用RedirectAttributes的addAttribute方法傳遞參數(shù)會跟隨在URL后面,如上代碼即為http:/index.action?test=51gjie

使用addFlashAttribute不會跟隨在URL后面,會把該參數(shù)值暫時保存于session,待重定向url獲取該參數(shù)后從session中移除,這里的redirect必須是方法映射路徑,jsp無效。你會發(fā)現(xiàn)redirect后的jsp頁面中b只會出現(xiàn)一次,刷新后b再也不會出現(xiàn)了,這驗(yàn)證了上面說的,b被訪問后就會從session中移除。對于重復(fù)提交可以使用此來完成.

spring mvc設(shè)置下RequestMappingHandlerAdapter 的ignoreDefaultModelOnRedirect=true,這樣可以提高效率,避免不必要的檢索。

3. ModelAndView重定向

不帶參數(shù)

@RequestMapping(value="/restredirect",method = { RequestMethod.POST, RequestMethod.GET }) ?
public ?ModelAndView restredirect(String userName){ ?
? ? ModelAndView ?model = new ModelAndView("redirect:/main/index"); ? ?
? ? return model; ?
}

帶參數(shù)

@RequestMapping(value="/toredirect",method = { RequestMethod.POST, RequestMethod.GET }) ?
public ?ModelAndView toredirect(String userName){ ?
? ? ModelAndView ?model = new ModelAndView("/main/index"); ??
? ? model.addObject("userName", userName); ?//把userName參數(shù)帶入到controller的RedirectAttributes
? ? return model; ?
}

小結(jié)一下:

1.redirect重定向可以跳轉(zhuǎn)到任意服務(wù)器,可以用在系統(tǒng)間的跳轉(zhuǎn)。

2.Spring MVC中redirect重定向,參數(shù)傳遞可以直接拼接url也可以使用RedirectAttributes來處理,由于是不同的請求,重定向傳遞的參數(shù)會在地址欄顯示,所以傳遞時要對中文編碼進(jìn)行處理。

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring中事務(wù)傳播行為的介紹

    Spring中事務(wù)傳播行為的介紹

    今天小編就為大家分享一篇關(guān)于Spring中事務(wù)傳播行為的介紹,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • Spring??AOP的兩種使用方法

    Spring??AOP的兩種使用方法

    這篇文章主要介紹了Spring?AOP的兩種使用方法,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-08-08
  • SpringBoot整合Activiti工作流框架的使用

    SpringBoot整合Activiti工作流框架的使用

    本文主要介紹了SpringBoot整合Activiti工作流框架的使用,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • 關(guān)于Jackson的JSON工具類封裝 JsonUtils用法

    關(guān)于Jackson的JSON工具類封裝 JsonUtils用法

    這篇文章主要介紹了關(guān)于Jackson的JSON工具類封裝 JsonUtils用法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • Spring負(fù)載均衡LoadBalancer使用詳解

    Spring負(fù)載均衡LoadBalancer使用詳解

    這篇文章主要介紹了Spring負(fù)載均衡LoadBalancer使用詳解,Spring Cloud LoadBalancer是Spring Cloud官方自己提供的客戶端負(fù)載均衡器, 用來替代Ribbon,Spring官方提供了兩種客戶端都可以使用loadbalancer,需要的朋友可以參考下
    2023-11-11
  • SpringBoot實(shí)現(xiàn)API接口多版本支持的示例代碼

    SpringBoot實(shí)現(xiàn)API接口多版本支持的示例代碼

    這篇文章主要介紹了SpringBoot實(shí)現(xiàn)API接口多版本支持的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Java 內(nèi)存模型中的happen-before關(guān)系詳解

    Java 內(nèi)存模型中的happen-before關(guān)系詳解

    這篇文章主要為大家介紹了Java 內(nèi)存模型中的happen-before關(guān)系示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • Swagger3.0 整合spring boot2.7x避免swagger2.0與boot2.7沖突問題

    Swagger3.0 整合spring boot2.7x避免swagger2.0與boot2.7沖突

    這篇文章主要介紹了Swagger3.0 整合spring boot2.7x避免swagger2.0與boot2.7沖突問題,通過注釋掉2.0引入的倆包,直接引入3.0,文中結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2023-10-10
  • Java實(shí)現(xiàn)字符串和輸入流的相互轉(zhuǎn)換

    Java實(shí)現(xiàn)字符串和輸入流的相互轉(zhuǎn)換

    這篇文章主要介紹了Java實(shí)現(xiàn)字符串和輸入流的相互轉(zhuǎn)換方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Java中如何正確重寫equals方法

    Java中如何正確重寫equals方法

    Object類中equals方法比較的是兩個對象的引用地址,只有對象的引用地址指向同一個地址時,才認(rèn)為這兩個地址是相等的,否則這兩個對象就不相等
    2021-10-10

最新評論

绵竹市| 漾濞| 常宁市| 武安市| 江都市| 扶沟县| 巴楚县| 滦平县| 额敏县| 离岛区| 渭源县| 朝阳市| 壶关县| 大埔区| 亚东县| 浪卡子县| 阿坝| 澄江县| 都安| 宝鸡市| 博湖县| 贵德县| 中方县| 临海市| 云和县| 石河子市| 长寿区| 阿拉善右旗| 清水县| 普安县| 大余县| 阿合奇县| 荆州市| 兴化市| 岗巴县| 奉贤区| 桐梓县| 亳州市| 乳源| 肥城市| 镶黄旗|