Spring MVC์์ `@RequestParam`์ ํ์ฉํ HTTP ์์ฒญ ํ๋ผ๋ฏธํฐ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ
Spring MVC์์ ์ปจํธ๋กค๋ฌ ๋ฉ์๋์ HTTP ์์ฒญ ํ๋ผ๋ฏธํฐ๋ฅผ ์ ๋ฌ๋ฐ์ ์ฒ๋ฆฌํ ๋, @RequestParam
์ด๋
ธํ
์ด์
์ ๋ง์ด ์ฌ์ฉํฉ๋๋ค. ์ด ๊ธ์์๋ @RequestParam
์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ๊ณผ ๊ทธ ์ ์ฉ์ฑ์ ๋ค๋ฃจ๊ณ , @RequestParam Map<String, String>
์ ์ฌ์ฉํ์ฌ ๋ชจ๋ ์์ฒญ ํ๋ผ๋ฏธํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์๊ฐํ๊ฒ ์ต๋๋ค.
1. @RequestParam
๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ
@RequestParam
์ด๋
ธํ
์ด์
์ HTTP ์์ฒญ ํ๋ผ๋ฏธํฐ๋ฅผ ์ปจํธ๋กค๋ฌ ๋ฉ์๋์ ๋งค๊ฐ๋ณ์์ ๋ฐ์ธ๋ฉํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก @RequestParam("parameterName")
ํํ๋ก ์ฌ์ฉํ๋ฉฐ, parameterName
์ ์์ฒญ ํ๋ผ๋ฏธํฐ์ ์ด๋ฆ์ ๋ํ๋
๋๋ค.
@PostMapping("/submit")
public String handleSubmit(@RequestParam("name") String nameValue) {
System.out.println("Name: " + nameValue);
return "Processed";
}
์ ์ฝ๋์์ @RequestParam("name")
์ name
์ด๋ผ๋ ์ด๋ฆ์ HTTP ์์ฒญ ํ๋ผ๋ฏธํฐ๋ฅผ nameValue
๋ณ์์ ๋ฐ์ธ๋ฉํฉ๋๋ค. ์๋ฅผ ๋ค์ด, POST /submit?name=John
์์ฒญ์ด ๋ค์ด์ค๋ฉด nameValue
์๋ "John"
์ด ์ ์ฅ๋ฉ๋๋ค.
2. ํ๋ผ๋ฏธํฐ ์ด๋ฆ๊ณผ ๋ณ์ ์ด๋ฆ์ด ๋์ผํ ๋ ์๋ต ๊ฐ๋ฅ
๋ง์ฝ HTTP ์์ฒญ ํ๋ผ๋ฏธํฐ์ ์ด๋ฆ๊ณผ ๋ฉ์๋ ํ๋ผ๋ฏธํฐ์ ์ด๋ฆ์ด ๋์ผํ๋ค๋ฉด, @RequestParam
์ name
์์ฑ์ ์๋ตํ ์ ์์ต๋๋ค.
@PostMapping("/submit")
public String handleSubmit(@RequestParam String name) {
System.out.println("Name: " + name);
return "Processed";
}
์ด ๊ฒฝ์ฐ, POST /submit?name=John
์์ฒญ์ด ๋ค์ด์ค๋ฉด name
๋ณ์์ "John"
์ด ์ ์ฅ๋ฉ๋๋ค.
3. ๊ธฐ๋ณธ๊ฐ ์ค์
@RequestParam
์ ๊ธฐ๋ณธ๊ฐ์ ์ค์ ํ ์ ์๋ defaultValue
์์ฑ์ ์ ๊ณตํฉ๋๋ค. ๋ง์ฝ ์์ฒญ์ ํด๋น ํ๋ผ๋ฏธํฐ๊ฐ ์์ผ๋ฉด ๊ธฐ๋ณธ๊ฐ์ด ์ฌ์ฉ๋ฉ๋๋ค.
@PostMapping("/submit")
public String handleSubmit(@RequestParam(name = "name", defaultValue = "Guest") String name) {
System.out.println("Name: " + name);
return "Processed";
}
์ ์ฝ๋์์ POST /submit
์์ฒญ์ด ๋ค์ด์ค๋ฉด name
๋ณ์์๋ "Guest"
๊ฐ ์ ์ฅ๋ฉ๋๋ค.
4. ๋ชจ๋ ํ๋ผ๋ฏธํฐ๋ฅผ Map์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ
๋๋ก๋ HTTP ์์ฒญ์์ ์ ๋ฌ๋๋ ๋ชจ๋ ํ๋ผ๋ฏธํฐ๋ฅผ ์ผ๊ด์ ์ผ๋ก ์ฒ๋ฆฌํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ์ด๋ ์ ์ฉํ ๋ฐฉ๋ฒ์ด @RequestParam Map<String, String>
์ ์ฌ์ฉํ๋ ๊ฒ์
๋๋ค. ์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ฉด ๋ชจ๋ ์์ฒญ ํ๋ผ๋ฏธํฐ๊ฐ Map์ key-value ์์ผ๋ก ์ ์ฅ๋์ด ์ฝ๊ฒ ์ ๊ทผํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ์๋์ ๊ฐ์ ์์ฒญ์ด ์๋ค๊ณ ๊ฐ์ ํด ๋ด ์๋ค:
POST /submit
Content-Type: application/x-www-form-urlencoded
param1=value1¶m2=value2¶m3=value3
์ด ์์ฒญ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋ค์๊ณผ ๊ฐ์ ์ฝ๋๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค:
@PostMapping("/submit")
public String handleSubmit(@RequestParam Map<String, String> allParams) {
allParams.forEach((key, value) -> {
System.out.println(key + ": " + value);
});
return "Processed";
}
์ ์ฝ๋์์ allParams
๋ ๋ค์๊ณผ ๊ฐ์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ Map์ผ๋ก ์ ๋ฌ๋ฉ๋๋ค:
allParams = {
"param1" -> "value1",
"param2" -> "value2",
"param3" -> "value3"
}
์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ฉด ๋ชจ๋ ์์ฒญ ํ๋ผ๋ฏธํฐ๋ฅผ ์ฝ๊ฒ ์ํํ๋ฉฐ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ํนํ, ํ๋ผ๋ฏธํฐ์ ๊ฐ์๊ฐ ๋์ ์ผ๋ก ๋ณํ ์ ์๊ฑฐ๋, ํน์ ํ๋ผ๋ฏธํฐ๋ฅผ ์ผ์ผ์ด ์ง์ ํ ์ ์๋ ์ํฉ์์ ์ ์ฉํฉ๋๋ค.
5. @RequestParam
๊ณผ Map์ ํจ๊ป ์ฌ์ฉํ ์ฅ์
- ์ ์ฐ์ฑ: ํน์ ํ๋ผ๋ฏธํฐ์ ์ด๋ฆ์ ์ง์ ํ์ง ์๊ณ ๋ ๋ชจ๋ ์์ฒญ ํ๋ผ๋ฏธํฐ์ ์ ๊ทผํ ์ ์์ต๋๋ค.
- ๋์ ํ๋ผ๋ฏธํฐ ์ฒ๋ฆฌ: ์์ฒญ ํ๋ผ๋ฏธํฐ๊ฐ ๋์ ์ผ๋ก ๋ณํ๋ ๊ฒฝ์ฐ, ๋ฏธ๋ฆฌ ํ๋ผ๋ฏธํฐ ์ด๋ฆ์ ์ ํ์ ์์ด ๋ชจ๋ ํ๋ผ๋ฏธํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
- ๋จ์ํ: ์ฌ๋ฌ ๊ฐ์ ํ๋ผ๋ฏธํฐ๋ฅผ ๊ฐ๋ณ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ ๋์ , ํ๋์ Map์ ๋ด์ ์ผ๊ด์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์์ด ์ฝ๋๊ฐ ๊ฐ๊ฒฐํด์ง๋๋ค.
6. ์์ฝ
Spring MVC์์ @RequestParam
์ HTTP ์์ฒญ ํ๋ผ๋ฏธํฐ๋ฅผ ์ฝ๊ฒ ์ฒ๋ฆฌํ ์ ์๋ ๊ฐ๋ ฅํ ๋๊ตฌ์
๋๋ค. @RequestParam Map<String, String>
์ ์ฌ์ฉํ๋ฉด ๋ชจ๋ ํ๋ผ๋ฏธํฐ๋ฅผ ์ผ๊ด์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์์ด, ํน์ ์ํฉ์์ ๋งค์ฐ ์ ์ฉํฉ๋๋ค. ์ด ๋ฐฉ๋ฒ์ ํตํด ๋ ์ ์ฐํ๊ณ ๊ฐ๊ฒฐํ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
์ด ๊ธ์ ํตํด Spring MVC์์ @RequestParam
์ ํ์ฉํ ๋ค์ํ ์์ฒญ ํ๋ผ๋ฏธํฐ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ ์ดํดํ๊ณ , ๋ ๋์๊ฐ Map์ ์ฌ์ฉํ ์ผ๊ด ํ๋ผ๋ฏธํฐ ์ฒ๋ฆฌ์ ์ ์ฉ์ฑ์ ์ตํ์๊ธฐ ๋ฐ๋๋๋ค.