1. 程式人生 > >SpringMvc中,Controller方法的多種實現方式(指定返回到哪個頁面,指定返回到頁面的資料)

SpringMvc中,Controller方法的多種實現方式(指定返回到哪個頁面,指定返回到頁面的資料)

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的,因此,可以把其刪掉,對於程式來說,並不會

產生影響。

因此,大家在定義方法的時候,可以根據自己的實際需要來定義所需要的類,或者大家怕以後程式碼需要改麻煩的話,

全部定義上也是可以的。