SpringMVC的Controller方法返回值
阿新 • • 發佈:2018-12-11
一、返回ModelAndView
controller方法中定義ModelAndView物件並返回,物件中可以新增model資料、指定的view。
public ModelAndView queryItemList() { // 建立頁面需要顯示的商品資料 List<Item> list = new ArrayList<>(); list.add(new Item(1, 2399, new Date()); // 建立ModelAndView,用來存放資料和檢視 ModelAndView modelAndView = new ModelAndView(); // 設定資料到模型中 modelAndView.addObject("itemList", list); // 設定檢視jsp,需要設定檢視的實體地址 // modelAndView.setViewName("/WEB-INF/jsp/itemList.jsp"); // 配置好檢視解析器字首和字尾,這裡只需要設定邏輯檢視就可以了。 // 檢視解析器根據字首+邏輯檢視名+字尾拼接出來物理路徑 modelAndView.setViewName("itemList"); return modelAndView; }
二、返回void
在controller方法形參上可以定義request和response,使用request或者response
指定響應結果:
1.使用request轉發頁面
request.getRequestDispatcher("頁面路徑").forward(request,response);
頁面路徑舉例:"/WEB-INF/jsp/success.jsp"
2.使用response頁面重定向
response.senRedirect("轉發路徑")
3.通過response指定響應結果,比如響應json資料
response,getWriter().print("{\"a\":1}");
三、返回字串
1.返回邏輯檢視名
controller方法返回字串可以制定邏輯檢視名,通過檢視解析器解析為物理檢視地址。
return "itemList";
實際返回經過解析後的:/WEB-INF/jsp/itemList.jsp
2.Redirect重定向
Controller方法返回字串可以重定向到一個url地址
@RequestMapping("updateItem") public String updateItemById(Item item) { // 更新商品 this.itemService.updateItemById(item); // 修改商品成功後,重定向到商品編輯頁面 // 重定向後瀏覽器位址列變更為重定向的地址, // 重定向相當於執行了新的request和response,所以之前的請求引數都會丟失 // 如果要指定請求引數,需要在重定向的url後面新增 ?itemId=1 這樣的請求引數 return "redirect:/itemEdit.action?itemId=" + item.getId(); }
3.forword轉發
Controller方法執行後繼續執行另一個Conreoller方法。
@RequestMapping("updateItem")
public String updateItemById(Item item) {
// 更新商品
this.itemService.updateItemById(item);
// 修改商品成功後,繼續執行另一個方法
// 使用轉發的方式實現。轉發後瀏覽器位址列還是原來的請求地址,
// 轉發並沒有執行新的request和response,所以之前的請求引數都存在
return "forward:/itemEdit.action";
}
結果轉發到editItem.action,request可以帶過去