
Lombok์ @Getter, @Setter, @ToString, @EqualsAndHashCode, @NoArgsConstructor, @AllArgsConstructor ๋ฑ๊ณผ ๊ฐ์ Annotation์ ์ ๊ณตํ์ฌ ์์ค ์ฝ๋์์ ์๋์ผ๋ก getter, setter, toString ๋ฑ์ ๋ฉ์๋๋ฅผ ์์ฑํฉ๋๋ค.
@Data : ์๋ฐ๋น(JavaBean) ํด๋์ค์์ ํ๋, getter, setter, equals(), hashCode(), toString() ๋ฑ์ ๋ฉ์๋๋ฅผ ์๋์ผ๋ก ์์ฑํด์ฃผ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.import lombok.*;
@Getter
@Setter
@EqualsAndHashCode
@ToString
@AllArgsConstructor
public class MyBean141 {
private String city;
private String country;
private Integer age;
private String name;
// getters, setters
// constructor
// toString
// hashCode, equals
}
๐ข JSP์์ JavaBeans๋ฅผ ์ฌ์ฉํ ๋ attribute ์ด๋ฆ ์๋ต ๊ฐ๋ฅํฉ๋๋ค.
์๋ฐ ์ฝ๋์์ attribute ์ด๋ฆ์ ์๋ตํ๊ณ jsp์์ attribute ์ด๋ฆ์ ์๋ฐ ํด๋์ค๋ช
์ผ๋ก lowerCamalCase๋ก ๋ณ๊ฒฝ๋ ์ด๋ฆ์ ์ฌ์ฉํฉ๋๋ค. ํ์ง๋ง attribute์ ์ด๋ฆ์ ์๋ตํ๋ ์ต๊ด์ ์ข์ง ์์ผ๋ ์จ์ฃผ๋ ๊ฒ์ด ์ข์ต๋๋ค.
@RequestMapping("sub2")
public void sub2(Model model) {
MyBean142 o1 = new MyBean142();
o1.setName("๊น๋ฏผ์ฌ");
MyBean142 o2 = new MyBean142();
o2.setName("์ด์ ํ");
// attribute ๋ช
์๋ต
model.addAttribute(o1); //// myBean142
model.addAttribute(List.of(o1, o2)); //myBean142List
}
<p>${myBean142.name}</p>
<%--๊น๋ฏผ์ฌ--%>
<hr>
<p>${myBean142List[0].name}</p> <%--๊น๋ฏผ์ฌ--%>
<p>${myBean142List[1].name}</p> <%--์ด์ ํ--%>
MyBean142 ์๋ฐ๋น ํด๋์ค
package com.study.domain;
import lombok.Data;
@Data
public class MyBean142 {
private String id;
private String name;
private Integer age;
}
1. @ModelAttribute ์๋ต ์
@RequestMapping("sub3")
public void sub3(@ModelAttribute("player1") MyBean142 o1) {
o1.setName("์คํ๋");
}
<p>${player1.name}</p>
@ModelAttribute ์ ๋ํ
์ด์
์ฌ์ฉ๋๋ฉฐ ํ๋ผ๋ฏธํฐ o1 ๊ฐ์ฒด๋ฅผ player1 ์ด๋ฆ์ผ๋ก ๋ชจ๋ธ์ ์ถ๊ฐํฉ๋๋ค. 2. @ModelAttribute ์๋ต ์ attribute ์ด๋ฆ ์๋ต
@RequestMapping("sub4")
public String sub4(@ModelAttribute MyBean142 o1) {
o1.setName("๊น๋ฏผ์ฌ");
return "/main14/sub3";
}
<p>${myBean142.name}</p>
3. @ModelAttribute ์๋ต ํ
@RequestMapping("sub5")
public String sub5(MyBean142 o1) {
o1.setName("์ ์ฌ์");
// /WEB-INF/view/main14/sub3.jsp ๋ก ํฌ์๋
return "/main14/sub3";
}
<p>${myBean142.name}</p>
@ModelAttribute ์๋ต๋์ด๋ Spring MVC๋ ํด๋น ํ๋ผ๋ฏธํฐ์ ํ์
์ ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ ์์ฒญ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฐ์ธ๋ฉํฉ๋๋ค. ์ฆ, ์คํ๋ง MVC๊ฐ ์์์ ํด๋น ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ ๋ชจ๋ธ์ ์ถ๊ฐํฉ๋๋ค. myBean145 ์๋ฐ๋น ํด๋์ค
import lombok.Data;
@Data
public class MyBean145 {
private String address;
private String name;
private Integer age;
}
@RequestMapping("sub9")
public void sub9(String name, Integer age, String address,
Model model) {
MyBean145 o1 = new MyBean145();
o1.setName(name);
o1.setAddress(address);
o1.setAge(age);
model.addAttribute("myBean145", o1);
}
<p>${myBean145.name}</p>
<p>${myBean145.address}</p>
<p>${myBean145.age}</p>
// /main14/sub10?name=๊ฐ์ธ&address=ํ๋ฆฌ&age=23
@RequestMapping("sub10")
public String sub10(MyBean145 o1) {
return "/main14/sub9";
}
<p>${myBean145.name}</p>
<p>${myBean145.address}</p>
<p>${myBean145.age}</p>
Model์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์๋ ์ปจํธ๋กค๋ฌ์์ ์ง์ ๋ฐ์ดํฐ๋ฅผ ๋ง๋ค๊ณ Model ๊ฐ์ฒด์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ์ฌ ์ ๋ฌํฉ๋๋ค. ๋ฐ๋ฉด์ @ModelAttribute๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์๋ ์์ฒญ ํ๋ผ๋ฏธํฐ๋ฅผ ์๋์ผ๋ก ๊ฐ์ฒด์ ๋ฐ์ธ๋ฉํ์ฌ ์ ๋ฌํฉ๋๋ค.@RequestMapping("sub12")
public void sub12(
Integer price, //@RequestParam
String car, //@RequestParam
MyBean147 o1, //@ModelAttribute
MyBean146 o2 //@ModelAttribute
) {
System.out.println("price = " + price);
System.out.println("car : " + car);
System.out.println(o1);
System.out.println(o2);
}
@RequestParam์ ์ฌ์ฉํ์ฌ ์์ฒญ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฉ์๋์ ํ๋ผ๋ฏธํฐ๋ก ์ง์ ๋ฐ์ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์์ฒญ ํ๋ผ๋ฏธํฐ์ ๊ฐ์ ๊ฐ๊ฐ์ ๋ณ์์ ๋ฐ์ธ๋ฉํ ์ ์์ต๋๋ค.@ModelAttribute๋ฅผ ์ฌ์ฉํ์ฌ ์์ฒญ ํ๋ผ๋ฏธํฐ๋ฅผ ๊ฐ์ฒด์ ์๋์ผ๋ก ๋ฐ์ธ๋ฉํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์์ฒญ ํ๋ผ๋ฏธํฐ๋ฅผ ๊ฐ์ฒด์ ํ๋กํผํฐ๋ก ์๋์ผ๋ก ๋งคํํ์ฌ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.๋ฉ์๋์ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ๋ ๋ค์ํ ๋ฐฉ๋ฒ์ด ์กด์ฌํฉ๋๋ค.