需求
打开商品编辑页面,展示商品信息。
需求分析
编辑商品信息,首先要显示商品详情
需要根据商品id查询商品信息,然后展示到页面。
请求的url:/itemEdit.action
参数:id(商品id)
响应结果:商品编辑页面,展示商品详细信息。
页面点击修改按钮,发起请求
http://127.0.0.1:8080/springmvc-web/itemEdit.action?id=1
方法一:
需要从请求的参数中把请求的id取出来。Id包含在Request对象中。可以从Request对象中取id。想获得Request对象只需要在Controller方法的形参中添加一个参数即可(HttpServletRequest request)。Springmvc框架会自动把Request对象传递给方法。同样还可向Controller方法的形参中添加HttpServletResponse response,HttpSession session。
代码实现
//根据id查询商品
@RequestMapping("/itemEdit")
public ModelAndView queryItemById(HttpServletRequest request) {
// 从request中获取请求参数
String strId = request.getParameter("id");
Integer id = Integer.valueOf(strId);
// 根据id查询商品数据
Item item = this.itemService.queryItemById(id);
// 把结果传递给页面
ModelAndView modelAndView = new ModelAndView();
// 把商品数据放在模型中
modelAndView.addObject("item", item);
// 设置逻辑视图
modelAndView.setViewName("itemEdit");
return modelAndView;
}
方法二:
当请求的参数名称和处理器形参名称一致时会将请求参数与形参进行绑定。这样,从Request取参数的方法就可以进一步简化。
参数类型推荐使用包装数据类型,因为基础数据类型不可以为null。
整形:Integer、int
字符串:String
单精度:Float、float
双精度:Double、double
布尔型:Boolean、boolean
说明:对于布尔类型的参数,请求的参数值为true或false。或者1或0
请求url:
http://localhost:8080/xxx.action?id=2&status=false
处理器方法:
public String editItem(Model model,Integer id,Boolean status)
//根据id查询商品,绑定简单数据类型
@RequestMapping("/itemEdit")
public String queryItemById(int id, ModelMap model) {
// 根据id查询商品数据
Item item = this.itemService.queryItemById(id);
// 把商品数据放在模型中
model.addAttribute("item", item);
return "itemEdit";
}
方法三:@RequestParam
使用@RequestParam常用于处理简单类型的绑定。@RequestParam(value = "itemId", required = true, defaultValue = "1")
value:参数名字,即入参的请求参数名字,如value=“itemId”表示请求的参数区中的名字为itemId的参数的值将传入。
required:是否必须,默认是true,表示请求中一定要有相应的参数,否则将报错。
TTP Status 400 - Required Integer parameter 'XXXX' is not present
defaultValue:默认值,表示如果请求中没有同名参数时的默认值。
定义如下:
@RequestMapping("/itemEdit")
public String queryItemById(@RequestParam(value = "itemId", required = true, defaultValue = "1") Integer id,
ModelMap modelMap) {
// 根据id查询商品数据
Item item = this.itemService.queryItemById(id);
// 把商品数据放在模型中
modelMap.addAttribute("item", item);
return "itemEdit";
}