当前位置: 首页 > news >正文

SpringMVC----使用POJO[普通的java类]对象绑定请求参数值

1.技术由来

  我们在请求的时候,如果是一个表单的话,这个表单通常需要对应一个类的对象,如果此时使用RequestParam去映射的话,成本太高、太麻烦、复杂、代码凌乱.....

2.概述

  我们这个时候就用一个java对象来作为请求参数,SpringMVC会按照请求参数名和java类属性名进行自动的匹配,自动为该对象进行填充属性值,而且还支持级联属性;

  如:address.city、address.province等;

3.代码

index.jsp

<form action="springmvc/testPojo" method="POST">
        username:<input type="text" name="username" />
        <br/>
        password:<input type="password" name="password" />
        <br/>
        email:<input type="text" name="email" />
        <br/>
        age:<input type="text" name="age" />
        <br/>
        city:<input type="text" name="address.city" />
        <br/>
        province:<input type="text" name="address.province" />
        <br/>
        <input type="submit" value="submit" />
    </form>


实体类

package com.yk.springmvc.entities;

/**
 * 实体类
 * 
 * @author Administrator
 *
 */
public class User {
    private String username;
    private String password;
    private String email;
    private int age;
    //级联属性
    private Address address;

    public Address getAddress() {
        return address;
    }

    public void setAddress(Address address) {
        this.address = address;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public int getAge() {
        return age;
    }

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

    @Override
    public String toString() {
        return "User [username=" + username + ", password=" + password + ", email=" + email + ", age=" + age
                + ", address=" + address + "]";
    }
    
}


package com.yk.springmvc.entities;

/**
 * 验证支持级联属性
 * 
 * @author Administrator
 *
 */
public class Address {
    // 省份
    private String province;
    // 城市
    private String city;

    public String getProvince() {
        return province;
    }

    public void setProvince(String province) {
        this.province = province;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    @Override
    public String toString() {
        return "Address [province=" + province + ", city=" + city + "]";
    }
    
}


java测试代码

    @RequestMapping("/testPojo")
    public String testPojo(User user){
        System.out.println("SpringMVCTest.testPojo()"+user);
        return SUCCESS;    
    }

4.结果

SpringMVCTest.testPojo()User [username=jack, password=123123, email=jack@qq.com, age=25, address=Address [province=Beijing, city=Beijing]]

 

  

  

转载于:https://www.cnblogs.com/yikuan-919/p/9727323.html

相关文章:

  • PAT乙级(Basic Level)练习题-NowCoder数列总结
  • KVO知识点
  • Selenium 对窗口对HTML的操作举例
  • 设计模式(十五)[结构模式] 合成模式(Composite)
  • Spring框架5.1将提供对Java 11的支持
  • Uber开源Marmaray:基于Hadoop的通用数据摄取和分散框架
  • LeetCode - 141. Linked List Cycle
  • kubernetes[2]-Pod
  • @jsonView过滤属性
  • vmware创建centos虚拟机
  • 福大软工1816 · 第六次作业 - 团队选题报告
  • 尝试解决微信小程序分页最后setData数据太大限制的问题
  • teragen/terasort_简化版
  • 云计算节点故障自动化运维服务设计
  • Redis 中的布隆过滤器
  • JavaScript 如何正确处理 Unicode 编码问题!
  • Angular 2 DI - IoC DI - 1
  • Django 博客开发教程 8 - 博客文章详情页
  • gulp 教程
  • If…else
  • java 多线程基础, 我觉得还是有必要看看的
  • JavaScript函数式编程(一)
  • JWT究竟是什么呢?
  • laravel5.5 视图共享数据
  • mac修复ab及siege安装
  • Python3爬取英雄联盟英雄皮肤大图
  • vue学习系列(二)vue-cli
  • 对象管理器(defineProperty)学习笔记
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 我是如何设计 Upload 上传组件的
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • #define、const、typedef的差别
  • (1)Android开发优化---------UI优化
  • (2020)Java后端开发----(面试题和笔试题)
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (poj1.2.1)1970(筛选法模拟)
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (附源码)计算机毕业设计ssm电影分享网站
  • (论文阅读40-45)图像描述1
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (实战篇)如何缓存数据
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • (转)socket Aio demo
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • .bat批处理(九):替换带有等号=的字符串的子串
  • .NET DataGridView数据绑定说明
  • .net 微服务 服务保护 自动重试 Polly
  • .net使用excel的cells对象没有value方法——学习.net的Excel工作表问题
  • .考试倒计时43天!来提分啦!
  • /3GB和/USERVA开关
  • @GetMapping和@RequestMapping的区别