1. 默认的参数绑定
(1)HttpServletResquest: 通过request对象获取请求参数的信息。
(2)HttpServletResponse: 通过response对象处理响应信息。
(3)HttpSession: 通过session对象获得session中的信息。
(4)Model/ModelMap: 用于向页面传递参数,ModelMap是Model接口的实现类,也可以直接向页面传递数据,效果和Model 一样。如果使用Model,SpringMVC会自动实例化ModelMap。
其它默认的参数类型还有:Principal, Locale, InputStream, Reader, OutputStream, Writer
2. 绑定简单类型
(1)当请求参数名称和处理器方法形参名称相同时,可以直接从形参传入数据。
参数类型推荐包装类型,因为基本数据类型不支持null。
整形:Integer、int
字符串:String
单精度:Float、float
双精度:Double、double
布尔型:Boolean、boolean
(2)当请求参数名和处理器方法形参名不一样时,使用@RequestParam注解可以实现绑定
简单类型包括原生类型及包装类,枚举,CharSequence的所有子类(所以包括常见的字符串,StringBuffer等),所有Number类及其子类(包括BigDecimal,BigInteger,Atomic*等常见类),另外,所有Date,URL,URI,Locale,Class都在简单类型之列
3. 绑定POJO及其包装类型
绑定POJO类型要求,请求参数名称(页面标签的name属性)和POJO类型对应属性的名称相同,可以实现自动绑定。
一般用于请求参数较多时。SpringMVC首先去Model里找,找不到就去Session中找,还是找不到就自己新建一个
4. 绑定数组()
包装POJO类型中有数组类型,也相同。
5. 绑定List
6. 绑定自定义参数
7. 其它注解
(1)@RequestHeader:绑定一个http头
(2)@RequestBody:绑定一个Post请求的content,这个方法通常可以用来做一些自定义的活动,比如post请求中放的是自 定义格式的数据,或者是json数据要自己手动解析
(3) @CookieValue:绑定一个请求中的cookie
(4)@PathVariable:绑定一个restful风格的变量
(5)@ModelAttribute:将入参直接放到Model中
(6)@Value:spring还支持将配置的值作为入参传入,方法就是使用@Value注解
(7) @Valid*:有意思的是,只要注解是Valid开头的,spring都会试图帮你去做验证,这意味着约定大于配置