12.16 POJO 自动封装对象

POJO即自定义类型

如果我们请求参数是一个POJO 那么SpringMVC会自动为这个POJO赋值

首先我们有一个book,里面封装一个自定义的Address(内有city province)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
package com.runsstudio.springmvc.servlet;

public class Book {
private String bookName;
private String author;
private Double price;
private Integer stock;
private Integer sales;
private Address address;
public String getBookName() {
return bookName;
}

public Address getAddress() {
return address;
}

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

public void setBookName(String bookName) {
this.bookName = bookName;
}

public String getAuthor() {
return author;
}

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

public Double getPrice() {
return price;
}

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

public Integer getStock() {
return stock;
}

public void setStock(Integer stock) {
this.stock = stock;
}

public Integer getSales() {
return sales;
}

public void setSales(Integer sales) {
this.sales = sales;
}

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

public Book(String bookName, String author, Double price, Integer stock, Integer sales, Address address) {
this.bookName = bookName;
this.author = author;
this.price = price;
this.stock = stock;
this.sales = sales;
this.address = address;
}

public Book() {
}
}

然后我们有一个Controller

1
2
3
4
5
6
7
8
9
@Controller
public class BookController {

@RequestMapping("/book")
public String addBook(Book book, Model model){
model.addAttribute("book",book);
return "addSuccess";
}
}

jsp里写个表单

1
2
3
4
5
6
7
8
9
<form action="${pageContext.request.contextPath}/book" method="post">
书名<input type="text" name="bookName"><br>
作者<input type="text" name="author"><br>
价格<input type="text" name="price"><br>
库存<input type="text" name="stock"><br>
销量<input type="text" name="sales"><br>
地址:省份<input type="text" name="address.province">城市<input type="text" name="address.city"><br>
<input type="submit" value="提交图书">
</form>

提交表单

成功返回的页面

image-20191216151910175

注意:参数是区分大小写的 不能写bookname

参数类型如果不对应 比如把Double 输入了个String 会返回400 Bad Request

image-20191216170947176

-------------文章已结束~感谢您的阅读-------------
穷且益坚,不堕青云之志。