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";