SpringMVC框架03——數據綁定

一、綁定基本數據類型

在Controller類中添加業務方法:javascript

/** * 綁定基本數據類型 */ @RequestMapping("/baseType") @ResponseBody public String baseType(@RequestParam("id") int id){ return "id="+id; }

 訪問:html

二、綁定包裝類

Controller類中的業務方法:java

/** * 綁定包裝類 */ @RequestMapping("/packageType") @ResponseBody public String packageType(@RequestParam("id") Integer id){ return "id:"+id; }

 訪問:jquery

三、綁定數組類型

Controller類中的業務方法:ajax

/** * 綁定數組 */ @RequestMapping("/arrayType") @ResponseBody public String arrayType(String[] name){ StringBuffer stringBuffer = new StringBuffer(); for (String item:name){ stringBuffer.append(item+" "); } return stringBuffer.toString(); }

 訪問:spring

四、綁定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類,模擬數據庫存儲:json

@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頁面spring-mvc

<%@ 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:

提交後結果:

五、綁定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:

提交後結果:

六、綁定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:

提交後結果:

七、綁定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:

提交後結果:

八、綁定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:

相關文章
相關標籤/搜索