三. 数据绑定
三.一 绑定单个基本的参数
绑定单个参数时与上面的例子一样。
1 . 前台
<!-- 采用的是post提交的方式 --> <form action="/SpringMVC02/user/register.action" method="post"> 用户名: <input type="text" name="name"/> <br/> 年龄:<input type="text" name="age"><br/> 性别:<input type="text" name="sex"><br/> 描述:<input type="text" name="description"><br/> <input type="submit" value="提交"> </form>
2 . 后端接收
@RequestMapping(value="/register") public String register(@RequestParam(value="name") String name, @RequestParam(value="age") Integer age,HttpServletResponse response){ response.setCharacterEncoding("utf-8"); System.out.println("name:"+name); System.out.println("age:"+age); return "user/list"; }
3 . 前台参数写入
4 .控制台打印输出
当然,绑定参数除了@RequestParam 注解外,还可以用@pathVariable 注解。 具体可以参数第三章和第四章的注解。
三.二 绑定POJO 对象
需要前端的name中的值与POJO 对象中的属性值保持一致。 与Struts2 的相同。
前端与上面的一致。
后端接收:
@RequestMapping(value="/register") public String register(User user){ System.out.println("接收的对象:"+user.toString()); return "user/list"; }
前端输入:
控制台打印输出:
三.三 绑定关联对象
如 User 类中关联一个Dept 部门类,表示一个员工所在的部门的信息。
部门Dept 表:
package com.yjl.pojo; /** @author: yuejl @date: 2019年2月16日 上午10:15:08 @Description 数据库中一的一方 部门实体 */ public class Dept { /** * @param id 部门的编号 * @param name 部门的名称 * @param description 部门的描述 */ private Integer id; private String name; private String description; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } @Override public String toString() { return "Dept [id=" + id + ", name=" + name + ", description=" + description + "]"; } }
员工User 表里面添加 Dept的引用,实现setter和getter方法,并且重写User 中的toString() 方法,添加dept的打印。
//关联部门的引用 private Dept dept;
1 . 前端页面展示
<form action="/SpringMVC02/user/register.action" method="post"> 用户名: <input type="text" name="name"/> <br/> 年龄:<input type="text" name="age"><br/> 性别:<input type="text" name="sex"><br/> 描述:<input type="text" name="description"><br/> <!-- 用属性.属性 的形式来接收。 --> 部门名称:<input type="text" name="dept.name"><br/> 部门描述:<input type="text" name="dept.description"><br/> <input type="submit" value="提交"> </form>
2 . 后端接收与上面的一致。
@RequestMapping(value="/register") public String register(User user){ System.out.println("接收的对象:"+user.toString()); return "user/list"; }
3 . 前台数据输入
4 . 控制台打印输出
三.四 绑定数组对象
以老蝴蝶的爱好为例。
1 . 前端界面
<!-- 爱好,数组接收 --> <input type="checkbox" name="hobby" value="读书">读书 <input type="checkbox" name="hobby" value="编程">编程 <input type="checkbox" name="hobby" value="打游戏">打游戏 <input type="checkbox" name="hobby" value="看电影">看电影
2 . 后台接收处理。 当然也可以放置在user 里面,这里用参数处理。
@RequestMapping(value="/register") public String register(User user,@RequestParam(value="hobby",required=false) String[] hobby){ System.out.println("接收的对象:"+user.toString()); System.out.println("爱好是:"+Arrays.toString(hobby)); return "user/list"; }
3 .前端输入勾选
4 . 后台打印输出,显示数组值。
当然,也可以将hobby 数组放置在User 类里面。
5 .在User 类里面 添加 hobby 的数组属性,添加setter和getter方法
private String [] hobby; public String[] getHobby() { return hobby; } public void setHobby(String[] hobby) { this.hobby = hobby; }
6 .后台接收:
@RequestMapping(value="/register") public String register(User user){ System.out.println("接收的对象:"+user.toString()); String []hobby=user.getHobby(); System.out.println("对象接收爱好是:"+Arrays.toString(hobby)); return "user/list"; }
7 .前端数据输入:
8 .后端控制台打印输出