Spring MVC参数绑定-对象参数

结构图

BookController.java

package org.javaboy.springmvc02.controller;

import org.javaboy.springmvc02.model.Book;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;

import javax.naming.Name;

/**
 * @author 邓雪松 (づ ̄ 3 ̄)づ)
 * @create 2021-11-02-19-13
 */
@Controller
@RequestMapping("/book")
public class BookController {
    //http://localhost:8080/book/getbook
    @RequestMapping("/getbook")
    public ModelAndView getBook(){
        ModelAndView mv = new ModelAndView("hello");
        mv.addObject("name","BookController");
        return mv;
    }

    @GetMapping("/book")
    public String book(){
        return "addbook";
    }

    @PostMapping(value = "/addbook",produces = "text/html;charset=utf-8")
    @ResponseBody//为了防止找视图
    public String addBook(@RequestParam("bookname") String name, String author, Double price){
        System.out.println("name = "+name);
        return name+">>>"+author+">>>"+price;
    }

    @PostMapping(value = "/addbook2",produces = "text/html;charset=utf-8")
    @ResponseBody//
    public String addBook2(Book book){
        return book.toString();
    }
}

Book.java

package org.javaboy.springmvc02.model;

/**
 * @author 邓雪松 (づ ̄ 3 ̄)づ)
 * @create 2021-11-03-14-15
 */
public class Book {
    private String name;
    private Double price;
    private Author author;

    public void setAuthor(Author author) {
        this.author = author;
    }

    public Author getAuthor() {
        return author;
    }

    @Override
    public String toString() {
        return "Book{" +
                "name='" + name + '\'' +
                ", price=" + price +
                ", author=" + author +
                '}';
    }

    public String getName() {
        return name;
    }

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

    public Double getPrice() {
        return price;
    }

    public void setPrice(Double price) {
        this.price = price;
    }
}

addbook.jsp

<%--
  Created by IntelliJ IDEA.
  User: 管 理 员
  Date: 2021年11月03日 0003
  Time: 13:12:43
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>addbook</title>
</head>
<body>
<h1>添加图书</h1>
<form action="/book/addbook2" method="post">
    <table>
        <tr>
            <td>图书名称</td>
            <td><input type="text" name="name"></td>
        </tr>
        <tr>
            <td>图书作者</td>
            <td><input type="text" name="author.name"></td>
        </tr>
        <tr>
            <td>作者年龄</td>
            <td><input type="text" name="author.age"></td>
        </tr>
        <tr>
            <td>图书价格</td>
            <td><input type="text" name="price"></td>
        </tr>
        <tr>
            <td><input type="submit" value="添加"></td>
        </tr>
    </table>
</form>
</body>
</html>

Author.java

package org.javaboy.springmvc02.model;

/**
 * @author 邓雪松 (づ ̄ 3 ̄)づ)
 * @create 2021-11-03-14-32
 */
public class Author {
    private String name;
    private Integer age;

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

    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;
    }
}

运行效果图

结束

posted @ 2021-11-03 14:49  ╰(‵□′)╯  阅读(53)  评论(0编辑  收藏  举报