对象接收参数

时间:2021-07-21
本文章向大家介绍对象接收参数,主要包括对象接收参数使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

对象接收参数

可以看到这里形参只有两个,为了使传递过来的参数名能和形参名匹配,每个形参前面加了一个注解,当有多个形参的时候,这就意味着要写多个注解,在源代码上写那么多注解,是挺麻烦的一件事,有什么办法可以解决?

--> 用一个对象来接收请求参数

index.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <p>提交参数给controller</p>

    <form action="receiveproperty.do" method="post">
        姓名:<input type="text" name="name"> <br/>
        年龄:<input type="text" name="age"> <br/>
        <input type="submit" value="提交参数">
    </form>
    <br />

    <p>使用java对象接收请求参数</p>
    <form action="receiveobject.do" method="post">
        姓名:<input type="text" name="name"> <br/>
        年龄:<input type="text" name="age"> <br/>
        <input type="submit" value="提交参数">
    </form>

</body>
</html>

MyController.java:

/**
 * 调度器方法形参是java对象,这个对象的属性名和请求中参数名一样
 * 框架会创建形参的java对象,给属性赋值。请求中的参数是name,框架会调用setName()
 * @return
 */
@RequestMapping(value = "/receiveobject.do")
public ModelAndView receiveParam(Student myStudent) {

    System.out.println("receiveParam:name=" + myStudent.getName() + "   age=" + myStudent.getAge());

    ModelAndView mv = new ModelAndView();
    mv.addObject("myname", myStudent.getName());
    mv.addObject("myage", myStudent.getAge());
    mv.addObject("mystudent",myStudent);
    mv.setViewName("show");
    return mv;
}

可以这么理解,现在receiveParam()方法的形参是Student myStudent,首先 请求参数 赋值给--> 对象(Student)形参,然后receiveParam()方法通过Student对象的get方法获取值。

Student.java:

package com.bjpowernode.vo;

//保存请求参数值的一个普通类
public class Student {
    //要求:属性名和请求中的参数名一样
    private String name;
    private Integer age;

    public Student() {
        System.out.println("===Student的无参构造方法===");
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        System.out.println("setName"+name);
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        System.out.println("setAge"+age);
        this.age = age;
    }

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

普通的实体类

show.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <h3>/WEB-INF/view/show.jsp从request作用域获取数据</h3>
    <h3>myname数据:${myname}</h3>
    <br/>
    <h3>myage数据:${myage}</h3>
    <br/>
    <h3>student数据:${mystudent}</h3>
</body>
</html>

show.jsp 与 MyCotroller.java的对象关系

运行:

框架会创建这些对象(中央调度器方法的形参),并给属性赋值

参数少时用逐个接收,参数多时用对象接收

原文地址:https://www.cnblogs.com/happy-lin/p/15038347.html