SpringBoot入門教程(二十二)controller 之間實現跳轉


如下圖,創建兩個控制器來測試跳轉效果。以下所有跳轉方式均以這兩個控制器為實例。

請叫我頭頭哥_SpringBoot()controller 之間實現跳轉

♛ 1 sendRedirect方式
response.sendRedirect("redirect:映射路徑?參數名="+參數值);
♛ 2 forward方式
package com.demo.controller.Jump;

import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * Created by toutou on 2019/1/27.
 */
@Controller
@Slf4j
public class FirstJumpController {
    @RequestMapping(value = "/myfirst")
    public String MyFirst(){
        // 如果使用ModelAndView方式: return new ModelAndView("forward:/mysecond");
        // forward是請求轉發,是服務器端行為,相當於一次請求,地址欄的 URL 不會改變。
        return "forward:/mysecond";
    }
}
♛ 3 redirect方式
    @RequestMapping(value = "/myfirst2")
    public String MyFirst2(){
        // redirect是請求重定向,是客戶端行為,相當於兩次請求,地址欄的 URL 會改變。
        return "redirect:/mysecond";
    }
♛ 4 拼接url方式
    @RequestMapping(value = "/myfirst3")
    public String MyFirst3(String name){
        // redirect是請求重定向,是客戶端行為,相當於兩次請求,地址欄的 URL 會改變。
        return "redirect:/mysecond2?name=" + name;
    }

bug: 參數包含中文字符的話,容易出現問題

♛ 5 RedirectAttributes方式

第一種:redirectAttributes.addAttributie("prama",value);

redirectAttributes.addAttribute("prama1",value1);
redirectAttributes.addAttribute("prama2",value2);
return:"redirect:/path/list" 

不足:這種方法相當於在重定向鏈接地址追加傳遞的參數:return:"redirect:/path/list?prama1=value1&prama2=value2(直接追加參數會將傳遞的參數暴露在鏈接的地址上,非常的不安全)

第二種:redirectAttributes.addFlashAttribute("prama",value);

redirectAttributes.addFlashAttribute("prama1",str);
redirectAttributes.addFlashAttribute("prama2",list);
redirectAttributes.addFlashAttribute("prama3",map);
return:"redirect:/path/list" ;

此方法隱藏了參數,鏈接地址上不直接暴露,但是能且只能在重定向的頁面上獲取prama的值。其原理是參數放到了session中,session在跳轉之后馬上移除對象。如果重定向到一個controller,是取不到該prama的值的。

♛ 6 modelAndView方式
public ModelAndView findProjectPage() {
        ModelAndView modelAndView = new ModelAndView("redirect:映射路徑?參數名="+參數值);
        XXXXXXX
        return modelAndView;
    }

v源碼地址

https://github.com/toutouge/javademosecond/tree/master/hellospringboot


作  者:請叫我頭頭哥
出  處:http://www.cnblogs.com/toutou/
關於作者:專注於基礎平台的項目開發。如有問題或建議,請多多賜教!
版權聲明:本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接。
特此聲明:所有評論和私信都會在第一時間回復。也歡迎園子的大大們指正錯誤,共同進步。或者直接私信
聲援博主:如果您覺得文章對您有幫助,可以點擊文章右下角推薦一下。您的鼓勵是作者堅持原創和持續寫作的最大動力!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM