Reference
https://mangkyu.tistory.com/14
https://velog.io/@falling_star3/Tomcat-%EC%84%9C%EB%B8%94%EB%A6%BFServlet%EC%9D%B4%EB%9E%80
๐ก1. Servlet
JVM
๊ธฐ๋ฐ์์ ์น ๊ฐ๋ฐ์ ํ๊ธฐ ์ํ ๋ช ์ธ์ด์ API- ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ servlet ํด๋์ค์ ๊ตฌํ ๊ท์น์ ์งํจ ์๋ฐ ์น ํ๋ก๊ทธ๋๋ฐ ๊ธฐ์
- ์น ์์ฒญ๊ณผ ์๋ต์ ํ๋ฆ์ ๊ฐ๋จํ ๋ฉ์๋ ํธ์ถ๋ง์ผ๋ก ์ฒด๊ณ์ ์ผ๋ก ๋ค๋ฃฐ ์ ์๊ฒ ํด์ค
e.g. ๋ก๊ทธ์ธ ์๋๋ฅผ ํ ๋, ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์์ ์ ๋ ฅ๋๋ ์์ด๋์ ๋น๋ฐ๋ฒํธ๋ฅผ ํ์ธํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ์๋ตํ๋๋ฐ ์ด๋ฌํ ์ญํ ์ ์ํํ๋ ๊ฒ์ด ์๋ธ๋ฆฟ
๐ก2. Servlet ํน์ง
- ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ํด ๋์ํ๋ ์น ์ดํ๋ฆฌ์ผ์ด์ ์ปดํฌ๋ํธ
- html์ ์ฌ์ฉํ์ฌ ์์ฒญ์ ์๋ต
- Java Thread๋ฅผ ์ด์ฉํด ๋์
- MVC ํจํด์์ Controller๋ก ์ด์ฉ
- HTTP ํ๋กํ ์ฝ ์๋น์ค๋ฅผ ์ง์ํ๋ javax.servlet.httlp.HttpServlet ํด๋์ค๋ฅผ ์์๋ฐ์
- UDP ๋ณด๋ค ์ฒ๋ฆฌ ์๋๊ฐ ๋๋ฆผ
- HTML ๋ณ๊ฒฝ ์ Servlet์ ์ฌ์ปดํ์ผํด์ผ ํ๋ ๋จ์ ์ด ์์
- ๋ณด์ ๊ธฐ๋ฅ์ ์ ์ฉํ๊ธฐ ์ฌ์
๐ก3. Servlet Container
์๋ฒ์ ์๋ธ๋ฆฟ์ ๋ง๋ค์๋ค๊ณ ํด์ ์ค์ค๋ก ์๋ํ๋ ๊ฒ์ด ์๋๊ณ ์๋ธ๋ฆฟ์ ๊ด๋ฆฌํด์ฃผ๋ ๊ฒ์ด ํ์. ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ฐ์์ฃผ๊ณ ์๋ตํ ์ ์๊ฒ, ์น ์๋ฒ์ ์์ผ์ผ๋ก ํต์ ํ๋ฉฐ ๋ํ์ ์ธ ์๋ก Tomcat์ด ์์ (์น ์๋ฒ์ ํต์ ํ์ฌ JSP์ ์๋ธ๋ฆฟ์ด ์๋ํ๋ ํ๊ฒฝ ์ ๊ณต)
์น ์๋ฒ์์ ํต์ ์ง์ : ์๋ธ๋ฆฟ๊ณผ ์น์๋ฒ๊ฐ ์์ฝ๊ฒ ํต์ ํ ์ ์๋๋ก ๋์์ค
์๋ธ๋ฆฟ ์๋ช ์ฃผ๊ธฐ (Life Cycle) ๊ด๋ฆฌ : ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ ์๋ธ๋ฆฟ์ ํ์๊ณผ ์ฃฝ์์ ๊ด๋ฆฌ. ์๋ธ๋ฆฟ ํด๋์ค๋ฅผ ๋ก๋ฉํ์ฌ ์ธ์คํด์คํํ๊ณ , ์ด๊ธฐํ ๋ฉ์๋๋ฅผ ํธ์ถํ๊ณ , ์์ฒญ์ด ๋ค์ด์ค๋ฉด ์ ์ ํ ์๋ธ๋ฆฟ ๋ฉ์๋๋ฅผ ํธ์ถ. ์๋ธ๋ฆฟ์ด ์๋ช ์ ๋ค ํ ์๊ฐ์๋ ์ ์ ํ๊ฒ Gabage Collection์ ์งํํ์ฌ ํธ์ ์ ๊ณต
๋ฉํฐ์ฐ๋ ๋ ์ง์ ๋ฐ ๊ด๋ฆฌ : ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ ์์ฒญ์ด ๋ค์ด์ฌ ๋๋ง๋ค ์๋ก์ด ์๋ฐ ์ฐ๋ ๋๋ฅผ ํ๋ ์์ฑํ๋๋ฐ, HTTP ์๋น์ค ๋ฉ์๋๋ฅผ ์คํํ๊ณ ๋๋ฉด ์ฐ๋ ๋๋ ์๋์ผ๋ก ์ฃฝ๊ฒ ๋จ. ์๋๋ ์ฐ๋ ๋๋ฅผ ๊ด๋ฆฌํด์ผ ํ์ง๋ง ์๋ฒ๊ฐ ๋ค์ค ์ฐ๋ ๋๋ฅผ ์์ฑ ๋ฐ ์ด์ํด์ฃผ๋ ์ฐ๋ ๋์ ์์ ์ฑ์ ๋ํด ๊ฑฑ์ ํ์ง ์์๋ ๋จ
์ ์ธ์ ์ธ ๋ณด์ ๊ด๋ฆฌ : ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ๋ฐ์๋ ๋ณด์์ ๊ด๋ จ๋ ๋ด์ฉ์ ์๋ธ๋ฆฟ ๋๋ ์๋ฐ ํด๋์ค์ ๊ตฌํํด๋์ง ์์๋ ๋จ.
๐ก4. Servlet ์๋ช
์ฃผ๊ธฐ
์๋ธ๋ฆฟ๋ ์๋ฐ ํด๋์ค์ด๋ฏ๋ก ์คํํ๋ฉด ์ด๊ธฐํ๋ถํฐ ์๋น์ค ์ํ ํ ์๋ฉธํ๊ธฐ๊น์ง์ ๊ณผ์ ์ ๊ฑฐ์นจ. ์ด ๊ณผ์ ์ ์๋ธ๋ฆฟ์ ์๋ช ์ฃผ๊ธฐ๋ผ ํ๋ฉฐ ๊ฐ ๋จ๊ณ๋ง๋ค ํธ์ถ๋์ด ๊ธฐ๋ฅ์ ์ํํ๋ ์ฝ๋ฐฑ ๋ฉ์๋๋ฅผ ์๋ธ๋ฆฟ ์๋ช ์ฃผ๊ธฐ ๋ฉ์๋๋ผ๊ณ ํจ
init()
๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ์ ์ฌinit()
๋ฉ์๋๋ ์ฒ์ ํ ๋ฒ๋ง ์คํ๋๊ธฐ ๋๋ฌธ์ ์๋ธ๋ฆฟ์ ์ฐ๋ ๋์์ ๊ณตํต์ ์ผ๋ก ์ฌ์ฉํด์ผํ๋ ๊ฒ์ด ์๋ค๋ฉด ์ค๋ฒ๋ผ์ด๋ฉinit()
์ ํตํด ์๋ก์ด ๋ด์ฉ์ ๋ค์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌinit()
์ด ํธ์ถ๋ ํ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ฐ๋ผ์ service()
๋ฉ์๋๋ฅผ ํตํด ์์ฒญ์ ๋ํ ์๋ต์ด doGet()
, doPost()
๋ก ๋ถ๊ธฐ HttpServletRequest
, HttpServletResponse
์ ์ํด request์ response ๊ฐ์ฒด๊ฐ ์ ๊ณตdestroy()
๋ฉ์๋๊ฐ ํธ์ถ๋๋๋ฐ ๋ง์ฐฌ๊ฐ์ง๋ก ํ ๋ฒ ์คํ๋๋ฉฐ, ์ข
๋ฃ์์ ์ฒ๋ฆฌํด์ผ ํ๋ ์์
๋ค์ destroy()
๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋ฉํ์ฌ ๊ตฌํ๐ก5. Servlet ๋์๋ฐฉ์
- client๊ฐ URL์ ์ ๋ ฅํ๋ฉด
HTTP Request
๊ฐ Servlet Container๋ก ์ ์ก- ์์ฒญ์ ์ ์ก๋ฐ์ Servlet Container๋
HttpServletRequest
,HttpServletResponse
๊ฐ์ฒด๋ฅผ ์์ฑ- web.xml์ ๊ธฐ๋ฐ์ผ๋ก ์ฌ์ฉ์๊ฐ ์์ฒญํ URL์ด ์ด๋ ์๋ธ๋ฆฟ์ ๋ํ ์์ฒญ์ธ์ง ์ฐพ์
- ํด๋น ์๋ธ๋ฆฟ์์ service ๋ฉ์๋๋ฅผ ํธ์ถํ ํ ํด๋ผ์ด์ธํธ์ GET, POST ์ฌ๋ถ์ ๋ฐ๋ผ doGet(), doPost()๋ฅผ ํธ์ถ
- dpGet(), doPost() ๋ฉ์๋๋ ๋์ ํ์ด์ง๋ฅผ ์์ฑํ ํ
HttpServletResponse
๊ฐ์ฒด์ ์๋ต์ ๋ณด๋- ์๋ต์ด ๋๋๋ฉด
HttpServletRequest
,HttpServletResponse
๋ ๊ฐ์ฒด๋ฅผ ์๋ฉธ
public class FirstServlet extends HttpServlet {
@Override
public void init() {
...
}
@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp) {
...
}
@Override
public void destroy() {
...
}
}