1. 程式人生 > >SpringMVC的Controller方法返回值

SpringMVC的Controller方法返回值

一、返回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可以帶過去