我在做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:”前綴,當然你必須提供重定向后的視圖訪問路徑,這樣才不至於重定向后找不到請求路徑。
