Spring MVC 数据绑定

  • 使用POJO绑定参数

entity

package com.sunjian.entity;

/**
 * @author sunjian
 * @date 2020/3/17 14:25
 */
public class User {
    private Integer id;
    private String name;
    private Integer age;
    private Address address;

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", address=" + address +
                '}';
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public Address getAddress() {
        return address;
    }

    public void setAddress(Address address) {
        this.address = address;
    }
}
package com.sunjian.entity;

/**
 * @author sunjian
 * @date 2020/3/17 14:26
 */
public class Address {
    private Integer id;
    private String name;

    @Override
    public String toString() {
        return "Address{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

controller

package com.sunjian.controller;

import com.sunjian.entity.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * @author sunjian
 * @date 2020/3/17 14:28
 */
@Controller
@RequestMapping(value = "/user")
public class UserHandler {
    @RequestMapping(value = "/add")
    public String add(User user){
        System.out.println(user);
        return "index";
    }
}

JSP

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
<form action="/user/add" method="post">
    ID:<input type="text" name="id"/><br/>
    姓名:<input type="text" name="name"/><br/>
    年龄:<input type="text" name="age"/><br/>
    地址ID:<input type="text" name="address.id"/><br/>
    地址名:<input type="text" name="address.name"/><br/>
    <input type="submit" value="提交"/>
</form>
</body>
</html>

访问http://localhost:7777/add.jsp,输入人员信息后,点击提交按钮,打印结果

User{id=123, name='张三', age=31, address=Address{id=1234, name='12345'}}
  • 基本数据类型
    controller
package com.sunjian.controller;

import com.sunjian.entity.User;
import com.sunjian.entity.UserList;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * @author sunjian
 * @date 2020/3/17 14:28
 */
@Controller
@RequestMapping(value = "/user")
public class UserHandler {

    @RequestMapping(value = "/int/{num}")
    @ResponseBody
    public String intTest(@PathVariable int num){
        return "num: " + num;
    }
}
    访问http://localhost:7777/user/int/7

  • 包装类
    controller
package com.sunjian.controller;

import com.sunjian.entity.User;
import com.sunjian.entity.UserList;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * @author sunjian
 * @date 2020/3/17 14:28
 */
@Controller
@RequestMapping(value = "/user")
public class UserHandler {

    @RequestMapping(value = "/package")
    @ResponseBody
    public String packageTest(Integer num){
        return "num: " + num;
    }

}
    访问http://localhost:7777/user/package?num=7

  • 数组
    controller
package com.sunjian.controller;

import com.sunjian.entity.User;
import com.sunjian.entity.UserList;
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.ResponseBody;

/**
 * @author sunjian
 * @date 2020/3/17 14:28
 */
@Controller
@RequestMapping(value = "/user")
public class UserHandler {
    @RequestMapping(value = "/arrayUser")
    @ResponseBody
    public String arrayUser(@RequestBody String[] names){
        for(String s:names){
            System.out.print(s + " ");
        }
        return names.toString();
    }
}
    JSP
<!DOCTYPE html>
<html lang="en">
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<head>
    <title>Title</title>
</head>
<body>
<form action="" method="">
    <input type="text" class="input1">
    <input type="text" class="input2">
    <input type="text" class="input3">

    <input type="submit" id="submit"  value="上传"/>
    <script src="./js/jquery-1.8.3.min.js"></script>
    <script>

        $(function () {
            $("#submit").on("click", function () {
                var input1 = $(".input1").val();
                var input2 = $(".input2").val();
                var input3 = $(".input3").val();
                var array = [input1, input2, input3];
                $.ajax({
                    type : 'POST',
                    url: '/user/arrayUser',
                    contentType : "application/json" ,
                    data : JSON.stringify(array),
                    success : function(data) {
                        alert("ok");
                    }
                });
            })
        })
    </script>
</form>
</body>
</html>
    访问http://localhost:7777/arrayUser.jsp,输入信息后点击“提交”按钮,打印
张三 李四 赵六
  • List

entity

package com.sunjian.entity;

/**
 * @author sunjian
 * @date 2020/3/17 14:25
 */
public class User {
    private Integer id;
    private String name;
    private Integer age;
    private Address address;

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", address=" + address +
                '}';
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public Address getAddress() {
        return address;
    }

    public void setAddress(Address address) {
        this.address = address;
    }
}
package com.sunjian.entity;

import java.util.List;

/**
 * @author sunjian
 * @date 2020/3/17 16:21
 */
public class UserList {
    private List<User> users;

    public List<User> getUsers() {
        return users;
    }

    public void setUsers(List<User> users) {
        this.users = users;
    }
}

controller

package com.sunjian.controller;

import com.sunjian.entity.User;
import com.sunjian.entity.UserList;
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.ResponseBody;

/**
 * @author sunjian
 * @date 2020/3/17 14:28
 */
@Controller
@RequestMapping(value = "/user")
public class UserHandler {
    @RequestMapping(value = "/listUser")
    @ResponseBody
    public String listUser(UserList userList){
        for(User user:userList.getUsers()){
            System.out.println(user);
        }
        return "ok";
    }
}

JSP

<!DOCTYPE html>
<html lang="en">
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<head>
    <title>Title</title>
</head>
<body>
<form action="/user/listUser" method="post">
    <input type="text" name="users[0].id"/><br/>
    <input type="text" name="users[0].name"/><br/>
    <input type="text" name="users[1].id"/><br/>
    <input type="text" name="users[1].name"/><br/>
    <input type="text" name="users[2].id"/><br/>
    <input type="text" name="users[2].name"/><br/>
    <input type="submit"/>
</form>
</body>
</html>

访问http://localhost:7777/listUser.jsp,输入姓名后,提交,控制台打印

User{id=1, name='2', age=null, address=null}
User{id=3, name='4', age=null, address=null}
User{id=5, name='6', age=null, address=null}
  • Json

pom.xml

<dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>fastjson</artifactId>
  <version>1.2.18</version>
</dependency>

springmvc.xml

    <!-- 消息转换器 -->
    <mvc:annotation-driven>
        <mvc:message-converters register-defaults="true">
            <bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter"></bean>
        </mvc:message-converters>
    </mvc:annotation-driven>

JSP

<!DOCTYPE html>
<html lang="en">
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<head>
    <title>Title</title>
    <script type="text/javascript" src="js/jquery-1.8.3.min.js"></script>
    <script type="text/javascript">
        $(function(){
            var user = {
                "id":1,
                "name":"张三"
            };
            $.ajax({
                url:"/data/json",
                data:JSON.stringify(user),
                type:"POST",
                contentType:"application/json;charset=UTF-8",
                dataType:"text",
                success:function(data){
                    alert(data);
                }
            })
        });
    </script>
</head>
<body>

</body>
</html>

controller

package com.sunjian.controller;

import com.sunjian.entity.User;
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.ResponseBody;

/**
 * @author sunjian
 * @date 2020/3/17 15:51
 */
@Controller
public class JsonController {
    @RequestMapping(value = "/json")
    @ResponseBody
    public String json(@RequestBody User user){
        System.out.println(user);
        return user.toString();
    }
}

web.xml

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>
  <!--中文乱码处理-->
  <filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
  </filter>

  <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

  <!--映射-->
  <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>

  <!-- js -->
  <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.js</url-pattern>
  </servlet-mapping>
</web-app>

访问http://localhost:7777/json.jsp,打印

User{id=1, name='张三', age=null, address=null}

OK.

SpringMVC框架——数据绑定的更多相关文章

  1. SpringMvc框架MockMvc单元测试注解及其原理分析

    来源:https://www.yoodb.com/ 首先简单介绍一下Spring,它是一个轻量级开源框架,简单的来说,Spring是一个分层的JavaSE/EEfull-stack(一站式) 轻量级开 ...

  2. SpringMVC框架02——SpringMVC的Controller详解

    1.基于注解的控制器 1.1.@Controller 注解类型 在SpringMVC中使用org.springframework.stereotype.Controller注解类型声明某类的实例是一个 ...

  3. SpringMVC 的数据绑定

    1.数据自动绑定 SpringMVC 框架支持不需要任何数据绑定的注解直接将表单参数绑定到我们的执行方法的参数上. 表单参数:包括 POST 以及 GET 发送过来的参数 就是以内容类型为:encty ...

  4. SpringMVC框架笔记01_SpringMVC的使用案例和架构组件_SpringMVC和Mybatis整合_接收参数

    目录 第1章:SpringMVC简介 1.1 什么是SpringMVC 1.2 SpringMVC的处理流程 第2章:SpringMVC入门程序 2.1 场景描述 2.2 步骤分析 2.3 步骤一:创 ...

  5. SpringMVC框架 课程笔记

    SpringMVC框架 课程笔记 第0章 SpringMVC框架的核心内容 1.SpringMVC 概述 2.SpringMVC 的 HelloWorld 3.使用 @RequestMapping 映 ...

  6. SpringMVC框架搭建 基于注解

    本文将以一个很简单的案例实现 Springmvc框架的基于注解搭建,一下全为个人总结 ,如有错请大家指教!!!!!!!!! 第一步:创建一个动态web工程(在创建时 记得选上自动生成 web.xml ...

  7. 教你搭建SpringMVC框架( 更新中、附源码)

    一.项目目录结构 二.SpringMVC需要使用的jar包 commons-logging-1.2.jar junit-4.10.jar log4j-api-2.0.2.jar log4j-core- ...

  8. springMVC框架访问web-inf下的jsp文件

    博客原文章:http://td.xue163.com/1042/1/10425265.html 用户提出问题:springMVC框架访问web-inf下的jsp文件,具体如下: 使用springMVC ...

  9. SpringMVC框架图解析

    Spring框架提供了构造Web应用程序的全能MVC模块.Spring MVC分离了控制器.模型对象.分派器以及处理程序对象的角色,这种分离让它们更容易进行制定.是一个标准的MVC框架. 那你猜一猜哪 ...

随机推荐

  1. 为啥Waymo和Uber间的官司,这么难界定?

    自动驾驶作为被众多巨头和创业者看好的技术及领域,已有众多企业涉足其中.在自动驾驶尚未完全落地.制定统一标准前,每家企业都在争分夺秒地进行研发,试图率先抢占自动驾驶的高地.毕竟一旦成功,就能够创造巨大的 ...

  2. Proto3:编码

    本文介绍protocol buffer消息二进制传输格式.在应用程序中使用protocol buffer时,你并不需要了解这些,但它对你了解protocol buffer格式如何影响你的编码消息的大小 ...

  3. flutter 白板工具Twitter IconFacebook Icon

    flutter 白板工具 Categories: flutter 平常桌面上都放着一些草稿纸,因为经常要整理思路.画画草图啥的.这不是电子时代嘛,就觉得在手机.pad上也可以这样写写画画,我看了有很多 ...

  4. pymongo bugfix后记

    有网友反馈py-mongo-sync同步异常,检查发现curosr[0]取查询结果第一个文档时报错"no such item for Cursor instance". 这里的逻辑 ...

  5. [置顶] 利用Python 提醒实验室同学值日(自动发送邮件)

    前言: 在实验室里一直存在着一个问题,就是老是有人忘记提醒下一个人值日,然后值日就被迫中断了.毕竟良好的        卫生环境需要大家一起来维护的!没办法只能想出一些小对策了. 解决思路: 首先,我 ...

  6. 30s源码刨析系列之函数篇

    前言 由浅入深.逐个击破 30SecondsOfCode 中函数系列所有源码片段,带你领略源码之美. 本系列是对名库 30SecondsOfCode 的深入刨析. 本篇是其中的函数篇,可以在极短的时间 ...

  7. pyteeseract使用报错Error: one input ui-file must be specified解决

    Python在图像识别有天然的优势,今天使用pytesseract模块时遇到一个报错:“Error: one input ui-file must be specified”. 环境:windows ...

  8. JAVA GC算法详解

    生存还是死亡 对象是否需要被垃圾收集器回收主要有两种方式:引用计数法和可达性分析算法 引用计数法 给对象添加一个引用计数器,每当有一个地方引用他的时候,计数器的数值就+1,当引用失效时,计数器就-1: ...

  9. 小白学 Python 数据分析(13):Pandas (十二)数据表拼接

    人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...

  10. Css里的BFC

    一.BFC简介 BFC全称:Block Formatting Contexts (BFC,块级格式化上下文),就是 一个块级元素 的渲染显示规则 (可以把 BFC 理解为一个封闭的大箱子,,容器里面的 ...