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 ...
随机推荐
- NOIP2017 列队——动态开点线段树
Description: Sylvia 是一个热爱学习的女♂孩子. 前段时间,Sylvia 参加了学校的军训.众所周知,军训的时候需要站方阵. Sylvia 所在的方阵中有n×m名学生,方阵的行数为 ...
- postgresql常见命令及操作
pgsql已经更新到beta11了,不同版本的服务器启动或相关命令.配置可能会有不同,所以得根据pg版本进行操作.下面记录一些工作中常用到的一些操作,主要包括服务启动.备份/恢复数据.数据目录迁移.常 ...
- Angular的依赖注入(依赖反转)原理说明
依赖注入(依赖反转)意思是由函数决定要引入什么样的依赖: let mod = angular.module('test',[]); mod.controller('test_c',function($ ...
- 鸟哥的Linux私房菜——第十五章:正规表示法
视频链接 B站:http://www.bilibili.com/video/av10364761/ 目录如下 1. 前言:2. 基础正规表示法:2.1 以 grep 撷取字符串 (grep -iv ...
- Flex 自定义 Zlert 组件!
说明: 原生的 Alert.show 参数,要显示的按钮你只能 Alert.OK | Alert.Cancel 这样; 自定义 Zlert 参数跟原生的 差不多,按钮写法是这样写的: {"b ...
- 第6月第10天 svn checkout sqlite3
1. http://www.cnblogs.com/xuling/p/5602036.html 2. http://blog.csdn.net/qq_26819733/article/details/ ...
- mysql修改时区
查看mysql当前时间 查看mysql时区设置 查看mysql数据库的时区 mysql修改时区的几种方法
- Python2的object和type
前言: Python在2.2和3.0之间,把继承了object的类叫做新式类,如果我们定义了一个类,他没有继承object,则不是新式类,则没有__class__,__bases__等属性,而用typ ...
- GDB命令
recursiveDescription 打印view层次结构
- lucene入门查询索引——(三)
1.用户接口(lucene不提供)