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&param2=value2&param3=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์„ ์‚ฌ์šฉํ•œ ์ผ๊ด„ ํŒŒ๋ผ๋ฏธํ„ฐ ์ฒ˜๋ฆฌ์˜ ์œ ์šฉ์„ฑ์„ ์ตํžˆ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.