SpringMVC由浅入深day01_12参数绑定(12.1参数绑定过程_12.2默认支持的类型_12.3简单类型)
12 参数绑定
处理器适配器在执行Handler之前需要把http请求的key/value数据绑定到Handler方法形参数上。
注解适配器对RequestMapping标记的方法进行适配,对方法中的形参会进行参数绑定,早期springmvc采用PropertyEditor(属性编辑器)进行参数绑定将request请求的参数绑定到方法形参上,3.X之后springmvc就开始使用Converter进行参数绑定。
12.1 spring参数绑定过程
从客户端请求key/value数据,经过参数绑定,将key/value数据绑定到controller方法的形参上。
springmvc中,接收页面提交的数据是通过方法形参来接收。而不是在controller类定义成员变更接收!!!!
12.2 默认支持的类型
直接在controller方法形参上定义下边类型的对象,就可以使用这些对象。在参数绑定过程中,如果遇到下边类型直接进行绑定。
12.2.0.1 HttpServletRequest
通过request对象获取请求信息
12.2.0.2 HttpServletResponse
通过response处理响应信息
12.2.0.3 HttpSession
通过session对象得到session中存放的对象
12.2.0.4 Model/ModelMap
model是一个接口,modelMap是一个接口实现 。
作用:将model数据填充到request域。
ModelMap是Model接口的实现类,通过Model或ModelMap向页面传递数据,如下:
//调用service查询商品信息 Items item = itemService.findItemById(id); model.addAttribute("item", item);
页面通过${item.XXXX}获取item对象的属性值。
使用Model和ModelMap的效果一样,如果直接使用Model,springmvc会实例化ModelMap。
12.3 简单类型
当请求的参数名称和处理器形参名称一致时会将请求参数与形参进行绑定。
包括整型、字符串、单精度双精度、布尔型
12.3.1 @RequestParam
通过@RequestParam对简单类型的参数进行绑定。
如果不使用@RequestParam,要求request传入参数名称和controller方法的形参名称一致,方可绑定成功。
如果使用@RequestParam,不用限制request传入参数名称和controller方法的形参名称一致。
通过required属性指定参数是否必须要传入,如果设置为true,没有传入参数,报下边错误:
参考教案 对其它简单类型绑定进行测试。
使用@RequestParam常用于处理简单类型的绑定。
value:参数名字,即入参的请求参数名字,如value=“item_id”表示请求的参数区中的名字为item_id的参数的值将传入;
required:是否必须,默认是true,表示请求中一定要有相应的参数,否则将报;
TTP Status 400 - Required Integer parameter 'XXXX' is not present
defaultValue:默认值,表示如果请求中没有同名参数时的默认值
定义如下:
public String editItem(@RequestParam(value="item_id",required=true) String id) { }
形参名称为id,但是这里使用value=" item_id"限定请求的参数名为item_id,所以页面传递参数的名必须为item_id。
注意:如果请求参数中没有item_id将跑出异常:
HTTP Status 500 - Required Integer parameter 'item_id' is not present
这里通过required=true限定item_id参数为必需传递,如果不传递则报400错误,可以使用defaultvalue设置默认值,即使required=true也可以不传item_id参数值
相关文章
- 菜鸟学习Spring——SpringMVC注解版控制层重定向到控制层
- Spring + SpringMVC + Druid + MyBatis 给你一个灵活的后端解决方案
- SpringMVC入门就这么简单
- java后台框架 springmvc整合mybatis框架源码 java图片爬虫 bootstrap html5 mysql oracle
- MVC思想及SpringMVC设计理念
- 建立一个简单的SpringMVC程序
- SpringMVC处理静态资源
- SpringMVC注解@RequestParam全面解析
- 史上最全最强SpringMVC详细示例实战教程
- 搭建最简单的SpringMVC框架(使用maven)
- 【SpringMVC】SpringMVC系列13之关于 mvc:annotation-driven
- 【SpringMVC】SpringMVC系列11之Restful的CRUD
- SpringMVC由浅入深day02_9RESTful支持
- Echarts-echart和springMVC实现堆栈图
- springmvc 解决 controller 中出现死循环并 stackoverflow 的问题
- SpringMVC拦截器简单使用
- SpringMVC工作原理
- SpringMVC连接MongoDB操作数据库
- 简单的实现springmvc程序
- SpringMVC(十一):SpringMVC文件上传中要解决的问题
- SpringMVC(一):SpringMVC的简单介绍
- 越来越好玩,SPRINGMVC