一、简单数据绑定,处理器形参中添加如下类型的参数,处理器会默认识别并进行赋值
1、 HttpServletRequest:通过request对象获取请求信息
2、 HttpServletResponse:通过response处理响应信息
3、 HttpSession:通过session对象得到session中存放的对象
4、 Model/ModelMap:ModelMap是Model接口的实现类,通过Model或ModelMap向页面传递数据
@RequestMapping(“/list”) public String getUsers(HttpServletRequest request){ } HttpServletResponse HttpSession 同上
@RequestMapping(“/list”) public String getUsers(HttpServletRequest request,Model model){ model.addAttribute(“users”,obj); return “list”; } 在jsp页面通过${users.xxx}获取数据对象的属性
如果使用Model则可以不使用ModelAndView对象,Model对象可以向页面传递数据,View对象则可以使用String返回值替代。不管是Model还是ModelAndView,其本质都是使用Request对象向jsp传递数据。 |
5、 简单数据类型,当请求的参数名称和处理器形参名称一致时会将请求参数与形参绑定。
支持的数据类型:参数类型推荐使用包装数据类型,因为基础数据类型不可以为null。
整型:Integer、int
字符串:String
单精度:Float、float
双精度:Double、double
布尔型:Boolean、boolean—请求的参数值为true或false
public String editItem(Model model,Integer id,Boolean status) throws Exception |
6、 @RequestParam:使用@RequestParam可用于处理简单类型的绑定。
public String editItem(@RequestParam(value=" id",required=true) String id) {
} |
@RequestParam中的参数
value:参数的名字,即入参的请求参数名字
required:是否必须,默认为true,表示请求中一定要有相应的参数,否则400错误。
defalutValue:默认值,表示如果请求中没有同名参数时的默认值。
二、高级绑定
1、 绑定pojo-简单java对象(普通的javabean):如果提交的参数很多,或提交的表单中的内容很多的时候可以使用pojo接收数据,要求pojo对象中的属性名和表单中input的name属性已知。
页面:
<input type="text" name="name"/> <input type="text" name="price"/> |
POJO
public class Product{ private String name; private double price; } |
处理器:
public String addProduct(Product product){
} |
注意:提交的表单中不要有日期类型的数据,否则会报400错误。如果想提交日期类型的数据需要用到后面的自定义参数绑定的内容。
2、 绑定包装POJO。
页面
<input type="text" name="items.name" /> <input type="text" name="items.price" /> |
POJO
PublicclassQueryVo { privateItemsitems;
} |
3、 绑定数组
如一次性删除多条数据,前台传递多个id
jsp
<table width="100%" border=1> <tr> <td>商品名称</td> <td>商品价格</td> <td>生产日期</td> <td>商品描述</td> <td>操作</td> </tr> <tr> <td><input name="ids" value="1" type="checkbox"></td> <td> </td> <td></td> <td></td> <td></td> <td>修改</td> </tr> <tr> <td><input name="ids" value="2" type="checkbox"></td> <td> </td> <td></td> <td></td> <td></td> <td>修改</td>
</tr> <tr> <td><input name="ids" value="3" type="checkbox"></td> <td> </td> <td></td> <td></td> <td></td> <td>修改</td> </tr> </table> |
Controller:Controller方法中可以用String[]接收,或者pojo的String[]属性接收。两种方式任选其一即可
@RequestMapping("/queryitem") public String queryItem(QueryVo queryVo, String[] ids) { System.out.println(queryVo.getItems().getName()); System.out.println(queryVo.getItems().getPrice()); System.out.println(ids.toString()); return null; } |