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. Kubernetes 部署 1.9.7 高可用版

    转载于https://codegreen.cn/2018/08/30/kubernetes-cluster-1.9.7/ 前言 在部署之前,首先感谢 手动搭建高可用的kubernetes 集群 博文的 ...

  2. java基础基础总结----- String

  3. JAVA记录-JSP指令

    JSP中有三种类型的指令标签 - 序号 指令 说明 1 <%@ page ... %> 定义页面相关属性,如脚本语言,错误页面和缓冲要求. 2 <%@ include ... %&g ...

  4. ngx_lua_API 指令详解(二)ngx.re.match/find/gmatch/sub/gsub指令集合

    1.先来个官方的ngx.re.match location /ngx_re_match { default_type text/html; content_by_lua_block { local m ...

  5. Spring RedisTemplate操作-事务操作(9)

    @Autowired @Qualifier("redisTemplate") private RedisTemplate<String, String> stringr ...

  6. es6笔记(3) 变量的解构赋值

    基本概念 本质上是一种匹配模式,只要等号两边的模式相同,那么左边的变量就可以被赋予对应的值. // 以往定义接个变量的时候,需要这样 var a = 1, b = 2, c = 3; // 使用ES6 ...

  7. iOS 根据生日得到生肖,星座,年龄的算法

    根据用户生日,得到相应的年龄,星座和生肖.有的项目中可能会用到,贴出来共享. 得到年龄,这个很简单了: - (void)getAgeWith:(NSDate*)birthday{ //日历 NSCal ...

  8. header()跳转

    if ($toNews == 1) { header('Location:/ucenter/pageMailBox/2'); exit; } PHP跳转页面,用 header() 函数 定义和用法 h ...

  9. python垃圾回收二

    由于循环引用的存在,我们在删除了a跟b之后,引用计数是1,这样,现有的垃圾回收机制是永远不可能把她们删除了.他们将永远存在于内存中. 我们当然不能对这种情况置之不理,于是,我们又添加了两种新的回收机制 ...

  10. py-faster-rcnn代码阅读2-config.py

    简介  该文件指定了用于fast rcnn训练的默认config选项,不能随意更改,如需更改,应当用yaml再写一个config_file,然后使用cfg_from_file(filename)导入以 ...