[10๋ถ„ ํ…Œ์ฝ”ํ†ก] ๐ŸŒปํƒ€๋ฏธ์˜ Servlet vs Spring

KIM YONG GUยท2023๋…„ 9์›” 24์ผ
0

์šฐ์•„ํ•œํ…Œํฌ

๋ชฉ๋ก ๋ณด๊ธฐ
7/41

์„œ๋ธ”๋ฆฟ(Servlet)

์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค ๋•Œ ํ•„์š”ํ•œ ์ธํ„ฐํŽ˜์ด์Šค

Spring Web MVC

Spring Framework์— ์žˆ๋Š” ๋ชจ๋“ˆ. Web Service๋ฅผ ๋งŒ๋“ ๋‹ค.
MVC ํŒจํ„ด์„ ์‚ฌ์šฉํ•ด์„œ.

์‚ฌ์šฉ์ž(์š”์ฒญ)์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ค„ ์ˆ˜ ์—†๋‹ค.
๋™์ ์ธ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์—†๋‹ค.

CGI๋Š” Web Server์™€ ํ”„๋กœ๊ทธ๋žจ ์‚ฌ์ด์˜ ๊ทœ์•ฝ.
๊ทธ๋Ÿฌ๋‚˜ CGI์—๋„ ๋‘ ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค. (์•„๋ž˜ ๊ทธ๋ฆผ์€ ํ”„๋กœ์„ธ์Šค์™€ ์Šค๋ ˆ๋“œ์˜ ๋‹จ์ˆœ ์„ค๋ช…๊ทธ๋ฆผ)

1) request๊ฐ€ ๋“ค์–ด์˜ฌ ๋•Œ ๋งˆ๋‹ค ํ”„๋กœ์„ธ์Šค๋ฅผ ๋งŒ๋“ ๋‹ค.
=> ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด process๋ฅผ thread๋กœ ๋ณ€ํ™˜ํ•ด์•ผ ํ•  ํ•„์š”์„ฑ์ด ์žˆ์Œ

2) request์— ๋”ฐ๋ผ CGI ๊ตฌํ˜„์ฒด๊ฐ€ ๋ณ„๋„๋กœ ์ƒ์„ฑ
=> ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์œผ๋กœ ๋ณ€ํ™˜ํ•˜์˜€์Œ

์•„๋ž˜ ๊ทธ๋ฆผ์€ ์ด ๊ฐœ์„ ์ ์„ ๋ณด์™„ํ•œ ๊ฒƒ

์„œ๋ธ”๋ฆฟ ์ฝ”๋“œ

Web.xml(์„ค์ •ํŒŒ์ผ) Servelet Mapping
WAS์—๊ฒŒ Servlet ๊ฐ์ฒด - URL mapping ์ •๋ณด๋ฅผ ์•Œ๋ ค์ค€๋‹ค.

1) Request์˜ Parameter๋ฅผ ๋ฐ›๋Š”๋‹ค.

2) ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•˜๊ณ 

3) ๊ฒฐ๊ณผ๋ฅผ ๋‹ด์€ View๋ฅผ ๋งŒ๋“ค์–ด์„œ

4) Client์—๊ฒŒ ์ „์†กํ•œ๋‹ค.

Spring Web MVC์—์„œ๋Š” Servlet๋ฅผ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ• ๊นŒ?

Dispatcher Servlet์„ ์‚ฌ์šฉํ•œ๋‹ค. ๋จผ์ € ์ „์ฒด๊ตฌ์กฐ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

1) ๋ชจ๋“  ์š”์ฒญ์€ Dispatcher Servlet์œผ๋กœ ๋ณด๋‚ธ๋‹ค.

2) ์š”์ฒญ์— ๋”ฐ๋ผ ์ ์ ˆํ•œ Controller๋ฅผ ์ฐพ๋Š”๋‹ค. (Handler๋Š” Controller๋ณด๋‹ค ์ƒ์œ„ ๊ฐœ๋…)

  • ์ฐพ๋Š” ๋ฐฉ๋ฒ•์€ Spring Framework์—์„œ ์ œ๊ณตํ•œ๋‹ค.
  • ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์ œ๊ณตํ•˜๋Š” ํ•ธ๋“ค๋Ÿฌ ๋งคํ•‘์€ 4๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.
  • BeanName-
    • Bean ์ด๋ฆ„๊ณผ Url์„ Mapping ํ•˜๋Š” ๋ฐฉ์‹
  • ControllerClassName-
  • SimpleUrl-
  • DefaultAnnotation--
    • Annotation์œผ๋กœ Url๊ณผ Mappingํ•˜๋Š” ๋ฐฉ์‹

3) ์–ด๋–ค ๋ฐฉ์‹์˜ Handler Mappiing์„ ์‚ฌ์šฉํ• ์ง€ ์„ค์ •ํŒŒ์ผ์— ์ €์žฅํ•œ๋‹ค.

  • Servlet์„ ๋“ฑ๋กํ•˜๋ฉด ๊ทธ Servlet์ด ์‚ฌ์šฉํ•  ์„ค์ •ํŒŒ์ผ์ด ์ž๋™์œผ๋กœ ๋“ฑ๋ก๋œ๋‹ค.
  • WEB-INF/Servlet์ด๋ฆ„-servlet.xml

4) HandlerMapping์—์„œ ์ฐพ์€ Handelr(Controller)์˜ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค. ModelAndViewํ˜•ํƒœ๋กœ ๋ฐ”๊ฟ”์ค€๋‹ค. (Data์— ํ•ด๋‹นํ•˜๋Š” Model, Data๋ฅผ ๋„˜๊ธธ Page์— ํ•ด๋‹นํ•˜๋Š” View, ๋ณดํ†ต View์˜ ๋…ผ๋ฆฌ์ ์ธ ์ด๋ฆ„๋งŒ return ํ•ด์ค€๋‹ค.)

5) View ์ด๋ฆ„์œผ๋กœ ์‹ค์ œ View ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
6) View์— Model(data)๋ฅผ ํฌํ•จํ•œ๋‹ค.

profile
Engineer, Look Beyond the Code.

0๊ฐœ์˜ ๋Œ“๊ธ€