SpringMVC框架03——数据绑定
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——数据绑定的更多相关文章
- 教你搭建SpringMVC框架( 更新中、附源码)
一.项目目录结构 二.SpringMVC需要使用的jar包 commons-logging-1.2.jar junit-4.10.jar log4j-api-2.0.2.jar log4j-core- ...
- SpringMVC类型转换、数据绑定
SpringMVC类型转换.数据绑定详解[附带源码分析] 目录 前言 属性编辑器介绍 重要接口和类介绍 部分类和接口测试 源码分析 编写自定义的属性编辑器 总结 参考资料 前言 SpringMVC是目 ...
- SpringMvc框架MockMvc单元测试注解及其原理分析
来源:https://www.yoodb.com/ 首先简单介绍一下Spring,它是一个轻量级开源框架,简单的来说,Spring是一个分层的JavaSE/EEfull-stack(一站式) 轻量级开 ...
- SpringMVC框架简介
1.简介 SpringMVC也叫Spring Web mvc,属于表现层的框架.Spring MVC是Spring框架的一部分,是在Spring3.0后发布的 01.Spring mvc的优缺点 M ...
- SpringMVC框架02——SpringMVC的Controller详解
1.基于注解的控制器 1.1.@Controller 注解类型 在SpringMVC中使用org.springframework.stereotype.Controller注解类型声明某类的实例是一个 ...
- 教你搭建SpringMVC框架( 附源码)
一.项目目录结构 二.SpringMVC需要使用的jar包 commons-logging-1.2.jar junit-4.10.jar log4j-api-2.0.2.jar log4j-core- ...
- SpringMVC框架笔记01_SpringMVC的使用案例和架构组件_SpringMVC和Mybatis整合_接收参数
目录 第1章:SpringMVC简介 1.1 什么是SpringMVC 1.2 SpringMVC的处理流程 第2章:SpringMVC入门程序 2.1 场景描述 2.2 步骤分析 2.3 步骤一:创 ...
- SpringMVC框架 课程笔记
SpringMVC框架 课程笔记 第0章 SpringMVC框架的核心内容 1.SpringMVC 概述 2.SpringMVC 的 HelloWorld 3.使用 @RequestMapping 映 ...
- SpringMVC框架搭建 基于注解
本文将以一个很简单的案例实现 Springmvc框架的基于注解搭建,一下全为个人总结 ,如有错请大家指教!!!!!!!!! 第一步:创建一个动态web工程(在创建时 记得选上自动生成 web.xml ...
随机推荐
- Oracle 11g DRCP配置与使用
Oracle 11g DRCP配置与使用Oracle 11g推出了驻留连接池(Database Resident Connection Pool)特性,提供了数据库层面上的连接池管理机制,为应对高并发 ...
- linux man命令
http://note.youdao.com/noteshare?id=98878258c6453f92117355deba8b8439
- python自带的IDLE如何清屏
作者:知乎用户 链接:https://www.zhihu.com/question/20917976/answer/32876441 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转 ...
- Linux命令(四)文件传输
1. 将当前目录下的test1.txt文件,复制到 /tmp/Douzi目录下,命名为test1.py 2. 将服务器/tmp/Douzi/hello.py复制到本地上,重命名为 hello_Do ...
- scala 基础到高阶
本文打算对这小段时间学习 scala 以及 spark 编程技术做个小结,一来温故而知新,而来为以后查阅方便 spark scala 入门小例子 文本文件 UserPurchaseHistory.c ...
- Hash::make与Hash::check
调用方法之前要先去引用: use Illuminate\Support\Facades\Hash; 可以调用 Hash 门面上的 make 方法对存储密码进行哈希: $pwd = Hash::make ...
- IE 11 使用 flexbox 垂直居中 bug
不要使用 min-height 改为 height 即可 caniuse: https://caniuse.com/#search=flexbox
- Git常见错误处理
如果输入$ Git remote add origin git@github.com:djqiang(github帐号名)/gitdemo(项目名).git 提示出错信息:fatal: remo ...
- C#调用Java WebService int、DateTime等类型值接收到为空
今天在调用Java接口时,有个int类型的值很明确的传了1,但接口一直返回没有接收到这个值. 解决方法: 引用接口时,VS会自动生成一个类,类中对于非string类型的字段会生成一个xxSpecifi ...
- start-stop-daemon 启动停止系统守护进程
1.start-stop-daemon start-stop-daemon是一个Debian体系里的一个守护进程管理软件,可以用指定的用户启停软件.CentOS有自己的daemon()机制(在/etc ...