SpringMVC框架03—數據綁定
阿新 • • 發佈:2019-03-16
fff 價格 drive pom 存儲 poj 轉換 tor uri
1、綁定基本數據類型
在Controller類中添加業務方法:
/** * 綁定基本數據類型 */ @RequestMapping("/baseType") @ResponseBody public String baseType(@RequestParam("id") int id){ return "id="+id; }
訪問:
2、綁定包裝類
Controller類中的業務方法:
/** * 綁定包裝類 */ @RequestMapping("/packageType") @ResponseBody public String packageType(@RequestParam("id") Integer id){return "id:"+id; }
訪問:
3、綁定數組類型
Controller類中的業務方法:
/** * 綁定數組 */ @RequestMapping("/arrayType") @ResponseBody public String arrayType(String[] name){ StringBuffer stringBuffer = new StringBuffer(); for (String item:name){ stringBuffer.append(item+" "); }return stringBuffer.toString(); }
訪問:
4、綁定POJO對象
創建Course類和Author類
public class Course { private int id; private String name; private double price; private Author author; //getter()、setter() }
public class Author { private int id; private String name;//getter、setter() }
創建CourseDao類,模擬數據庫存儲:
@Repository public class CourseDao { //模擬數據庫存儲數據 private Map<Integer, Course> map = new HashMap<>(); /** * 添加方法 */ public void add(Course course){ map.put(course.getId(),course); } /** * 獲取所有課程 */ public Collection<Course> getAll(){ return map.values(); } }
Controller類中添加業務方法:
@Controller public class DataBindController { @Autowired private CourseDao courseDao; /** * 綁定POJO對象 */ @RequestMapping("/pojoType") public String pojoType(Course course, Model model){ //將課程添加到數據庫 courseDao.add(course); //封裝數據 model.addAttribute("courses",courseDao.getAll()); return "showData"; } }
創建addCourse.jsp頁面
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>添加課程</title> </head> <body> <form action="/pojoType" method="post"> <p> 課程編號:<input type="text" name="id"> </p> <p> 課程名稱:<input type="text" name="name"> </p> <p> 課程價格:<input type="text" name="price"> </p> <p> 講師姓名:<input type="text" name="author.name"> </p> <p> <input type="submit" value="提交"> </p> </form> </body> </html>
創建showData.jsp頁面,顯示數據:
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ page isELIgnored="false" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <html> <head> <title>展示數據</title> </head> <body> <table border="1" width="50%"> <tr> <th>課程編號</th> <th>課程名稱</th> <th>課程價格</th> <th>講師姓名</th> </tr> <c:forEach var="course" items="${courses}"> <tr> <td>${course.id}</td> <td>${course.name}</td> <td>${course.price}</td> <td>${course.author.name}</td> </tr> </c:forEach> </table> </body> </html>
訪問URL:
提交後結果:
5、綁定List集合
創建CourseList類,用於存儲集合對象
public class CourseList { private List<Course> courses; public List<Course> getCourses() { return courses; } public void setCourses(List<Course> courses) { this.courses = courses; } }
Controller類中的業務方法:
/** * 綁定List集合 */ @RequestMapping("/listType") public String listType(CourseList courseList,Model model){ for (Course course : courseList.getCourses()){ courseDao.add(course); } model.addAttribute("courses",courseDao.getAll()); return "showData"; }
創建addCourseList.jsp頁面,添加數據:
<form action="/listType" method="post"> <p> 課程1編號:<input type="text" name="courses[0].id"> </p> <p> 課程1名稱:<input type="text" name="courses[0].name"> </p> <p> 課程1價格:<input type="text" name="courses[0].price"> </p> <p> 講師姓名:<input type="text" name="courses[0].author.name"> </p> <hr> <p> 課程2編號:<input type="text" name="courses[1].id"> </p> <p> 課程2名稱:<input type="text" name="courses[1].name"> </p> <p> 課程2價格:<input type="text" name="courses[1].price"> </p> <p> 講師姓名:<input type="text" name="courses[1].author.name"> </p> <p> <input type="submit" value="提交"> </p> </form>
訪問URL:
提交後結果:
6、綁定Map集合
創建CourseMap類,用於存儲Map數據:
public class CourseMap { private Map<String,Course> courses = new HashMap<>(); public Map<String, Course> getCourses() { return courses; } public void setCourses(Map<String, Course> courses) { this.courses = courses; } }
Controller類中的業務方法:
/** * 綁定Map集合 */ @RequestMapping("/mapType") public String mapType(CourseMap courseMap,Model model){ for (String key : courseMap.getCourses().keySet()){ Course course = courseMap.getCourses().get(key); courseDao.add(course); } model.addAttribute("courses",courseDao.getAll()); return "showData"; }
創建addCourseMap.jsp頁面:
<form action="/mapType" method="post"> <p> 課程1編號:<input type="text" name="courses[‘one‘].id"> </p> <p> 課程1名稱:<input type="text" name="courses[‘one‘].name"> </p> <p> 課程1價格:<input type="text" name="courses[‘one‘].price"> </p> <p> 講師姓名:<input type="text" name="courses[‘one‘].author.name"> </p> <hr> <p> 課程2編號:<input type="text" name="courses[‘two‘].id"> </p> <p> 課程2名稱:<input type="text" name="courses[‘two‘].name"> </p> <p> 課程2價格:<input type="text" name="courses[‘two‘].price"> </p> <p> 講師姓名:<input type="text" name="courses[‘two‘].author.name"> </p> <p> <input type="submit" value="提交"> </p> </form>
訪問URL:
提交後結果:
7、綁定Set集合
創建CourseSet類,必須要在無參構造中,向set集合添加兩個對象!
public class CourseSet { private Set<Course> courses = new HashSet<>(); public Set<Course> getCourses() { return courses; } public void setCourses(Set<Course> courses) { this.courses = courses; } public CourseSet() { courses.add(new Course()); courses.add(new Course()); } }
Controller類中的業務方法:
/** * 綁定Set集合 */ @RequestMapping("/setType") public String setType(CourseSet courseSet,Model model){ for (Course course : courseSet.getCourses()){ courseDao.add(course); } model.addAttribute("courses",courseDao.getAll()); return "showData"; }
創建addCourseSet.jsp頁面
<form action="/setType" method="post"> <p> 課程1編號:<input type="text" name="courses[0].id"> </p> <p> 課程1名稱:<input type="text" name="courses[0].name"> </p> <p> 課程1價格:<input type="text" name="courses[0].price"> </p> <p> 講師姓名:<input type="text" name="courses[0].author.name"> </p> <hr> <p> 課程2編號:<input type="text" name="courses[1].id"> </p> <p> 課程2名稱:<input type="text" name="courses[1].name"> </p> <p> 課程2價格:<input type="text" name="courses[1].price"> </p> <p> 講師姓名:<input type="text" name="courses[1].author.name"> </p> <p> <input type="submit" value="提交"> </p> </form>
訪問URL:
提交後結果:
8、綁定JSON數據
在pom.xml配置文件中添加jackson依賴:
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.8.3</version> </dependency>
在springmvc.xml文件中配置消息轉換器:
<mvc:annotation-driven> <mvc:message-converters> <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"></bean> </mvc:message-converters> </mvc:annotation-driven>
如果在配置消息轉換器時,出現報紅線,可能是約束的原因,只需要在springmvc.xml的約束中添加以下配置:
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">
Controller類中的業務方法:
/** * 綁定JSON數據 */ @RequestMapping("/jsonType") @ResponseBody public Course jsonType(@RequestBody Course course){ course.setPrice(course.getPrice()+100); return course; }
創建sendJson.jsp頁面
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>綁定JSON數據</title> <script src="js/jquery-1.8.3.min.js"></script> <script type="text/javascript"> $(function () { var course = { "id":"8", "name":"SSM框架整合", "price":"200" }; $.ajax({ url:"/jsonType", data:JSON.stringify(course), type:"post", contentType:"application/json;charse=UTF-8", dataType:"json", success:function(data){ alert(data.name+"---"+data.price); } }) }); </script> </head> <body> </body> </html>
發送URL:
SpringMVC框架03—數據綁定