springMVC数据绑定
1.数据绑定的定义
2.常用的数据绑定类型
3.具体使用方法:在搭建好springMVC环境下添加注解@RequestParam(value = "表单对应的name") 即可完成数据绑定
package com.yzy.controller; import com.yzy.entity.Course; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; @Controller public class dataBindHandler { //基本数据类型 @RequestMapping(value = "/baseType") @ResponseBody public String baseType(@RequestParam(value = "id") int id){ return "id:"+id; } //包装类 @RequestMapping(value = "/packageType") @ResponseBody public String packageType(@RequestParam(value = "id") Integer id){ return "id:"+id; } //字符串数组 @RequestMapping(value = "/arrayType") @ResponseBody public String arrayType(String[] name){ StringBuffer stringBuffer=new StringBuffer(); for(String str:name){ stringBuffer.append(str).append(" "); } return stringBuffer.toString(); } //对象(表单的name值与对象的属性名对应即可完成对象的封装) @RequestMapping("/pojoType") public ModelAndView pojoType(Course course){ ModelAndView modelAndView=new ModelAndView(); modelAndView.addObject("course",course); modelAndView.setViewName("index"); return modelAndView; }
关于对象的相应页面的调用数据:
<td>${course.id}</td> <%--取值方式--%> <td>${course.name}</td> <td>${course.price}</td> <td>${course.author.name}</td> <%--级联对象的取值--%>
集合与json的数据绑定:
集合的数据绑定得先定义一个集合<Object>对应的实体类:
public class CourseList { private List<Course> courses; public List<Course> getCourses() { return courses; } public void setCourses(List<Course> courses) { this.courses = courses; } }
绑定数据类型为list时,表单name值的定义方式(set与list一样):
<input type="text" class="form-control" name="courses[0].id" placeholder="请输入课程编号">
绑定数据类型为map时,表单name值的定义方式:
<input type="text" class="form-control" name="courses['one'].id" placeholder="请输入课程编号">
方法的编写(list、map与set一致):
@RequestMapping(value = "/listType") public ModelAndView listType(CourseList courseList){ for(Course course:courseList.getCourses()){ courseDAO.add(course); } ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("index"); modelAndView.addObject("courses",courseDAO.getAll()); return modelAndView; }
对于json的数据绑定,springMVC没有对应的方法,需导入json解析jar包:jackson-databind,并且在spring的配置文件中配置相应的数据绑定解析器
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.8.3</version> </dependency>
<mvc:annotation-driven> <mvc:message-converters> <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"></bean> </mvc:message-converters> </mvc:annotation-driven>
方法的编写:
@RequestMapping(value = "/jsonType") @ResponseBody public Course jsonType(@RequestBody Course course){ //通过解析request中的json数据,生成对应的实体对象 course.setPrice(course.getPrice()+100); return course; }