ItemController
@Controller
public class ItemController {
@Autowired
private ItemService itemService;
/**
* 1.ModelAndView 無敵的,帶着數據,返回視圖路徑
* 2.String 返回視圖路徑,model帶數據
* 3.void 無法返回視圖,不能用來顯示數據。 ajax 請求合適 json格式數據(response 異步請求使用)
* @return
* @throws IOException
* @throws ServletException
*/
/**
* void-
*/
@RequestMapping(value="/item/itemList.action")
public void itemList(Model model,HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{
List<Items> list = itemService.selectItemList();
model.addAttribute("itemList", list);
request.getRequestDispatcher("/itemList").forward(request, response);
}
/**
* String
*/
/* @RequestMapping(value="/item/itemList.action")
public String itemList(Model model){
List<Items> list = itemService.selectItemList();
model.addAttribute("itemList", list);
return "itemList";
}*/
/**
* ModelAndView
*/
//顯示所有商品
/* @RequestMapping(value="/item/itemList.action")
public ModelAndView itemList(){
//從Mysql查詢數據
List<Items> list = itemService.selectItemList();
System.out.println(list);
ModelAndView mv = new ModelAndView();
//添加數據
mv.addObject("itemList", list);
mv.setViewName("itemList");
return mv;
}*/
}
返回字符串類型可分為:
1、邏輯視圖名
//指定邏輯視圖名,經過視圖解析器解析為jsp物理路徑:/WEB-INF/jsp/itemList.jsp return "itemList";
2、Request重定向
/**
* 更新商品
*
* @param item
* @return
*/
@RequestMapping("updateItem")
public String updateItemById(Item item) {
// 更新商品
this.itemService.updateItemById(item);
// 修改商品成功后,重定向到商品編輯頁面
// 重定向后瀏覽器地址欄變更為重定向的地址,
// 重定向相當於執行了新的request和response,所以之前的請求參數都會丟失
// 如果要指定請求參數,需要在重定向的url后面添加 ?itemId=1 這樣的請求參數
return "redirect:/itemEdit.action?itemId=" + item.getId();
}
3、forward轉發
/**
* 更新商品
*
* @param item
* @return
*/
@RequestMapping("updateItem")
public String updateItemById(Item item) {
// 更新商品
this.itemService.updateItemById(item);
// 修改商品成功后,繼續執行另一個方法
// 使用轉發的方式實現。轉發后瀏覽器地址欄還是原來的請求地址,
// 轉發並沒有執行新的request和response,所以之前的請求參數都存在
return "forward:/itemEdit.action";
}
//結果轉發到editItem.action,request可以帶過去
return "forward: /itemEdit.action";
