SpringMvc中,Controller方法的多種實現方式(指定返回到哪個頁面,指定返回到頁面的資料)
阿新 • • 發佈:2019-02-06
1)ModelAndView
@RequestMapping("/list") public ModelAndView itemsList() throws Exception{ List<Items> list = itmesService.list(); //建立ModelAndView檢視 ModelAndView modelAndView = new ModelAndView(); //將list資料新增到試圖裡 modelAndView.addObject("itemList", list); modelAndView.setViewName("itemList");//設定檢視的名稱,即返回到哪個頁面 //由於有檢視解析器的作用,省去了字首和字尾,其實訪問的頁面為("/WEB-INF/jsp/itemList.jsp") return modelAndView; }
2)String(最常用,最方便,建議)
@RequestMapping("/itemEdit/{id}") public String itemEdit(@PathVariable("id") Integer id, HttpServletRequest reuqest, Model model) throws Exception{ //String idStr = reuqest.getParameter("id"); Items items = itmesService.findItemsById(id); //將items資料加到檢視中 model.addAttribute("item", items); //這裡返回editItem,在@Controller的註解下,回自動新增字首和字尾,實則是返回到頁面("/WEB-INF/jsp/editItem.jsp") return "editItem"; }
3)返回void
public void update(Items items,HttpServletRequest request,HttpServletResponse response)throws Exception{ //返回資料,將items的內容放入items裡,jsp頁面呼叫items就行 request.setAttribute("items", items); //返回指定的頁面 //如果是void型別的話,就不會去呼叫SpringMvc的架構,因此無法自動載入檢視解析器,所以跳轉的 //網頁名稱應該為其全路徑名稱 request.getRequestDispatcher("/WEB-INF/jsp/success.jsp").forward(request, response); }
4)關於方法中所需要的引數定義
舉3)中的例子,我在update方法中定義了:
Items items,HttpServletRequest request,以及HttpServletResponse response這三個型別.
但是大家可以發現,其實我在方法中是沒有用到response的,因此,可以把其刪掉,對於程式來說,並不會
產生影響。
因此,大家在定義方法的時候,可以根據自己的實際需要來定義所需要的類,或者大家怕以後程式碼需要改麻煩的話,
全部定義上也是可以的。