-
Query Parameter๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ค๊ธฐ ์ํด ์ฌ์ฉํ๋ ์ด๋ ธํ ์ด์
-
ํ๋ผ๋ฏธํฐ๋ช ์ ์ง์ ์ง์ ํด์ค ์๋ ์๊ณ , (์๋์ name) ํ๋ผ๋ฏธํฐ๋ช ๊ณผ ๋์ผํ ๋ณ์๋ช ์ ์ฌ์ฉํ์ฌ ์๋์ผ๋ก ๋ฐ์ธ๋ฉ๋๋๋ก ํ ์๋ ์๋ค. (์๋์ password)
-
๊ธฐ๋ณธ์ ์ผ๋ก ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ๋ ํ์๋ก ์ ๋ฌ๋์ด์ผ ํ๋ฉฐ ์๋ตํ๋ฉด 400 ์๋ฌ๋ฅผ ๋ฐ์์ํค์ง๋ง, required์ ๊ฐ์ false๋ก ์ค์ ํ์ฌ ์๋ตํ๋๋ก ํ ์ ์๋ค. (์๋์ password)
// URL?name=yihyun&password=1234 @RequestMapping("/") public String renderMyInformation(Model model, @RepuestParam("name") String myName, @RequestParam(required=false) String password) { model.addAttribute("name", myName); model.addAttribute("password", password); return "renderํ jsp ํ์ผ๋ช "; }
-
์์ฑ์๋ฅผ ํตํ ๋ฐ์ธ๋ฉ์ด ๊ฐ๋ฅํ๋ค.
public class Person { private String name; private String password; public Person(String name) { this.name = name; this.password = "0000"; } public Person(String name, String password) { this.name = name; this.password = password; } }
์์ ๊ฐ์ ๊ฐ์ฒด๋ฅผ @RequestParam์ผ๋ก ๋ฐ๊ณ ์ ํ๋ค๋ฉด, name๋ง์ ๋๊ฒจ์ฃผ๊ฑฐ๋ name๊ณผ password๋ฅผ ๋๊ฒจ์ฃผ๋ฉด ๋๋ค.
-
์ ๋ฌ๋์ง ์์ ๊ฒฝ์ฐ ์ฌ์ฉํ ๋ํดํธ ๊ฐ์ ์ง์ ํ ์ ์๋ค.
defaultValue์ต์ ์ ์ด์ฉํ๋ค.
- JSON ํ์์ผ๋ก ๋ค์ด์ค๋ ๋ฐ์ดํฐ๋ฅผ Java Object๋ก ๋ฐ์์ค๊ธฐ ์ํด ์ฌ์ฉํ๋ ์ด๋ ธํ ์ด์
HttpMessageReader๊ฐ Request Body๋ก ๋ค์ด์จ ๋ฐ์ดํฐ๋ฅผ @RequestBody ์ด๋ ธํ ์ด์ ์ด ๋ถ์ ๊ฐ์ฒด๋ก ์ญ์ง๋ ฌํ๋ฅผ ์ํํ๋ค.- Spring์์ JSON์ ์ญ์ง๋ ฌํ๋
Jackson2HttpMessageConverter๊ฐ ์ํํ๋ค. ์ด ๊ฒฝ์ฐ Setter ๋์Reflection์ ์ด์ฉํด์ ๊ฐ์ด ํ ๋น๋๋ค. ๋ฐ๋ผ์ POST ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ @RequestBody์ ํด๋์ค๋ Setter๋ฅผ ๊ฐ์ง์ง ์์๋ ๋๋ค.
- Spring์์ JSON์ ์ญ์ง๋ ฌํ๋
- GET๊ณผ ๊ฐ์ด Request Body๊ฐ ์กด์ฌํ์ง ์๋ HTTP ๋ฉ์๋๋ฅผ ์ด์ฉํ๋ฉด ๋ฐ์ดํฐ๋ Query String์ผ๋ก ์ ๋ฌ๋๋ค. ๋ฐ๋ผ์ ์ญ์ง๋ ฌํ๊ฐ ์ํ๋๋ ๊ฒ์ด ์๋๋ผ
WebDataBinder์ ์ํด ๋ฐ์ธ๋ฉ๋๋ค.WebDataBinder๋ Setter๋ฅผ ์ด์ฉํด์ ๋ฐ์ธ๋ฉ์ ์ํํ๋ค.
- Model์ Attribute๊ฐ ์กด์ฌํ๋ค๋ฉด ์ด์ ์ ๊ทผํ ์ ์๋ค.
- Http Servlet ์์ฒญ ๋งค๊ฐ๋ณ์์ ์ด๋ฆ๊ณผ ๋ฉ์๋ ์ธ์์ ์ด๋ฆ์ด ์ผ์นํ๋ค๋ฉด ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ
- ์ด ๋ ์ ํจ์ฑ ๊ฒ์ฌ๋ ํจ๊ป ์ํ ๊ฐ๋ฅ
- ์ฆ, ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ์ ๊ฐ๋ณ ๋ณํ ์์ ์์ด๋ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ ๊ฐ๋ฅ
- ์ฆ @ModelAttribute๋ก ์ ์ธํ ๋ณ์์๋ Query Parameter, Form Data, Multipart๊ฐ ๋ชจ๋ ๋ฐ์ธ๋ฉ๋๋ค.
- ๊ทธ๋ฌ๋ ์์ ๋ ๊ฐ๋ @RequestParam, @RequestBody๋ฅผ ์ด์ฉํด ๋ฐ์ ์ ์์ผ๋ฏ๋ก @ModelAttribute๋ ์ฃผ๋ก ํ์ผ(Multipart)์ ๋ฐ๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
- ๋ค์๊ณผ ๊ฐ์ ์์๋ก ๋์ํ๋ค.
- ModelAttribute ์ธ์คํด์ค ์์ฑ
WebExchangeDataBinder๊ฐ ๋ค์์ ์ํ- Query Parameter์ Form Field์ ์ด๋ฆ์ ๋ฐ์ธ๋ฉํ Object ํ๋๋ช ๊ณผ ๋น๊ต
- ์ผ์นํ๋ค๋ฉด ๋ฐ์ธ๋ฉ (์ด ๊ณผ์ ์์ ํ์ ๋ณํ์ด ํ์ํ๋ค๋ฉด ๋ณํ)
- ๋ฐ์ธ๋ฉ์ ์คํจํ๋ฉด
WebExchangeBindException์ด ๋ฐ์ํ๋ค. ์ด๋ฅผ ํตํด ์ ํจ์ฑ ๊ฒ์ฌ ๊ฐ๋ฅ