๐จ What is Servlet?
- JAVA๋ฅผ ์ฌ์ฉํ์ฌ ์น์ ๋ง๋ค๊ธฐ ์ํด ํ์ํ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ์ ์ ๋๋ค. (Servlet ํด๋์ค์ ๊ตฌํ ๊ท์น์ ์ง์ผ์ผํฉ๋๋ค.)
- ๋ํ, ์ด๋ฌํ ์น ๊ธฐ๋ฐ์ ์์ฒญ์ ๋ํด ๋์ ์ผ๋ก ์ฒ๋ฆฌํด์ฃผ๋ ์ญํ ๋ก์ Server Side์์ ์๋(WAS)ํฉ๋๋ค.
- ์น ํ์ด์ง ๊ฐ๋ฐ ์, ์น ํ๋ฉด(HTML)์ JSP๋ก ํํํ๊ณ , ๋ณต์กํ ํ๋ก๊ทธ๋๋ฐ์ ์๋ธ๋ฆฟ์ผ๋ก ๊ตฌํํ์ฌ ์กฐํ๋กญ๊ฒ ์ฌ์ฉํฉ๋๋ค.
- ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญ์ ํ๋ฉด ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ค์ ์ ์กํด์ฃผ๋ ํ๋ก๊ทธ๋จ์ ๋๋ค.
- HttpServlet์ด๋ผ๋ Java์ ํด๋์ค๋ฅผ ์์๋ฐ์ต๋๋ค.
๐จ Servlet Life Cycle
1. Servlet ๊ฐ์ฒด ์์ฑ (1ํ)
2. init() ํธ์ถ (1ํ)
3. service(), doGet(), doPost() ํธ์ถ (์์ฒญ์ ๋งค๋ฒ)
4. destory() ํธ์ถ (1ํ)
๐จ What is Servlet Container?
- ์๋ธ๋ฆฟ์ ์์ฒญ์ ๋ฐ๊ฑฐ๋ ๋ด๋ณด๋ผ ๋, ์์ ์ด ์์์ ํ๋ ๊ฒ์ด ์๋๋ผ ์๋ธ๋ฆฟ์ ์คํ์ํค๋ ์ฃผ์ฒด์ธ ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ผ๋ ๊ฒ์ ์ด์ฉํฉ๋๋ค.
- ์ฆ, Servlet์ ๊ด๋ฆฌํ๋ค๋ Servlet Container๋ ์ด๋ค ์์ฒญ์ ๋ํด ์ด๋ค Servlet์ ์คํํ ๊ฒ์ธ์ง ์ ์ดํ๋ ๊ฒ์ด์ฃ .
- ๋ ์ฝ๊ฒ ๋งํ๋ฉด,, ์๋ธ๋ฆฟ์ด ์น์๋ฒ์ ํต์ ํ ์ ์๋๋ก ํด์ค๋๋ค.
- ๋ํ์ ์ธ ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ ๋ฐ๋ก Tomcat (EJB์ ๊ธฐ๋ฅ์ ์ง์ํด์ฃผ์ง ์๋ Tomcat์ ์์ ํ WAS๋ผ๊ณ ๋ณด๊ธฐ์ ๋ฌด๋ฆฌ๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.) ์ด์ฃ !
๐จ Servlet ๋์ ๊ณผ์
๐จ๊ทธ๋ ๋ค๋ฉด, Dispatcher Servlet์ ๋ฌด์์ธ๊ฐ์?
- ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญ์ ์ฃผ๋ฉด, Servlet Container๊ฐ ์์ฒญ์ ๋ฐ๋๋ฐ์. ์ด๋ ์ ์ผ ์์์ ์๋ฒ๋ก ๋ค์ด์ค๋ ๋ชจ๋ ์์ฒญ์ ์ฒ๋ฆฌํ๋Front Controller๋ผ๋ ๊ฒ์ Spring์์ ์ ์ํ์๊ณ , ์ด๋ฅผ Dispatcher Servlet์ด๋ผ๊ณ ํฉ๋๋ค.
- ๊ธฐ์กด์๋ ๋ชจ๋ Servlet์ ๋ํด URL ๋งคํ์ ํ์ฉํ๊ธฐ ์ํด์ web.xml์ ๋ชจ๋ ๋ฑ๋กํด์ฃผ์ด์ผ ํ์ง๋ง, dispatcher servlet์ด ํด๋น ์ดํ๋ฆฌ์ผ์ด์ ์ผ๋ก ๋ค์ด์ค๋ ๋ชจ๋ ์์ฒญ์ ํธ๋ค๋งํด์ฃผ๋ฉด์ ์์ ์ ํจ์จ์ ๋์์ต๋๋ค.
(Spring Boot์์๋ @SpringBootApplication ์ด๋ผ๋ ์ด๋ ธํ ์ด์ ์ผ๋ก web.xml ํ์ผ์ ๋์ฒดํ ์ ์์ต๋๋ค.)
- ์ฆ, Controller๋ก ํฅํ๋ ๋ชจ๋ ์น ์์ฒญ์ ์ง์ ์ ์ผ๋ก์จ ์น ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ ๊ฒฐ๊ณผ ๋ฐ์ดํฐ๋ฅผ Client์๊ฒ ์๋ตํฉ๋๋ค.
- Dispatcher Servlet์ ์ด์ฉํ๋ค๋ ๊ฒ์ ์คํ๋ง์์ ์ ๊ณตํ๋ MVC ๋ชจ๋ธ์ ์ด์ฉํ๊ฒ ๋ค๋ ๊ฒ์ผ๋ก ์๊ฐํ๋ฉด ๋ฉ๋๋ค.
๐จ Dispathcer Servlet ๋์ ๊ณผ์
ex)
1. user/register์ ์์ฒญ์ด ์ค๋ฉด, Spring์ Dispatcher Servlet์ผ๋ก ์ ๋ฌ๋ฉ๋๋ค.
2. Dispatcher Servlet์ด UserContoller์ ์๋ registerUser()๊ณผ ๊ฐ์ ์ ์ ํ Method๋ฅผ ์ฐพ์ต๋๋ค.
3. ํด๋น Method๋ @PostMapping('/user/register'), @RequestMapping(value="/user/register", Request.Method=Post) ์ ๊ฐ์ ์ด๋ ธํ ์ด์ (Handler Mapping)์ ๋ณด๊ณ ์ฐพ์ต๋๋ค.
4. ํจ์๋ฅผ ์ํํ๊ณ ๋์ ์ ์ ํ view๋ฅผ Response ํฉ๋๋ค.
๐จ Web ๋์ ๊ณผ์
์ถ์ฒ : taes-k.github.io/2020/02/16/servlet-container-spring-container/
Server start ๋จ๊ณ
- Web server init
- Root WebApplicationContext ๋ก๋ฉ
- Web server start
Client ํธ์ถ ๋จ๊ณ
- Client -> Web server ์ผ๋ก request ๋ณด๋
- ๋์ Web server -> Servlet container๋ก ์ ๋ฌ
- Servlet container ์ฐ๋ ๋ ์์ฑ
- DispatcherServlet init (์๋ธ๋ฆฟ ์์ฑ ์๋์ด ์์๊ฒฝ์ฐ)
- ์์ฑ๋ ์ฐ๋ ๋์์ DispatcherServlet service() ๋ฉ์๋ ํธ์ถ
- HandlerMapping์ ํตํด ๋งคํ ์ปจํธ๋กค๋ฌ ์กฐํ
- HandlerAdapter๋ฅผ ํตํด ๋งคํ ์ปจํธ๋กค๋ฌ์ request ์ ๋ฌ
- ๊ฐ๋ฐ์๊ฐ ๊ตฌํํ Controller -> Service -> Repository … ๋์
'Spring > ์น' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
CRUDRepository vs JPARepository ๋๋์ฒด ๋ฌด์จ ์ฐจ์ด์ง? (0) | 2021.04.16 |
---|---|
Spring Container & Bean ์๋ช ์ฃผ๊ธฐ (0) | 2021.04.04 |
Container๋? (Servlet / Spring Container) (0) | 2021.04.03 |
Lombok์ ์ข์ ์ฌ์ฉ๋ฒ (3) | 2021.03.29 |
AOP๋? (Spring AOP) (0) | 2021.03.26 |