已经使用SpringMVC开发了几个项目,平时也有不少朋友问我数据怎么传输,怎么绑定之类的话题,今天做一个总结。在此之前,大家可以看一下我之前的一篇关于Spring restful的文章http://www./spring-restful/。 项目下载:http://pan.baidu.com/share/link?shareid=955245807&uk=1896630845 首先贴出Controller的全部内容
这种方式支持get和post,参数可选
访问方式简单的比如http://localhost:8080/springmvc-param/request/get0?p1=xxx。 这种方式支持get,参数必须
这种方式和第一种不同的是,指定了访问访问必须为GET,而且参数是必须的,可以通过如下方式访问这个地址:http://localhost:8080/springmvc-param/request/get1?p1=xxxx。 这种方式仅支持GET,参数可选
这个方法和第二种唯一不同的就是参数是可选的,其他没有不同。 这种方式仅支持GET,参数可选
ModelAndView表示绑定了数据的视图,可以通过EL表达式去取值。
先访问http://localhost:8080/springmvc-param/request/userForm这个方法,跳转到一个页面,并向浏览器写入Cookie,第二个方法访问的时候即可通过@CookieValue方式来取到Cookie中的值。 绑定数据到一个对象上,支持get和post 一个User,一个Phone,一个User拥有多个Phone,为了演示,User中有一个List和Array的Phone的集合
Controller方法如下
HTML表单如下
一对多的时候,使用多一方的在一一方的对象中的属性名,加上数组下标,即phones[0].brand,phones[1].brand即可绑定到User的phones属性上,这种方法的局限性就是要求下标是正确的,否则会无法绑定,不是很方便,但是也有其适用场景。 下面这种方法就是比较方便了,仅支持post,但是必须要在消息转换器中配置JSON解析器
并注册到RequestMappingHandlerAdapter的messageConverters中。 Controller如下:
Javascript如下
该方法仅支持POST的方式,会使用到json2.js这个类库,注意设置contentType:"application/json"这个属性,否则会报415未知的类型异常。 传递简单的字符串数组,仅支持POST方式
和上面的方法类似,注意contentType:"application/json",否则同样的415错误。 下面的方法是restful中的路径变量,支持get,post,delete等,如:xxx/1,xxx/2这种方式,经测试,这个方法的奇葩之处在于"xxx/5,4"以及"xxx/[5,4]"的效果是一样的,看代码:
可以直接将后面的路径变量,转换成相应的数组。可以在浏览器输入:http://localhost:8080/springmvc-param/request/array/5,4,3,2,1或者http://localhost:8080/springmvc-param/request/array/[5,4,3,2,1],都可以转换成数组。 如果一个表单对应多个实体类,恰好这些类中具有相同的属性,这时候SpringMVC就犯难了,我们要做的是让SpringMVC明白我们在给谁赋值。 支持post,get,put 如下,A,B,C,其中C中包含了A和B两个成员变量
Controller如下
HTML如下:
通过object.property即可指定给谁赋值。
另外一个是关于Session取值的 代码如下
在Controller上加上注解@SessionAttributes(value="user"),再使用ModelMap的put方法(非addAttribute方法),然后在getUser方法中,使用@ModelAttribute("user")即可取得session中的user对象
Maven依赖:
Spring配置
转载请注明来源:http://www./springmvc-data-bind/ |
|
来自: 风_宇星 > 《springMVC》