Springmvc 重定向參數傳遞方式


Springmvc  通過return "redirect:" 實現重定向   重定向的狀態碼301  302

301,302 都是HTTP狀態的編碼,都代表着某個URL發生了轉移,不同之處在於: 
301 redirect: 301 代表永久性轉移(Permanently Moved)。 
302 redirect: 302 代表暫時性轉移(Temporarily Moved )。 
1.1、什么是301轉向?什么是301重定向? 
  301轉向(或叫301重定向,301跳轉)是當用戶或搜索引擎向網站服務器發出瀏覽請求時,服務器返回的HTTP數據流中頭信息(header)中的狀態碼的一種,表示本網頁永久性轉移到另一個地址。 
1.2、什么是302重定向? 
  302重定向又稱之為302代表暫時性轉移(Temporarily Moved ),英文名稱:302 redirect。 也被認為是暫時重定向(temporary redirect),一條對網站瀏覽器的指令來顯示瀏覽器被要求顯示的不同的URL,當一個網頁經歷過短期的URL的變化時使用。一個暫時重定向是一種服 務器端的重定向,能夠被搜索引擎蜘蛛正確地處理。 

在springmvc實現重定向進行參數傳遞方式有兩種:

     一、在請求地址后面進行拼接

        

 @RequestMapping(value="/save")
    public String  save(){
        return "redirect:update?name=zhangsan&age=23";
    }

二、采用RedirectAttributes 對象的 addFlashAttribute() 方法將參數數據放到session中session在跳轉頁面后馬上移出對象,在跳轉的方法中采用@ModelAttribute接收跳轉后的參數

    @RequestMapping(value="/login")
    public String login(String name, String password, RedirectAttributes model){

        model.addFlashAttribute("msg",name);

        return "redirect:tohome";
    }

    @RequestMapping(value = "/tohome")
    public String home(@ModelAttribute String msg,Model model){
        model.addAttribute("msg",msg);
        return "redirect:home";
    }

 對上面關於RedirectAttribute 實現重定向傳值方式補充

采用用上面的方式實現重定向時候 發現無法獲取到傳遞的參數值

redirectAttr.addFlashAttribute("status","10");
mv.setViewName("redirect:/user/home");

正確的接受的方式:  真正的獲取到了值得方式  開始的時候我並沒有給@ModelAttribute后面添加value   直接采用@ModelAttribute String status 方式 無法獲取的值

當采用@ModelAttribute(value="status") String status 這樣就可以獲取到值了

    @RequestMapping("home")
    public ModelAndView home(@ModelAttribute(value = "status") String status) {
}

在補充一種通過@RedirectAttribute 的addAttribute 方式添加值 

 使用方式  attr.addAttribute("status",10);

 自動會給我們要重定向的Url 后面拼接 ?status=10 進行一個拼接

以上的都必須是重定向切記

 




 


免責聲明!

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



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