springMVC学习总结(三)数据绑定
springMVC学习总结(三)数据绑定
一、springMVC的数据绑定,常用绑定类型有:
1、servlet三大域对象:
- HttpServletRequest
- HttpServletResponse
- HttpSession
2、Model的方式
类型:
Model
@Controller
public class Demo01Controller {
@RequestMapping(value = "test.action")
public String test(Model md){
md.addAttribute("name","xujie");
return "test";
}
}
ModelMap
@Controller
public class Demo01Controller {
@RequestMapping(value = "test.action")
public String test(ModelMap mp){
mp.addAttribute("name","xujie");
return "test"; //字符串是返回页面的页面名
}
}
ModelAndView
@Controller
public class Demo01Controller {
@RequestMapping(value = "test.action")
public ModelAndView test(ModelAndView mv){
mv.addObject("name","xujie");
mv.setViewName("test");
return mv;
}
}
前台页面jsp编码
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@page isELIgnored="false" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Hello World</title>
</head>
<body>
1、姓名:${requestScope.name }<br/>
</body>
</html>
总结:
- Model和ModelMap类型的model,都要在参数列表中声明。
- ModelAndView可以不用在参数列表中声明,但是最后的跳转页面一定要通过
ModelAndView.setViewName()的方式跳转,否则页面可以成功跳转,但是取不到后台设置的值。
3、绑定简单数据类型
用法:

示例一:
//在处理器形参位置声明简单数据类型,处理器直接获取
@Controller
public class Demo01Controller {
@RequestMapping(value = "test.action")
public String test(String name){
System.out.println("获取到前台的值是:"+name);
return "test";
}
}
支持的简单绑定类型:
- 整型(int、Integer)
- 字符串(String)
- 单精度(Float、float)
- 双精度(Double、double)
- 布尔型(true、false)
@RequestParam用法:
- @RequestParam 有三个常用属性值:
value:绑定参数的变量名
defaultValue:如果没有传这个值,默认取值
required:该变量是否必须要有
示例:@Controller
public class Demo01Controller {
@RequestMapping(value = "test.action")
public String test(@RequestParam(value = "name",defaultValue = "xujie",required = false) String name){
System.out.println("name="+name);
return "test";
}
}
- @RequestParam 有三个常用属性值:
4、绑定pojo(简单的java对象)类型
Student类:(pojo)
public class Student {
private String name;
private int age;
get/set...
}
Controller类:
@Controller
public class Demo01Controller {
@RequestMapping(value = "test.action",method = RequestMethod.POST)
public String test(Student stu){
System.out.println("学生姓名:"+stu.getName());
System.out.println("学生年龄:"+stu.getAge());
return "test";
}
}
+ *这里我是用的postman做的请求测试,所以此处不列举前台是如何发送请求的了,只要是post请求,并且参数名分别为name和age就可以获取到;*
5、绑定包装对象(对象里面有对象)
Courses类(pojo):
package com.springMVC.pojo;
public class Courses {
private String coursesName;
private String teacher;
get/set...
}
Courses类(pojo):
package com.springMVC.pojo;
public class Student {
private String name;
private int age;
private Courses courses;
get/set...
}
Controller类:
@Controller
public class Demo01Controller {
@RequestMapping(value = "test.action",method = RequestMethod.POST)
public String test(Student stu){
System.out.println("学生姓名:"+stu.getName());
System.out.println("学生年龄:"+stu.getAge());
System.out.println("课程名称"+stu.getCourses().getCoursesName());
System.out.println("课程老师"+stu.getCourses().getTeacher());
return "test";
}
}
6、绑定数组(以字符串数组为例)
直接绑定数组类型参数
Controller类:
@Controller
public class Demo01Controller {
@RequestMapping(value = "test.action",method = RequestMethod.POST)
public String test(String[] strs){
for (String str:strs ) {
System.out.println(str);
}
return "test";
}
}
接口测试:

通过pojo属性的方式绑定数组
pojo类:
package com.springMVC.pojo;
public class Student {
private String name;
private int age;
private Courses courses;
private String[] friends;
get/set...
}
Controller类:
@Controller
public class Demo01Controller {
@RequestMapping(value = "test.action",method = RequestMethod.POST)
public String test(Student stu){
String[] friends = stu.getFriends();
for (String str:friends ) {
System.out.println(str);
}
return "test";
}
}
接口测试

7、绑定List
接收页面数据
接收页面数据的时候,list必须声明为某一个pojo的属性才可以接收到
pojo类:
package com.springMVC.pojo;
import java.util.List;
public class Student {
private String name;
private int age;
private Courses courses;
private List<String> friends; //pojo的list
get/set...
}
Controller类:
@Controller
public class Demo01Controller {
@RequestMapping(value = "test.action",method = RequestMethod.POST)
public String test(Student student){
List<String> friends = student.getFriends();
for (String str : friends) {
System.out.println(str);
}
return "test";
}
}
接口测试:

向页面传递数据
Controller类:
此处以ModelMap的方式向页面传递数据
@Controller
public class Demo01Controller {
@RequestMapping(value = "test.action",method = RequestMethod.GET)
public String test(ModelMap modelMap){
//ModelMap modelMap = new ModelMap();
Student student = new Student();
ArrayList<String> list = new ArrayList<String>();
list.add("xujie1");
list.add("xujie2");
list.add("xujie3");
list.add("xujie4");
student.setFriends(list);
student.setName("yuanxiliu");
modelMap.addAttribute("student",student);
return "test";
}
}
jsp页面:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@page isELIgnored="false" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Hello World</title>
</head>
<body>
<c:forEach items="${student.friends}" var="friend" varStatus="state" >
${friend}<%--循环输出List--%>
</c:forEach>
</body>
</html>
页面结果:

8、绑定Map
跟list类似,同样必须定义成某个pojo的属性才可以绑定数据:
pojo类:
package com.springMVC.pojo;
import java.util.HashMap;
import java.util.List;
public class Student {
private String name;
private int age;
private Courses courses;
private HashMap<String,String> parents;
get/set...
}
Controller类:
@Controller
public class Demo01Controller {
@RequestMapping(value = "test.action",method = RequestMethod.POST)
public String test(Student student){
String father = student.getParents().get("father");
String mother = student.getParents().get("mother");
System.out.println("父亲是:"+father);
System.out.println("母亲是:"+mother);
return "test";
}
}
接口测试:

springMVC学习总结(三)数据绑定的更多相关文章
- SpringMVC:学习笔记(5)——数据绑定及表单标签
SpringMVC——数据绑定及表单标签 理解数据绑定 为什么要使用数据绑定 基于HTTP特性,所有的用户输入的请求参数类型都是String,比如下面表单: 按照我们以往所学,如果要获取请求的所有参数 ...
- SpringMVC学习笔记之---数据绑定
SpringMVC数据绑定 一.基础配置 (1)pom.xml <dependencies> <dependency> <groupId>junit</gro ...
- SpringMVC学习笔记(三)
一.SpringMVC使用注解完成 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于SpringMVC的配置 <!--configure the setti ...
- SpringMVC 学习笔记(三)数据的校验
34. 尚硅谷_佟刚_SpringMVC_数据绑定流程分析.avi 例如:在jsp中输入一个String字符串类型,需要转换成Date类型的流程如下 convertservice对传入的数据进行转换 ...
- SpringMVC学习总结(三)——Controller接口详解(2)
4.5.ServletForwardingController 将接收到的请求转发到一个命名的servlet,具体示例如下: package cn.javass.chapter4.web.servle ...
- springmvc学习(三)
第一点---------使用 @RequestMapping 映射请求• Ant 风格资源地址支持 3 种匹配符:?:匹配文件名中的一个字符 *:匹配文件名中的任意字符 **:** 匹配多层路径 @R ...
- SpringMVC学习手册(三)------EL和JSTL(上)
1.含义 EL: Expression Language , 表达式语言 JSTL: Java Server Pages Standard Tag Library, JSP标准标签库 ...
- SpringMVC学习(三)———— springmvc的数据校验的实现
一.什么是数据校验? 这个比较好理解,就是用来验证客户输入的数据是否合法,比如客户登录时,用户名不能为空,或者不能超出指定长度等要求,这就叫做数据校验. 数据校验分为客户端校验和服务端校验 客户端校验 ...
- SpringMVC学习记录三——8 springmvc和mybatis整合
8 springmvc和mybatis整合 8.1 需求 使用springmvc和mybatis完成商品列表查询. 8.2 整合思路 springmvc+mybaits的 ...
- springmvc学习日志三
一.文件的上传 1.首先在lib中添加相应的jar包 2.建立jsp页面,表单必须是post提交,编码必须是multipart/form-data,文件上传文本框必须起名 <body> & ...
随机推荐
- Python模块:paramiko
paramiko是一个用于做远程控制的模块,使用该模块可以对远程服务器进行命令或文件操作,值得一说的是,fabric和ansible内部的远程管理就是使用的paramiko来现实. 1.下载安装 Wi ...
- Mac上配置不同版本的JDK
Mac上JDK的版本为1.8,编译AOSP时发现需要JDK 1.7.想找一种比较容易切换JDK版本的方式,经过一番Google发现Jenv比较合适. 安装Jenv至少有三种方式: - $ git cl ...
- ASP.NET没有魔法——ASP.NET MVC 过滤器(Filter)
上一篇文章介绍了使用Authorize特性实现了ASP.NET MVC中针对Controller或者Action的授权功能,实际上这个特性是MVC功能的一部分,被称为过滤器(Filter),它是一种面 ...
- Thrift全面介绍
官网:http://thrift.apache.org 简介 Thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发.它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java ...
- 【分享】纯jQuery实现星巴克官网导航栏效果
前言 大冬天的没得玩,只能和代码玩. 所以就无聊研究了一下星巴克官网,在我看来应该是基本还原吧~ 请各位大神指教! 官网效果图 要写的就是最上方的会闪现的白色条条 效果分析 1.在滚动条往下拉到一定距 ...
- C++静态库与动态库(转)
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAA0cAAAC6CAIAAADqPKGOAAAgAElEQVR4nO2dy5WrOhREFYgjcAQ9Iw
- IIS解决CPU和内存占用率过高的问题
发现进程中的w3wp占用率过高. 经过查询,发现如下: w3wp.exe是在IIS(因特网信息服务器)与应用程序池相关联的一个进程,如果你有多个应用程序池,就会有对应的多个w3wp.exe的进程实例运 ...
- 查看oracle数据库里哪些语句耗时最长或者效率最低
CPU: select * from (select v.sql_id, v.child_number, v.sql_text, v.elapsed_time, v.cpu_time, v.disk_ ...
- Kotlin实现LeetCode算法题之Median of Two Sorted Arrays
题目Median of Two Sorted Arrays(难度Hard) 方案1,数组合并&排序调用Java方法 import java.util.* class Solution { fu ...
- Transform组件以及相关API
Transform.Translate(Vector3,Space):以自身坐标系或者世界坐标系向某个方向移动物体. Vector3:表示方向和移动的距离. Space:空间.枚举类型,用来确定坐标系 ...