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";
        }
        }

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学习总结(三)数据绑定的更多相关文章

  1. SpringMVC:学习笔记(5)——数据绑定及表单标签

    SpringMVC——数据绑定及表单标签 理解数据绑定 为什么要使用数据绑定 基于HTTP特性,所有的用户输入的请求参数类型都是String,比如下面表单: 按照我们以往所学,如果要获取请求的所有参数 ...

  2. SpringMVC学习笔记之---数据绑定

    SpringMVC数据绑定 一.基础配置 (1)pom.xml <dependencies> <dependency> <groupId>junit</gro ...

  3. SpringMVC学习笔记(三)

    一.SpringMVC使用注解完成 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于SpringMVC的配置 <!--configure the setti ...

  4. SpringMVC 学习笔记(三)数据的校验

    34. 尚硅谷_佟刚_SpringMVC_数据绑定流程分析.avi 例如:在jsp中输入一个String字符串类型,需要转换成Date类型的流程如下 convertservice对传入的数据进行转换 ...

  5. SpringMVC学习总结(三)——Controller接口详解(2)

    4.5.ServletForwardingController 将接收到的请求转发到一个命名的servlet,具体示例如下: package cn.javass.chapter4.web.servle ...

  6. springmvc学习(三)

    第一点---------使用 @RequestMapping 映射请求• Ant 风格资源地址支持 3 种匹配符:?:匹配文件名中的一个字符 *:匹配文件名中的任意字符 **:** 匹配多层路径 @R ...

  7. SpringMVC学习手册(三)------EL和JSTL(上)

    1.含义 EL:       Expression Language , 表达式语言 JSTL:   Java Server Pages Standard Tag Library, JSP标准标签库  ...

  8. SpringMVC学习(三)———— springmvc的数据校验的实现

    一.什么是数据校验? 这个比较好理解,就是用来验证客户输入的数据是否合法,比如客户登录时,用户名不能为空,或者不能超出指定长度等要求,这就叫做数据校验. 数据校验分为客户端校验和服务端校验 客户端校验 ...

  9. SpringMVC学习记录三——8 springmvc和mybatis整合

    8      springmvc和mybatis整合 8.1      需求 使用springmvc和mybatis完成商品列表查询. 8.2      整合思路 springmvc+mybaits的 ...

  10. springmvc学习日志三

    一.文件的上传 1.首先在lib中添加相应的jar包 2.建立jsp页面,表单必须是post提交,编码必须是multipart/form-data,文件上传文本框必须起名 <body> & ...

随机推荐

  1. 北京Python筛选过程中应注意什么

    计算机初级爱好者普遍喜欢Python,因为Python干净利索,简单直接.它编写代码的速度非常的快,而且非常注重代码的可读性,非常适合多人参与的项目.很多人选择了培训,那么北京Python培训筛选过程 ...

  2. C#去掉字符串头尾指定字符

    private void button2_Click(object sender, EventArgs e)        {//去掉字符串头尾指定字符            string MyInf ...

  3. nodejs a和b文件相互引用

    //取自于node中文网 http://nodejs.cn/api/modules.html 当循环调用 require() 时,一个模块可能在未完成执行时被返回. 例如以下情况: a.js: con ...

  4. Spring的69个知识点

    目录 Spring 概述 依赖注入 Spring beans Spring注解 Spring数据访问 Spring面向切面编程(AOP) Spring MVC Spring 概述 1. 什么是spri ...

  5. 创建内部的yum源

    http://www.phy.duke.edu/~rgb/General/yum_HOWTO/yum_HOWTO/yum_HOWTO.html#toc6.2 主要的步骤包括: 1.创建Reposito ...

  6. IDEA安装步骤详解

    IDEA开发工具是java语言开发的集成环境,IntelliJ在业界被公认为最好的java开发工具之一,尤其在智能代码助手.代码自动提示.重构.J2EE支持.各类版本工具(git.svn.github ...

  7. 32.Linux-2440下的DMA驱动(详解)

    DMA(Direct Memory Access) 即直接存储器访问, DMA 传输方式无需 CPU 直接控制传输,通过硬件为 RAM .I/O 设备开辟一条直接传送数据的通路,能使 CPU 的效率大 ...

  8. T-SQL的进阶:超越基本级别3:构建相关子查询——701小组

    T-SQL的进阶:超越基本级别3:构建相关子查询 格雷戈里·拉森,2014/03/05 原文链接: http://www.sqlservercentral.com/articles/Stairway+ ...

  9. 如何访问 Service?- 每天5分钟玩转 Docker 容器技术(99)

    前面我们已经学习了如何部署 service,也验证了 swarm 的 failover 特性.不过截止到现在,有一个重要问题还没有涉及:如何访问 service?这就是本节要讨论的问题. 为了便于分析 ...

  10. React服务器端渲染值Next.js

    昨天leader给分配了新任务,让熟悉一下ssr,刚开始有点懵,啥玩意?百度了一下,不就是服务器端渲染(server side render,简称: ssr). ssr简介 服务端渲染一个很常见的场景 ...