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——数据绑定的更多相关文章

  1. 教你搭建SpringMVC框架( 更新中、附源码)

    一.项目目录结构 二.SpringMVC需要使用的jar包 commons-logging-1.2.jar junit-4.10.jar log4j-api-2.0.2.jar log4j-core- ...

  2. SpringMVC类型转换、数据绑定

    SpringMVC类型转换.数据绑定详解[附带源码分析] 目录 前言 属性编辑器介绍 重要接口和类介绍 部分类和接口测试 源码分析 编写自定义的属性编辑器 总结 参考资料 前言 SpringMVC是目 ...

  3. SpringMvc框架MockMvc单元测试注解及其原理分析

    来源:https://www.yoodb.com/ 首先简单介绍一下Spring,它是一个轻量级开源框架,简单的来说,Spring是一个分层的JavaSE/EEfull-stack(一站式) 轻量级开 ...

  4. SpringMVC框架简介

    1.简介 SpringMVC也叫Spring Web  mvc,属于表现层的框架.Spring MVC是Spring框架的一部分,是在Spring3.0后发布的 01.Spring mvc的优缺点 M ...

  5. SpringMVC框架02——SpringMVC的Controller详解

    1.基于注解的控制器 1.1.@Controller 注解类型 在SpringMVC中使用org.springframework.stereotype.Controller注解类型声明某类的实例是一个 ...

  6. 教你搭建SpringMVC框架( 附源码)

    一.项目目录结构 二.SpringMVC需要使用的jar包 commons-logging-1.2.jar junit-4.10.jar log4j-api-2.0.2.jar log4j-core- ...

  7. SpringMVC框架笔记01_SpringMVC的使用案例和架构组件_SpringMVC和Mybatis整合_接收参数

    目录 第1章:SpringMVC简介 1.1 什么是SpringMVC 1.2 SpringMVC的处理流程 第2章:SpringMVC入门程序 2.1 场景描述 2.2 步骤分析 2.3 步骤一:创 ...

  8. SpringMVC框架 课程笔记

    SpringMVC框架 课程笔记 第0章 SpringMVC框架的核心内容 1.SpringMVC 概述 2.SpringMVC 的 HelloWorld 3.使用 @RequestMapping 映 ...

  9. SpringMVC框架搭建 基于注解

    本文将以一个很简单的案例实现 Springmvc框架的基于注解搭建,一下全为个人总结 ,如有错请大家指教!!!!!!!!! 第一步:创建一个动态web工程(在创建时 记得选上自动生成 web.xml ...

随机推荐

  1. [学习笔记]插头dp

    基于连通性的状压dp 巧妙之处:插头已经可以表示内部所有状态了. 就是讨论麻烦一些. 简介 转移方法:逐格转移,分类讨论 记录状态方法:最小表示法(每次要重新编号,对于一类没用“回路路径”之类的题,可 ...

  2. docker maven 出错:Failed to execute goal com.spotify:docker-maven-plugin:...: Request error: POST https://192.168.99.100:2376/build?t=

    Spring Boot项目构建docker镜像,出错Failed to execute goal com.spotify:docker-maven-plugin:0.4.13:build (defau ...

  3. 【洛谷P1828】香甜的黄油

    题目大意:给定 N 个点,M 条边的无向图,在其中选定 P 个点,每个点可能被选多次,求图中的一个点到选定的 P 个点的距离的值最小是多少. 题解:由于数据范围的限制,直接 Floyd 会超时,因此对 ...

  4. CentOS 7 系统root用户忘记密码的重置方法

    在一台服务器我们忘记了root的账号或者root账号错误怎么办,我们只有进入到内核里面去修改,具体的操作如下: 1.进入内核 在开机的时候出现下图的界面时 按e键进入内核入下图 2.进入单用户模式 在 ...

  5. openstack项目【day23】:openstack组件介绍

    本节内容 openstack介绍 openstack项目(服务名是项目名的别名) openstack运行流程 openstack各组件详解 一:openstack介绍             open ...

  6. 转:Xcode打印堆栈信息

    2#   分享于 14-11-26 19:15:36 Chrome 39.0.2171.71 Mac OS X 10.10.1 如果只是看调用栈的话,可以使用 lldb 的功能.在你的代码里面打上一个 ...

  7. Spark记录-Scala函数与闭包

    函数声明 Scala函数声明具有以下形式 - def functionName ([list of parameters]) : [return type] Scala 如果不使用等号和方法体,则隐式 ...

  8. WINDOWS控制界面操作命令for WIN10

    Windows系统:开始--运行--命令大全: cmd--------CMD命令提示符 cleanmgr-------垃圾整理 compmgmt.msc---计算机管理 conf----------- ...

  9. android tools相关

    1.showin 在include 的根节点设置,可一预览效果

  10. IO 复习字节流字符流拷贝文件

    /* 本地文件 URL 文件拷贝 *//*文本文件拷贝 可以通过 字符流,也可以通过字节流*/ /*二进制文件拷贝 只可以通过字节流*//* 希望这个例子能帮助搞懂 字符流与字节流的区别 */ imp ...