还有一种是包装类型pojo指的是pojo中有另一个也是pojo的属性,即pojo套pojo,为什么会设计这种pojo呢?在前面的博文中我也有提到,这种组合的设计方法对于后期程序的扩展很有用,比如复杂的查询条件就需要包装到这种包装类型中。SpringMVC参数绑定,简单来说就是将客户端请求的key/value数据绑定到controller方法的形参上,然后就可以在controller中使用该参数了。
说实话作为一个开发人员最常用的就是@xxxx,有时候前端会问,传到哪里,body里面还是url里面。这个时候就很搞了。另外有时候会感觉其实不加也可以做到,所以今天来复习下。
在springmvc中,接收页面提交的数据是通过方法形参来接收的。从客户端请求的key/value数据,经过参数绑定,将key/value数据绑定到controller方法的形参上,然后就可以在controller中使用该参数了。来看一下这个过程:
springmvc中,有支持的默认类型的绑定。也就是说,直接在controller方法形参上定义默认类型的对象,就可以使用这些对象。
- HttpServletRequest对象
- HttpServletResponse对象
- HttpSession对象
- Model/ModelMap对象(Model/ModelMap对象,Model是一个接口,ModelMap是一个接口实现 ,作用是将Model数据填充到request域,跟ModelAndView类似)
不过目前我使用的最多的还是Request和Response对象,Session很少
要注意一点的是,简单类型的绑定中,方法形参中的参数名要和前台传进来的名一样才能完成参数的绑定。当然使用@RequestParam对简单的类型进行参数绑定可以避免,必须对应的情况,给前端大哥能减少不少压力.....
再来总结下pojo类型的绑定,继续上面的案例,当页面展示了商品详细信息后,我做了修改,然后点击提交,后台应该将我提交的这些参数全部更新到数据库的items表中,也就是说,我提交的这些参数要绑定到Items对象或者其扩展对象中。
如果出现类型不一致的情况,例如前端是String,实体类里面是Date,那么需要一个转换器了,或者自己动手转(很常用,比较蠢的方法)
两个思路:
- 在形参中添加HttpServletRequest request参数,通过request接收查询条件参数。
- 在形参中让包装类型的pojo接收查询条件参数。