SpringMVC学习笔记之---数据绑定
SpringMVC数据绑定
一.基础配置
(1)pom.xml
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.1.3.RELEASE</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
</dependencies>
(2)web.xml
<servlet> <servlet-name>SpringMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>SpringMVC</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
(3)springmvc.xml
<?xml version="1.0" encoding="UTF-8"?> <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.xsd"> <!--配置包扫描--> <context:component-scan base-package="controller,dao"></context:component-scan> <!--配置视图解析器--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!--配置前缀--> <property name="prefix" value="/"></property> <!--配置后缀--> <property name="suffix" value=".jsp"></property> </bean> <!--消息转换器--> <mvc:annotation-driven> <mvc:message-converters> <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"></bean> </mvc:message-converters> </mvc:annotation-driven> </beans>
(4)Course.java(实体类)
package entity; public class Course { private int id; private String name; private double price; private Author author; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } public Author getAuthor() { return author; } public void setAuthor(Author author) { this.author = author; } @Override public String toString() { return "Course{" + "id=" + id + ", name='" + name + '\'' + ", price=" + price + ", author=" + author + '}'; } }
(5)Author.java(实体类)
package entity; public class Author { private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
(6)SaveDao.java(用于保存的dao)
package dao; import entity.Course; import org.springframework.stereotype.Repository; import java.util.Collection; import java.util.HashMap; import java.util.Map; @Repository public class SaveDao { private Map<Integer,Course> map=new HashMap<Integer, Course>(); public void save(Course course){ map.put(course.getId(),course); } public Collection<Course> getall(){ return map.values(); } }
(7)index.jsp(用于遍历显示)
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@page isELIgnored="false" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <html> <head> <title>Title</title> </head> <body> <table> <tr> <td>课程ID</td> <td>课程名</td> <td>课程价格</td> <td>讲师ID</td> <td>讲师名</td> </tr> <c:forEach items="${courses}" var="course"> <tr> <td>${course.id}</td> <td>${course.name}</td> <td>${course.price}</td> <td>${course.author.id}</td> <td>${course.author.name}</td> </tr> </c:forEach> </table> </body> </html>
二.数据绑定分类
(一)普通数据类型的数据绑定
(二)包装类的数据绑定
(三)数组类型的数据绑定
(四)对象类型的数据绑定
(五)List集合类型的数据绑定
(六)Map集合类型的数据绑定
(七)Set集合类型的数据绑定
DataController.java
package controller; import dao.SaveDao; import entity.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; @Controller public class DataController { @Autowired private SaveDao saveDao; /** * 基本数据类型的数据绑定 * @param id * @return */ @RequestMapping("/one") @ResponseBody //将返回值显示到页面 public String one(@RequestParam(value="id") int id){ return "id:"+id; } /** * 包装类的数据绑定 * @param id * @return */ @RequestMapping("/two") @ResponseBody public String two(@RequestParam(value="id")Integer id){ return "id"+id; } /** * 数组类型的数据绑定 * @param three * @return */ @RequestMapping("/three") @ResponseBody public String three(String[] three){ StringBuffer st=new StringBuffer(); for(String s:three){ st.append(s).append(" "); } return st.toString(); } /** * 对象类型的数据绑定 * 对象保存,在dao层进行 * @param course * @return */ @RequestMapping("/four") public ModelAndView four(Course course){ saveDao.save(course); ModelAndView modelAndView=new ModelAndView(); modelAndView.setViewName("index"); modelAndView.addObject("courses",saveDao.getall()); return modelAndView; } /** * List集合类型的数据绑定 * 不能直接绑定集合,应该创建一个包装类 * @param courceList * @return */ @RequestMapping("/five") public ModelAndView five(CourceList courceList){ for(Course course:courceList.getCourses()){ saveDao.save(course); } ModelAndView modelAndView=new ModelAndView(); modelAndView.setViewName("index"); modelAndView.addObject("courses",saveDao.getall()); return modelAndView; } /** * Map集合类型的数据绑定 * @param courseMap * @return */ @RequestMapping("/six") public ModelAndView six(CourseMap courseMap){ for(Course course:courseMap.getMap().values()){ System.out.println(course); saveDao.save(course); } ModelAndView modelAndView=new ModelAndView(); modelAndView.setViewName("index"); modelAndView.addObject("courses",saveDao.getall()); return modelAndView; } /** * Set集合类型的数据绑定 * @param courseSet * @return */ @RequestMapping("/seven") public ModelAndView seven(CourseSet courseSet){ for(Course course:courseSet.getSet()){ saveDao.save(course); } ModelAndView modelAndView=new ModelAndView(); modelAndView.setViewName("index"); modelAndView.addObject("courses",saveDao.getall()); return modelAndView; } @RequestMapping(value="/eight") @ResponseBody public String eight(@RequestBody User user){ user.setName("成功"); System.out.println("=========="); return "aa"; } }
三.数据绑定所需的类和页面
(一)普通数据类型
(二)包装类
(三)数组类型
(四)对象类型
1.save.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <form action="/four" method="post"> 课程ID:<input type="text" name="id"> 课程名:<input type="text" name="name"> 课程价格:<input type="text" name="12.5"> 讲师ID:<input type="text" name="author.id"> 讲师名:<input type="text" name="author.name"> <input type="submit"> </form> </body> </html>
(五)List集合
1.CourseList.java
package entity; import java.util.List; public class CourceList { private List<Course> courses; public List<Course> getCourses() { return courses; } public void setCourses(List<Course> courses) { this.courses = courses; } }
2.saveList.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <form action="/five" method="post"> 课程1ID:<input type="text" name="courses[0].id"> 课程1名:<input type="text" name="courses[0].name"> 课程1价格:<input type="text" name="courses[0].price"> 讲师1ID:<input type="text" name="courses[0].author.id"> 讲师1名:<input type="text" name="courses[0].author.name"> 课程2ID:<input type="text" name="courses[1].id"> 课程2名:<input type="text" name="courses[1].name"> 课程2价格:<input type="text" name="courses[1].price"> 讲师2ID:<input type="text" name="courses[1].author.id"> 讲师2名:<input type="text" name="courses[1].author.name"> <input type="submit"> </form> </body> </html>
(六)Map集合
1.CourseMap.java
package entity; import java.util.Map; public class CourseMap { private Map<String,Course> map; public Map<String, Course> getMap() { return map; } public void setMap(Map<String, Course> map) { this.map = map; } @Override public String toString() { return "CourseMap{" + "map=" + map + '}'; } }
2.saveMap.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <form action="/six" method="post"> 课程1ID:<input type="text" name="map['one'].id"> 课程1名:<input type="text" name="map['one'].name"> 课程1价格:<input type="text" name="map['one'].price"> 讲师1ID:<input type="text" name="map['one'].author.id"> 讲师1名:<input type="text" name="map['one'].author.name"> 课程2ID:<input type="text" name="map['two'].id"> 课程2名:<input type="text" name="map['two'].name"> 课程2价格:<input type="text" name="map['two'].price"> 讲师2ID:<input type="text" name="map['two'].author.id"> 讲师2名:<input type="text" name="map['two'].author.name"> <input type="submit"> </form> </body> </html>
(七)Set集合
1.CourseSet.java
package entity; import java.util.HashSet; import java.util.Set; public class CourseSet { private Set<Course> set=new HashSet<Course>(); public Set<Course> getSet() { return set; } public void setSet(Set<Course> set) { this.set = set; } public CourseSet(){ set.add(new Course()); set.add(new Course()); } }
2.saveSet.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <form action="/seven" method="post"> 课程1ID:<input type="text" name="set[0].id"> 课程1名:<input type="text" name="set[0].name"> 课程1价格:<input type="text" name="set[0].price"> 讲师1ID:<input type="text" name="set[0].author.id"> 讲师1名:<input type="text" name="set[0].author.name"> 课程2ID:<input type="text" name="set[1].id"> 课程2名:<input type="text" name="set[1].name"> 课程2价格:<input type="text" name="set[1].price"> 讲师2ID:<input type="text" name="set[1].author.id"> 讲师2名:<input type="text" name="set[1].author.name"> <input type="submit"> </form> </body> </html>
-----------------------------------demo12------------------------------------
SpringMVC学习笔记之---数据绑定的更多相关文章
- SpringMVC:学习笔记(5)——数据绑定及表单标签
SpringMVC——数据绑定及表单标签 理解数据绑定 为什么要使用数据绑定 基于HTTP特性,所有的用户输入的请求参数类型都是String,比如下面表单: 按照我们以往所学,如果要获取请求的所有参数 ...
- 史上最全的SpringMVC学习笔记
SpringMVC学习笔记---- 一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于Spring ...
- springmvc学习笔记(常用注解)
springmvc学习笔记(常用注解) 1. @Controller @Controller注解用于表示一个类的实例是页面控制器(后面都将称为控制器). 使用@Controller注解定义的控制器有如 ...
- SpringMVC学习笔记之二(SpringMVC高级参数绑定)
一.高级参数绑定 1.1 绑定数组 需求:在商品列表页面选中多个商品,然后删除. 需求分析:功能要求商品列表页面中的每个商品前有一个checkbok,选中多个商品后点击删除按钮把商品id传递给Cont ...
- springmvc学习笔记(13)-springmvc注解开发之集合类型參数绑定
springmvc学习笔记(13)-springmvc注解开发之集合类型參数绑定 标签: springmvc springmvc学习笔记13-springmvc注解开发之集合类型參数绑定 数组绑定 需 ...
- springmvc学习笔记--REST API的异常处理
前言: 最近使用springmvc写了不少rest api, 觉得真是一个好框架. 之前描述的几篇关于rest api的文章, 其实还是不够完善. 比如当遇到参数缺失, 类型不匹配的情况时, 直接抛出 ...
- springmvc学习笔记---面向移动端支持REST API
前言: springmvc对注解的支持非常灵活和飘逸, 也得web编程少了以往很大一坨配置项. 另一方面移动互联网的到来, 使得REST API变得流行, 甚至成为主流. 因此我们来关注下spring ...
- SpringMVC:学习笔记(8)——文件上传
SpringMVC--文件上传 说明: 文件上传的途径 文件上传主要有两种方式: 1.使用Apache Commons FileUpload元件. 2.利用Servlet3.0及其更高版本的内置支持. ...
- springmvc学习笔记(简介及使用)
springmvc学习笔记(简介及使用) 工作之余, 回顾了一下springmvc的相关内容, 这次也为后面复习什么的做个标记, 也希望能与大家交流学习, 通过回帖留言等方式表达自己的观点或学习心得. ...
随机推荐
- 委托在Smobiler自定义控件中运用
委托(Delegate) C# 中的委托(Delegate)类似于 C 或 C++ 中函数的指针.委托(Delegate) 是存有对某个方法的引用的一种引用类型变量.可以将方法当作另一个方法的参数来进 ...
- seo外链发布之论坛外链
目前最常见的seo外链方式有5种,之前大发迹创业项目网写文章分享过,详情可以查看文章<[网站SEO优化]最常见的五种软文外链发布方式!>,这篇文章不说其他的几种发外链,就来讲讲通过论坛建设 ...
- restapi(0)- 平台数据维护,写在前面
在云计算的推动下,软件系统发展趋于平台化.云平台系统一般都是分布式的集群系统,采用大数据技术.在这方面akka提供了比较完整的开发技术支持.我在上一个系列有关CQRS的博客中按照实际应用的要求对akk ...
- 001_html基本结构
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Oracle数据库---包
--根据员工号或员工姓名获取员工的信息--根据员工号或员工姓名删除员工的信息--创建包规范CREATE OR REPLACE PACKAGE overload_pkgIS FUNCTION get_i ...
- Salesforce Admin篇(二) Report
针对salesforce系统也好,针对其他的平台系统也好,对于business user的需求以及疑问,数据往往决定了答案.业务人员提出了某些疑问,管理员需要根据需求的分析转换成数据的分析及过滤从而反 ...
- 对于Typora(markdown)的基本使用
对于刚开始使用该软件,应该在熟悉基本的markdown语法的基础上,再进行快捷键的使用! 标题 (快捷键:ctrl + 数字) 一级标题 二级标题 三级标题 四级标题 五级标题 六级标题 ###### ...
- 【AI】Android Pie中引入的AI功能
前言 “无AI,不未来”,绝对不是一句豪情壮语,AI早已进入到了我们生活当中.去年Google发布的Android Pie系统在AI功能方面就做了重大革新,本文就对Google在新系统中引入的AI功能 ...
- 最新Centos7.6 部署ELK日志分析系统
下载elasticsearch 创建elk用户并授权 useradd elk chown -R elk:elk /home/elk/elasticsearch chown -R elk:elk /ho ...
- JQuery学习笔记(3)——节点操作 节点查找
插入节点 内部插入 所谓的内部插入,就是指在节点里面的插入,而外部插入,则是在节点外面插入. append() prepend() appendTo() prependTo() append和prep ...