结合应用场景详解Springmvc中请求的简单类型参数的传递

需求

打开商品编辑页面,展示商品信息。

需求分析

编辑商品信息,首先要显示商品详情

需要根据商品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";

}

猜你喜欢

转载自blog.csdn.net/weixin_41477980/article/details/86636413