【SpringMVC3.X 总结】6. 参数的绑定
一、参数的绑定过程
从客户端请求key/value数据,经过参数绑定,将key/value数据绑定到controller方法的形参上。
springmvc中,接收页面提交的数据是通过方法形参来接收。
二、默认支持的类型
直接在controller方法形参上定义下边类型的对象,就可以使用这些对象。在参数绑定过程中,如果遇到下边类型直接进行绑定。
HttpServletRequest
通过request对象获取请求信息
HttpServletResponse
通过response处理响应信息
HttpSession
通过session对象得到session中存放的对象
Model/ModelMap
model是一个接口,modelMap是一个接口实现 。
作用:将model数据填充到request域。
三、简单类型
通过@RequestParam对简单类型的参数进行绑定。
如果不使用@RequestParam,要求request传入参数名称和controller方法的形参名称一致,方可绑定成功。
如果使用@RequestParam,不用限制request传入参数名称和controller方法的形参名称一致。
四、POJO绑定
页面中input的name和controller的pojo形参中的属性名称一致,将页面中数据绑定到pojo。
页面定义
controller的pojo形参的定义
五、包装类型的POJO绑定
第一种方法:在形参中 添加HttpServletRequest request参数,通过request接收查询条件参数。
第二种方法:在形参中让包装类型的pojo接收查询条件参数。
分析:
页面传参数的特点:复杂,多样性。条件包括 :用户账号、商品编号、订单信息。。。
如果将用户账号、商品编号、订单信息等放在简单pojo(属性是简单类型)中,pojo类属性比较多,比较乱。
建议使用包装类型的pojo,pojo中属性是pojo
页面参数
商品名称:<input name="itemsCustom.name" />
注意:itemsCustom和包装pojo中的属性一致即可。
controller方法形参
public ModelAndView queryItems(HttpServletRequest request,ItemsQueryVo itemsQueryVo)
包装类型的pojo
扩展
(1)post乱码
在web.xml添加post乱码filter
在web.xml中加入:
(2)get乱码
方式一
修改tomcat配置文件添加编码与工程编码一致,如下:
ISO8859-1是tomcat默认编码,需要将tomcat编码后的内容按utf-8编码
方式二