24SpringMvc中的重定向和轉發-解釋return "redirect:/cargo/contractproduct/tocreate.action";


我在做JK項目時發現:我們在增加一個貨物時。會先根據提交的Action()進入到一個新增頁面

 

    //跳轉到新增的頁面
    @RequestMapping("/cargo/contractproduct/tocreate.action")
    public String tocreate(String contractId,Model model)
    {
        List<Factory> listfactory=factoryService.getFactoryList();
        Map<String, Object> map=new HashMap<String, Object>();
        map.put("contractId",contractId);
        List<ContractProduct> datalist=contractProductService.find(map);
        model.addAttribute("contractId", contractId);
        model.addAttribute("listfactory", listfactory);
        model.addAttribute("datalist", datalist);
        return "/cargo/contract/jContractProductCreate.jsp";//調到新增頁面
    }

 

 

 

 

 

,填好信息時,根據insert.action來到

    //新增保存數據
    @RequestMapping("/cargo/contractproduct/insert.action")
    public String insert(ContractProduct contractProduct,Model model)
    {
        contractProductService.insert(contractProduct);
        model.addAttribute("contractId", contractProduct.getContractid());
        //重新回到新增的頁面。為什么這么做呢?因為我們在錄入貨物的信息時不可能是只錄入了一個
        //肯定是錄入了很多個的。所以要重新跳轉到新增的頁面。
        return "redirect:/cargo/contractproduct/tocreate.action";
        
    }

 

 

 

 

但是在這個方法中,會有這么return "redirect:/cargo/contractproduct/tocreate.action";這是Springmvc中的重定向。

為什么要重定向呢?為了防止表單的重復提交。有一篇博客里面提到:

當用戶提交post請求之后,點擊瀏覽器的后退按鈕,然后刷新頁面就會造成數據的再一次提交,也就是常說的重復提交,看到有人在說struts的令牌方式,怎奈我比較愚鈍,不能理解其中精妙,簡單的利用重定向來防止重復提交數據。重定向即服務器端提供一個請求方向后,將請求返回給用戶在按指定的請求方向請求一次,在spring mvc的開發中,返回一個重定向試圖只需要在試圖名稱前加上“redirect:”前綴,當然你必須提供重定向后的視圖訪問路徑,這樣才不至於重定向后找不到請求路徑。

 


免責聲明!

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



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