๐ŸŸข [Model] - ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ, ๋ชจ๋ธ ์ „๋‹ฌ

Q1.
@ModelAttribute์™€ Model ๊ฐ์ฒด๋Š” ์–ด๋–ค ์ฐจ์ด๊ฐ€ ์žˆ์„๊นŒ?
๊ฐ๊ฐ ์–ด๋–ค ์ƒํ™ฉ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ ์ ˆํ•œ์ง€ ์„ค๋ช…ํ•ด๋ณด์„ธ์š”.

โ†’ Model ์€ ๋‹จ์ˆœํžˆ ๋ฐ์ดํ„ฐ๋ฅผ View ์—๊ฒŒ ์ „๋‹ฌํ•  ๋•Œ ์‚ฌ์šฉ๋˜๊ณ , @ModelAttribute ๋Š” ์ฃผ๋กœ ํผ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”์ธ๋”ฉํ•˜๊ฑฐ๋‚˜, ๊ณตํ†ต๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋ธ์— ์ถ”๊ฐ€ํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค.


Q2.
๋‹ค์Œ ์š”์ฒญ์ด ๋“ค์–ด์™”์„ ๋•Œ Controller ๋ฉ”์„œ๋“œ๋Š” ์–ด๋–ป๊ฒŒ ์ž‘์„ฑํ•ด์•ผ ํ• ๊นŒ?

GET /persons/342?order=-createdAt
@Controller
public class PersonController {
	@GetMapping("/persons/{id})
	public void subCreatedAt(@Pathvariable long id,
							 @RequestParam String order) {
 
		...
							 
	 }
}

๐Ÿ”ต [Operation] - ์ปจํŠธ๋กค๋Ÿฌ ๋™์ž‘ ํ๋ฆ„

Q3.
๋‹ค์Œ ์ค‘ @RequestMapping๊ณผ @GetMapping์˜ ์ฐจ์ด๋กœ ์˜ณ์€ ์„ค๋ช…์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

a) @GetMapping์€ ๊ฒฝ๋กœ ๋งคํ•‘๋งŒ ๊ฐ€๋Šฅํ•˜๊ณ , @RequestMapping์€ ๋ฉ”์„œ๋“œ ๋งคํ•‘๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.
b) @GetMapping์€ HTTP GET ์š”์ฒญ๋งŒ ๋งคํ•‘ํ•˜๊ณ , @RequestMapping์€ method ์†์„ฑ์— ๋”ฐ๋ผ ๋‹ค์–‘ํ•œ HTTP ๋ฉ”์„œ๋“œ ๋งคํ•‘์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
c) ๋‘ ์–ด๋…ธํ…Œ์ด์…˜์€ ์™„์ „ํžˆ ๋™์ผํ•˜๋‹ค.

โ†’ (b)


Q4.
HttpSession, @CookieValue, @RequestHeader์˜ ๊ณตํ†ต์ ๊ณผ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

๋ชจ๋‘ HttpServletReqeust ์—์„œ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ณตํ†ต์ ์ด ์žˆ๊ณ , ๊ฐ ์—ญํ• ์—๋Š” ์ฐจ์ด์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • HttpSession : ์„œ๋ฒ„ ์ธก ์„ธ์…˜ ์ €์žฅ์†Œ๋ฅผ ์ ‘๊ทผํ•˜๊ณ , HttpServletRequest ๋ฅผ ์ด์šฉํ•ด ์ ‘๊ทผํ•œ๋‹ค.
  • CookieValue : ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ณด๋‚ธ ์ฟ ํ‚ค์˜ ๊ฐ’์„ ๋ฐ”์ธ๋”ฉ ํ•  ์ˆ˜ ์žˆ๋Š” ์–ด๋…ธํ…Œ์ด์…˜
  • RequestHeader : Http ์š”์ฒญ์˜ ํ—ค๋” ๊ฐ’์„ ๋ฐ”์ธ๋”ฉ ํ•  ์ˆ˜ ์žˆ๋Š” ์–ด๋…ธํ…Œ์ด์…˜

๐Ÿ”ด [Concept] - Spring MVC ๊ตฌ์กฐ ์ดํ•ด

Q5.
Spring MVC์—์„œ DispatcherServlet์˜ ์—ญํ• ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?
์‹คํ–‰ ํ๋ฆ„์˜ ์ˆœ์„œ๋ฅผ ๊ฐ„๋‹จํžˆ ์„ค๋ช…ํ•ด๋ณด์„ธ์š”.

: DispatcherServlet ์€ Spring MVC์˜ Front Controller ๋กœ์จ, ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์„ ๋ฐ›์•„ HandlerMapping โ†’ Controller โ†’ ViewResolver ๋ฅผ ๊ฑฐ์ณ View ๋ฅผ ์‘๋‹ต์œผ๋กœ ์ „๋‹ฌํ•˜๋Š” ์ค‘์‹ฌ์ ์ธ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  1. ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ โ†’ DispatcherServlet ์ˆ˜์‹ 
  2. ์ ์ ˆํ•œ ํ•ธ๋“ค๋Ÿฌ(Controller) ๋งคํ•‘
  3. ํ•ธ๋“ค๋Ÿฌ ์–ด๋Œ‘ํ„ฐ๋ฅผ ํ†ตํ•ด ์‹คํ–‰
  4. ๋ชจ๋ธ + ๋ทฐ ์ด๋ฆ„ ๋ฐ˜ํ™˜
  5. ViewResolver ๋ฅผ ํ†ตํ•ด View ์„ ํƒ
  6. View ๋žœ๋”๋ง โ†’ ์‘๋‹ต ๋ฐ˜ํ™˜

๐ŸŽค Spring MVC ๊ด€๋ จ ๋ฉด์ ‘ ์งˆ๋ฌธ ์ถ”์ฒœ

โœ… ๊ธฐ๋ณธ ๊ฐœ๋…

Q1. Spring MVC์—์„œ DispatcherServlet์ด ํ•˜๋Š” ์—ญํ• ๊ณผ ์š”์ฒญ ์ฒ˜๋ฆฌ ํ๋ฆ„์„ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

: DispatcherServlet ์€ Spring MVC์˜ Front Controller ๋กœ์จ, ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์„ ๋ฐ›์•„ HandlerMapping โ†’ Controller โ†’ ViewResolver ๋ฅผ ๊ฑฐ์ณ View ๋ฅผ ์‘๋‹ต์œผ๋กœ ์ „๋‹ฌํ•˜๋Š” ์ค‘์‹ฌ์ ์ธ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.


โœ… ์ปจํŠธ๋กค๋Ÿฌ ์–ด๋…ธํ…Œ์ด์…˜ ๊ตฌ๋ถ„

Q2. @Controller, @RestController์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

: Controller ๋Š” ViewResolver ๋ฅผ ํ†ตํ•ด ์ ์ ˆํ•œ View๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , RestController ๋Š” Controller ์™€ ResponseBody์˜ ์กฐํ•ฉ์œผ๋กœ, View ๋Œ€์‹  ๋ฐ˜ํ™˜๊ฐ’์„ Json์ด๋‚˜ XML๋กœ ์ง๋ ฌํ™” ํ•˜์—ฌ ์‘๋‹ตํ•ฉ๋‹ˆ๋‹ค.


โœ… ์š”์ฒญ ์ฒ˜๋ฆฌ์™€ ๋ฐ”์ธ๋”ฉ

Q3. @RequestParam, @PathVariable, @ModelAttribute๋Š” ๊ฐ๊ฐ ์–ด๋–ค ์ƒํ™ฉ์—์„œ ์‚ฌ์šฉํ•˜๋‚˜์š”? ์ฐจ์ด๋ฅผ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

  1. @RequestParam ์€ ์š”์ฒญ URI์— ? ๊ณผ ๊ฐ™์€ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์žˆ์„ ๋•Œ ์‚ฌ์šฉํ•˜๊ณ 
  2. @PathVariable ์€ ๊ฐ€๋ณ€์ ์ธ ๊ฐ’์„ ๋งคํ•‘ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๊ณ ,
  3. @ModelAttribute ๋Š” ์ฃผ๋กœ ํผ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”์ธ๋”ฉ ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜, ๊ณตํ†ต๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋ธ์— ์ถ”๊ฐ€ํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

โœ… ๋ฐ์ดํ„ฐ ์ „๋‹ฌ ๋ฐ View ์ฒ˜๋ฆฌ

Q4. ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ View๋กœ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

Model ๊ฐ์ฒด์— ์†์„ฑ์„ ์ถ”๊ฐ€ํ•˜๋ฉด, ํ•ด๋‹น ์†์„ฑ์€ ViewResolver ์— ์˜ํ•ด ๋ Œ๋”๋ง๋˜๋Š” ๋ทฐ๋กœ ์ž๋™์œผ๋กœ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค.


โœ… ๋ถ€๊ฐ€ ์งˆ๋ฌธ (์‹ค๋ฌด ๊ฐ๊ฐ ํ™•์ธ)

Q5. @GetMapping(params = "!id")์™€ ๊ฐ™์€ ์กฐ๊ฑด๋ถ€ ๋งคํ•‘์€ ์–ธ์ œ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์„๊นŒ์š”?

ํŠน์ • ์ฟผ๋ฆฌ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์„ ๋•Œ๋งŒ ์‹คํ–‰๋˜์–ด์•ผ ํ•˜๋Š” ์š”์ฒญ์„ ๊ตฌ๋ถ„ํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, /search ์š”์ฒญ์—์„œ id ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์—†์„ ๊ฒฝ์šฐ์—๋Š” ์ „์ฒด ๋ชฉ๋ก์„, ์žˆ์„ ๊ฒฝ์šฐ์—๋Š” ์ƒ์„ธ ๋ชฉ๋ก์„ ์กฐํšŒํ•˜๋„๋ก ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.