SpringMVC 学习笔记2 - 参数绑定
2017-11-02 07:41
507 查看
第一种、默认支持的类型绑定
HttpServletRequestHttpServletResponse
HttpSession
Model/ModelMap
ModelMap是Model接口的实现类,将model数据填充到request域,向页面传递数据。
Model.addAttribute()效果等同于req.setAttribute + url显式传参。
ApplicationContext
参考:http://www.importnew.com/18384.html - spring里头各种获取ApplicationContext的方法
方式一:request.getAttribute(DispatcherServlet.WEB_APPLICATION_CONTEXT_ATTRIBUTE)
第二种、简单类型绑定
支持整型、字符串、单精度/双精度、布尔型。 当请求的参数名称和处理器形参名称一致时会将请求参数与形参进行绑定。 可以通过@RequestParam对简单类型的参数进行绑定。 如果不使用@RequestParam,要求request传入参数名称和controller方法的形参名称一致,方可绑定成功。 如果使用@RequestParam,不用限制request传入参数名称和controller方法的形参名称一致。
@RequestParam - 形参注解
1. name:映射传参名和形参名 2. defaultValue:定义默认值 3. required:定义参数是否必须存在 @RequestMapping的params与@RequestParam的required之间的关系探索,在没有userId参数的前提下大实验: 1. params="userId" & required=false & int userId --> 访问失败,400,提示需要参数 2. required=false & int userId --> 访问失败,500,提示null不能赋给int类型变量 3. required=true & int userId --> 访问失败,400,提示需要参数 4. required=false & Integer userId --> 访问成功,值为null 5. defaultValue = "-2" & required=false & int userId --> 访问成功,值为-2 6. defaultValue = "-4" & required=true & int userId --> 访问成功,值为-4(设置defaultValue,required就无效)
第三种、简单POJO类型绑定
如果传过来的参数属于两个不同的POJO对象,可以加前缀区别。例如,对象User{name,pass}和Address{id,name},名字就
定义为:”u.name”,”addr.name”。这里的u和addr就是处理方法的形参名。
第四种、包装POJO类型绑定
如果POJO对象里又有POJO对象,参数名可以这样设置:”name1.name2”。例如,User对象里有Address对象,那么name=”address.id”。
第五种、自定义参数绑定(如日期类型Date):
方法1:在POJO类的日期属性加注解@DateTimeFormat(pattern = “yyyy-MM-dd”)。方法2:定义转换器
1. 定义Converter<String, Date>的实现类DateConverter 2. 声明<mvc:annotation-driven conversion-service="conversionService"/> 3. 声明FormattingConversionServiceFactoryBean并传入DateConverter作为参数,具体如下: ```xml <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"> <property name="converters"> <set> <bean class="com.springmvc.DateConverter"/> </set> </property> </bean> ```
集合类型:分两种,基本数据类型的集合和POJO类型的集合。
包含多个集合属性的类:
@ModelAttribute:
Spring的底层把形参值设置进request域,key为首字母小写的形参类型名。 如果形参注解了@ModelAttribute(value),会把注解的value值作为key。
相关文章推荐
- 整理一下当年的学习笔记之:SpringMVC的各种参数绑定方式
- SpringMVC学习笔记(九)——简单类型、pojo类、自定义日期类型的参数绑定
- springmvc学习笔记(11)-springmvc注解开发之简单参数绑定
- springmvc学习笔记(12)-springmvc注解开发之包装类型参数绑定
- springmvc学习笔记(13)-springmvc注解开发之集合类型参数绑定
- springMVC学习笔记 --- day03参数绑定
- Springmvc学习笔记(4)之复杂参数类型绑定、校验、数据回显和异常处理
- 【SpringMVC注解开发】案例驱动-包装类型pojo参数绑定 SpringMVC学习笔记(五)
- springmvc学习笔记(11)-springmvc注解开发之简单参数绑定
- springmvc学习笔记(13)-springmvc注解开发之集合类型参数绑定
- springmvc学习笔记(12)-springmvc注解开发之包装类型参数绑定
- (转)SpringMVC学习(六)——SpringMVC高级参数绑定与@RequestMapping注解
- [转]学习笔记_springmvc注解形式的开发参数接收
- SpringMVC 学习笔记(三) 使用ServletAPI 和 实体 做为参数
- SpringMVC学习笔记四:数据绑定
- SpringMVC学习(二)高级参数绑定,拦截器,controller方法返回值
- 【SpringMVC学习05】SpringMVC中的参数绑定总结
- SSM框架系列学习总结9之SpringMVC参数绑定
- 注解学习笔记-handler method 参数绑定常用的注解
- springmvc学习笔记(7)——传递对象作为参数(POJO)