微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

学习记录:SpringMVC 参数绑定

参数绑定

首先准备两个javaBean

UserBean

package com.springmvc.vo;

import java.util.*;

public class UserBean {
    //用户id
    private Integer userID;
    //用户名
    private String userName;
    //用户密码
    private String password;

    private List<String> list = new ArrayList<>();

    private Set<SetTestBean> set = new HashSet<>();

    private Map<String, String> map = new HashMap<>();


    public UserBean() {
        set.add(new SetTestBean());
        set.add(new SetTestBean());
    }

    public Integer getUserID() {
        return userID;
    }

    public void setUserID(Integer userID) {
        this.userID = userID;
    }

    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 List<String> getList() {
        return list;
    }

    public void setList(List<String> list) {
        this.list = list;
    }

    public Set<SetTestBean> getSet() {
        return set;
    }

    public void setSet(Set<SetTestBean> set) {
        this.set = set;
    }

    public Map<String, String> getMap() {
        return map;
    }

    public void setMap(Map<String, String> map) {
        this.map = map;
    }

    @Override
    public String toString() {
        return "UserBean{" +
                "userID=" + userID +
                ", userName='" + userName + '\'' +
                ", password='" + password + '\'' +
                ", list=" + list +
                ", set=" + set +
                ", map=" + map +
                '}';
    }
}

SetTestBean

package com.springmvc.vo;

public class SetTestBean {
    private String name;

    public String getName() {
        return name;
    }

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

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

各种数据类型绑定代码

package com.springmvc.controller;

import com.springmvc.vo.UserBean;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

@Controller
public class ParamsController {

    /**
     * 基本本数据类型绑定
     * URL:http://localhost:8080/springmvc01/test01?age=参数&money=参数
     * 不传参数:报错:Optional int parameter 'age' is present but cannot be translated into a null value
     * due to being declared as a primitive type. Consider declaring it as object wrapper for the
     * corresponding primitive type (大概意思就是不能把基本类型转换成null)
     * 传递参数:年龄:(你传递的参数)  存款:(你传递的参数)
     * @param age 年龄
     * @param money 存款
     */
    @RequestMapping("test01")
    public void test01(int age, double money){
        //基本数据类型在访问时如果没有传递参数就会返回一个null,因为基本数据类型接收不了null所以就会报错
        System.out.println("年龄:"+age+"  存款:"+money);
    }

    /**
     * 解决基本数据类型不传参数报错问题可以通过@RequestParam(defaultValue="??")给它设置一个认值
     * URL:http://localhost:8080/springmvc01/test02?age=参数&money=参数
     * 不传参数:年龄:10  存款:100  传递参数:年龄:(你传递的参数)  存款:(你传递的参数)
     * @param age 年龄
     * @param money 存款
     *
     * 设置别名
     * @RequestParam(defaultValue = "10" name="别名")
     * URL:http://localhost:8080/springmvc01/test02?别名=参数&别名=参数
     *  @RequestMapping("test02")
     *     public void test02(@RequestParam(defaultValue = "10" name="别名") int age, @RequestParam(defaultValue = "100" name="别名) double money){
     *         //基本数据类型在访问时如果没有传递参数就会返回一个null,因为基本数据类型接收不了null所以就会报错
     *         System.out.println("年龄:"+age+"  存款:"+money);
     *     }
     */
    @RequestMapping("test02")
    public void test02(@RequestParam(defaultValue = "10") int age, @RequestParam(defaultValue = "100") double money){
        //基本数据类型在访问时如果没有传递参数就会返回一个null,因为基本数据类型接收不了null所以就会报错
        System.out.println("年龄:"+age+"  存款:"+money);
    }


    /**
     * 包装类型绑定
     * URL:http://localhost:8080/springmvc01/test03?age=参数&money=参数
     * 不传参数:年龄:null  存款:null  传递参数:年龄:(你传递的参数)  存款:(你传递的参数)
     * @param age 年龄
     * @param money 存款
     */
    @RequestMapping("test03")
    public void test03(Integer age, Double money){
        System.out.println("年龄:"+age+"  存款:"+money);
    }

    /**
     * String类型绑定
     * URL:http://localhost:8080/springmvc01/test04?name=参数&password=参数
     * 不传参数:姓名:null  存密码款:null  传递参数:姓名:(你传递的参数)  存密码款:(你传递的参数)
     * @param name 姓名
     * @param password 存密码款
     */
    @RequestMapping("test04")
    public void test04(String name,String password){
        System.out.println("姓名:"+name+"  存款密码:"+password);
    }

    /**
     * 数组类型绑定
     * URL:http://localhost:8080/springmvc01/test05?ages=参数&ages=参数&ages=参数
     * 不传参数:NullPointerException  传递参数:[你传递的参数,你传递的参数,你传递的参数]
     * @param ages
     */
    @RequestMapping("test05")
    public void test05(String[] ages){
        String add = "[";
        for (String age:ages) {
            if(age.equals(ages[ages.length-1])){
                add+=age;
            }else{
                add+=age+",";
            }
        }
        System.out.println(add+"]");
    }


    /**
     * javaBean数据类型绑定
     * URL:http://localhost:8080/springmvc01/test06?userName=参数&password=参数
     * 不传参数:UserBean{userID=null, userName='null', password='null', list=[], set=[], map={}}
     * 传递参数:UserBean{userID=你传递的参数, userName='你传递的参数', password='你传递的参数', list=[], set=[], map={}}
     * @param userBean javaBean实例
     */
    @RequestMapping("test06")
    public void test06(UserBean userBean){
        System.out.println(userBean.toString());
    }

    /**
     * List数据绑定
     * URL:http://localhost:8080/springmvc01/index.jsp(要提交数据的页面)
     * http://localhost:8080/springmvc01/test07?list[0]=参数&list[1]=参数
     * 表单提交数据:
     * <form action="test07" method="get">
     *     <input name="list[0]" value="北京"/>
     *     <input name="list[1]" value="上海"/>
     *     <button type="submit">提交</button>
     * </form>
     * 传递参数:UserBean{userID=null, userName='null', password='null', list=[你传递的参数, 你传递的参数], set=[], map={}}
     * @param userBean
     */
    @RequestMapping("test07")
    public void test07(UserBean userBean){
        System.out.println(userBean.toString());
    }

    /**
     * Map类型绑定
     * URL:http://localhost:8080/springmvc01/index.jsp(要提交数据的页面)
     * http://localhost:8080/springmvc01/test08?map['键']=值&map['键']=值
     * 表单提交数据:
     * <form action="test08" method="get">
     *     <input name="map['键']" value="值"/>
     *     <input name="map['键']" value="值"/>
     *     <button type="submit">提交</button>
     * </form>
     * 传递参数:UserBean{userID=null, userName='null', password='null', list=[], set=[],
     * map={chinese=80, mathematics=50}}
     * @param userBean
     */
    @RequestMapping("test08")
    public void test08(UserBean userBean){
        System.out.println(userBean.toString());
    }

    /**
     * Set数据绑定
     * URL:http://localhost:8080/springmvc01/index.jsp(要提交数据的页面)
     * http://localhost:8080/springmvc01/test09?set[0].name=参数&set[1].name=参数
     * set数据绑定 需要实现在set中add相对应的模型数量(否则报错)
     *  public UserBean() {
     *         set.add(new SetTestBean());
     *         set.add(new SetTestBean());
     *     }
     * 表单提交:
     * <form action="test09" method="get">
     *     <input name="set[0].name(set中数据类型的字段名)" value="参数" />
     *     <input name="set[1].name" value="参数"/>
     *     <button type="submit">提交</button>
     * </form>
     * 传递参数:UserBean{userID=null, userName='null', password='null',
     * list=[], set=[SetTestBean{name='张三'}, SetTestBean{name='李四'}], map={}}
     * @param userBean
     */
    @RequestMapping("test09")
    public void test09(UserBean userBean){
        System.out.println(userBean.toString());
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐