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. [USACO5.1] Musical Themes

    后缀数组求最长重复且不重叠子串. poj 1743 传送门 洛谷 P2743 传送门 1.子串可以“变调”(即1 3 6和3 5 8视作相同).解决办法:求字符串相邻元素的差形成新串.用新字符串求解最 ...

  2. 吴裕雄--天生自然 R语言开发学习:广义线性模型(续一)

    #----------------------------------------------# # R in Action (2nd ed): Chapter 13 # # Generalized ...

  3. nodejs日常总结

    1.node -v 查看当前node版本 2.npm root -g 查看npm安装路径(还有通过npm安装的vue-cli的路径) 默认: /usr/local/lib/node_modules r ...

  4. rpm报错warning: /var/tmp/rpm-tmp.1OZa8q: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY的解决

    参考链接:http://blog.51cto.com/zymin0823/1546537 报错: 解决:使用如下两个选项

  5. 通俗易懂DenseNet

    目录 写在前面 Dense Block与Transition Layer DenseNet网络架构与性能 理解DenseNet Plain Net.ResNet与DenseNet 参考 博客:博客园 ...

  6. JavaScript中如何给按钮设置隐藏与显示属性

    */ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.html * 作者:常轩 * 微信公众号:Worldh ...

  7. C++走向远洋——65(十五周、项目一)

    */ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...

  8. git还原历史某一版本

    返回上一版本 git reset --hard HEAD^ 常用的命令git refloggit reset --hard "填写版本号" 黄色的就是版本号 其他查看以前版本的命令 ...

  9. c++中的 const 关键字

    知识回顾:C语言中 const const 修饰的变量是 只读的,本质上还是变量:(只读变量:可以通过指针修改只读变量中的值) const 修饰的局部变量在栈上分配空间: const 修饰的全局变量在 ...

  10. Java反射,泛型在Json中的运用

    最近项目中遇到了Json数据自动获取的功能,不然令人想起java的反射,已经很长时间没复习java了正好一块连java的这一块内容一起过一遍.java中的反射无疑就相当于java开发者的春天,在众多的 ...