Spring ๐ŸŒฑ

Dispatcher Servlet์ด๋ž€? ๋™์ž‘ ๋ฐฉ์‹๊ณผ ์žฅ์ 

z.zzz 2023. 9. 25. 15:19

๋””์ŠคํŒจ์ฒ˜ ์„œ๋ธ”๋ฆฟ์˜ dispatch๋Š” "๋ณด๋‚ด๋‹ค"๋ผ๋Š” ๋œป์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฌํ•œ ๋‹จ์–ด๋ฅผ ํฌํ•จํ•˜๋Š” ๋””์ŠคํŒจ์ฒ˜ ์„œ๋ธ”๋ฆฟ์€ HTTP ํ”„๋กœํ† ์ฝœ๋กœ ๋“ค์–ด์˜ค๋Š” ๋ชจ๋“  ์š”์ฒญ์„ ๊ฐ€์žฅ ๋จผ์ € ๋ฐ›์•„ ์ ํ•ฉํ•œ ์ปจํŠธ๋กค๋Ÿฌ์— ์œ„์ž„ํ•ด์ฃผ๋Š” ํ”„๋ก ํŠธ ์ปจํŠธ๋กค๋Ÿฌ(Front Controller)๋ผ๊ณ  ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋””์ŠคํŒจ์ฒ˜ ์„œ๋ธ”๋ฆฟ์€ ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด URI์— ๋งž๋Š” ํ•ธ๋“ค๋Ÿฌ์™€ ๋ทฐ๋ฅผ ์ฐพ๋Š”๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์ด "/posts/save"์˜ URI ์ฃผ์†Œ๋กœ GET ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด ๋””์ŠคํŒจ์ฒ˜ ์„œ๋ธ”๋ฆฟ์€ ์•„๋ž˜ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์ฐพ์•„ ์ž‘์—…์„ ์œ„์ž„ํ•œ๋‹ค.

//PostController.java
@GetMapping("/posts/save")
public String loadPostForm() {
    return "post-save";
}

 

Dispatcher-Servlet์˜ ์žฅ์ 

Spring MVC๋Š” DispatcherServlet์ด ๋“ฑ์žฅํ•จ์— ๋”ฐ๋ผ web.xml์˜ ์—ญํ• ์„ ์ƒ๋‹นํžˆ ์ถ•์†Œ์‹œ์ผœ์ฃผ์—ˆ๋‹ค.

๊ณผ๊ฑฐ์—๋Š” ๋ชจ๋“  ์„œ๋ธ”๋ฆฟ์„ URL ๋งคํ•‘์„ ์œ„ํ•ด web.xml์— ๋ชจ๋‘ ๋“ฑ๋กํ•ด์ฃผ์–ด์•ผ ํ–ˆ์ง€๋งŒ, dispatcher-servlet์ด ํ•ด๋‹น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ๋“ค์–ด์˜ค๋Š” ๋ชจ๋“  ์š”์ฒญ์„ ํ•ธ๋“ค๋งํ•ด์ฃผ๊ณ  ๊ณตํ†ต ์ž‘์—…์„ ์ฒ˜๋ฆฌ๋ฉด์„œ ์ƒ๋‹นํžˆ ํŽธ๋ฆฌํ•˜๊ฒŒ ์ด์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ๊ตฌํ˜„ํ•ด๋‘๊ธฐ๋งŒ ํ•˜๋ฉด DispatcherServlet์ด ์•Œ์•„์„œ ์ ํ•ฉํ•œ ์ปจํŠธ๋กค๋Ÿฌ๋กœ ์œ„์ž„์„ ํ•ด์ฃผ๋Š” ๊ตฌ์กฐ๊ฐ€ ๋˜์—ˆ๋‹ค.