-
๋์ ์น ํ์ด์ง๋ฅผ ๊ตฌํํ๊ธฐ ์ํ JSP์ ServletWeb 2021. 10. 10. 10:50
๐ ์๋ก
ํ๋ถ์ ๋ ์๊ฐํ๋ ๊ณผ๋ชฉ์ ๋ง์์ง๋ง ์ค์ ํ์ ์์์ ํ๋ก๊ทธ๋๋ฐ์ ๋ํด ๊น์ด์๊ฒ ๋ค๋ค๋ ์์ ์ ๋ง์ง ์์๋ค.
3ํ๋ 1ํ๊ธฐ ๋ Model1 ๊ตฌ์กฐ ๊ธฐ๋ฐ์ผ๋ก ์ค์ตํ์๋๋ฐ ๊ทธ ๋๋ ์น๊ฐ๋ฐ์ด๋ ์๋ ๊ทธ๋ฐ๊ฑด ์ค ์๊ณ ๋ชจ๋ ํ๋ก์ ํธ๋ฅผ JSP๋ฅผ ์ฌ์ฉํด์ jsp ํ์ผ ์์ ๋น์ฆ๋์ค ๋ก์ง์ ๋๋ ค๋ฃ์์๋ค...
์ฌ์ง์ด 4ํ๋ 2ํ๊ธฐ์ ์คํ๋ง์ ์ฒ์ ์จ๋ดค๋๋ฐ ์ปจํธ๋กค๋ฌ๊ฐ ๋ญ์ง๋ ๋ชจ๋ฅด๊ณ RequestMapping๋๋ ๋ฐฉ์์ ๋ชฐ๋ผ์ ํ์ฐธ์ ํค๋งธ๋ ๊ธฐ์ต์ด ๋๋ค
๋ฌผ๋ก ์ด๋ฒ๋ ๋์ ๊ณต๋ถํ๋ ๊ฒ ์ฒ๋ผ JSP, ์๋ธ๋ฆฟ, MVC ํจํด, Spring, Spring Boot์ ๋ํด ์ ์ด๋ฐ ๊ธฐ์ ์ด ๋์๋์ง ํต์ฌ ์ฒ ํ์ ๋ฌด์์ธ์ง ์ฐจ๊ทผ์ฐจ๊ทผ ๋ฐฐ์ ๋ค๋ฉด ๋ ์ข์๊ฒ ์ง๋ง
์คํ๋ ค '์ ์ด ๋ ์ด๋ ๊ฒ ํ์๋๋ฐ ์๋ชป๋ ๋ฐฉ์์ด์๊ตฌ๋'๋ฅผ ๋๋ ์ ์๋ ์ง๊ธ๋ ๋์์ง ์๋ค ^^
Web Application Server
JSP์ Servlet์ ๋ค๋ฃจ๊ธฐ ์ , Web Application Server(WAS)์ ๋ํด ์๋์ IBM ๋งํฌ๋ฅผ ์ฝ๋ ๊ฑธ ์ถ์ฒ โ๐ฎ
Web Server ๐ Application Server ๐ Web Application Server
๊ฐ๋จํ๊ฒ ์ ๋ฆฌํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค
์น ์๋ฒ
์น ๋ธ๋ผ์ฐ์ ์ HTTP ์์ฒญ์ ๋ํ ์๋ต์ผ๋ก ์ ์ ์น ์ฝํ ์ธ (HTML pages, file, image, video ๋ฑ)๋ฅผ ์ ๊ณตํ๋ ์๋ฒ
์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ
์น ์ฝํ ์ธ ๋ ์ ๋ฌํ ์ ์์ง๋ง ํด๋ผ์ด์ธํธ์ ์๋ฒ ์ธก ์ฝ๋ ๊ฐ์ ์ํธ์์ฉ์ ํ์ฑํ์์ผ ๋์ ์ฝํ ์ธ ๋ฅผ ์์ฑํ๊ณ ์ ๋ฌํ๊ธฐ ์ํ ์๋ฒ
์น ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ
์ค์ ์ฌ์ฉ์์๋ ์์ ๋ ์๋ฒ์ ๊ฒฝ๊ณ๊ฐ ๋ชจํธํด์ก๊ณ , ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ด ์ค์ํด์ง๋ฉด์ ๋ฑ์ฅํจ. ๋ ์๋ฒ๋ฅผ ๋ถ๋ฆฌํ์ง ์๊ณ ์ ์ ์น ์ฝํ ์ธ ์ ๋์ ์์ฉ ํ๋ก๊ทธ๋จ ์ปจํ ์ธ ๋ฅผ ํจ๊ป ์ ๊ณตํ๋ ์๋ฒ
์ฐ๋ฆฌ๊ฐ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ WAS๋ก๋ Nginx์ Apache Tomcat์ด ์๋ค.
Nginx๋ ๋ฆฌ๋ฒ์ค ํ๋ก์, ๋ก๋ ๋ฐธ๋ฐ์ฑ, HTTP ์บ์ฑ์ ์ฃผ๋ก ์ง์ํ๊ณ
Apache Tomcat์ ์๋ฐ ์๋ธ๋ฆฟ์ ์คํํ๊ณ JSP์ฝ๋๊ฐ ํฌํจ๋ ์น ํ์ด์ง๋ฅผ ๋ ๋๋ง/์ ๋ฌํ๊ณ Java EE(Enterprise Edition)์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๊ณตํ๋ค.
Servlet
Java๋ฅผ ์ฌ์ฉํ์ฌ ์น ํ์ด์ง๋ฅผ ๋์ ์ผ๋ก ์์ฑํ ์ ์๋ ์๋ฒ ํ๋ก๊ทธ๋จ์ผ๋ก, Java ํด๋์ค์ ์ผ์ข
Servlet์ ํน์ง
- ์๋ธ๋ฆฟ ์ปจํ ์ด๋๊ฐ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ฐ์ ๋ ๋ ๋ฆฝ๋ ์ฐ๋ ๋๋ฅผ ์์ฑํ์ฌ ๋ค์ค ์ฐ๋ ๋๋ฅผ ์ ๊ณตํ๋ค
- ํ๋กํ ์ฝ์ ๊ด๊ณ ์์ด ์ฌ๋ฌ ์ ํ๋ฆฌ์ผ์ด์
๊ธฐ๋ฐ์ ์๋ฒ ์์ฉ ํ๋ก๊ทธ๋จ์ ๊ตฌํํ ์ ์๋ค
- ์ฃผ๋ก HTTP ํ๋กํ ์ฝ ๊ธฐ๋ฐ์ ์๋ธ๋ฆฟ ํ๋ก๊ทธ๋จ์ ์ฃผ๋ก ๊ตฌํ
- ์๋ธ๋ฆฟ ํ์ค API์์ ์ ๊ณตํ๋ ์ถ์ ํด๋์ค์ ์ธํฐํ์ด์ค ๊ธฐ๋ฐ์ ํด๋์ค๋ฅผ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ ํน์ ์๋ธ๋ฆฟ ์ปจํ ์ด๋์ ์ข ์๋์ง ์๋๋ค
- ๋ํ์ ์ธ ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ก Apache Tomcat์ด ์๋ค
- ํ๋์ HTTP Request ์์ฒญ์ ์ฒ๋ฆฌํ๋ ์๋ธ๋ฆฟ ์ธ์คํด์ค๋ ์ปจํ
์ด๋์ ์ํด ์ฑ๊ธํค์ผ๋ก ๊ด๋ฆฌ๋๋ค.
- Request์ ๊ด๋ จ๋ ์์ ์ ๋ง์น ์๋ธ๋ฆฟ ์ธ์คํด์ค๋ ์ค๋ ๋ํ์ ๋ค์ด๊ฐ๊ฑฐ๋ (destroy๋ฉ์๋ ํธ์ถ ๋ค) GC์ ๋์์ด ๋๋ค.
HTTP protocol - Servlet ๋์ ๊ณผ์
- Web Client๊ฐ Web Server์๊ฒ HTTP Request ๋ฉ์์ง๋ฅผ ๋ณด๋ธ๋ค.
- ํ์์ ๋ฐ๋ผ ๋งค๊ฐ๋ณ์, ์ฟ ํค ์ ๋ณด๋ฅผ ๊ฐ์ด ๋ณด๋ผ ์ ์๋ค
- Web Server๋ HTTP Request ๋ฉ์์ง๋ฅผ ํด์ํ์ฌ ์๋ธ๋ฆฟ์ ๋ํ ์์ฒญ์ผ ๊ฒฝ์ฐ ์๋ธ๋ฆฟ ์ปจํ
์ด๋์๊ฒ (๋คํธ์ํฌ๋ฅผ ํตํด) Request๋ฅผ ์ ๋ฌํ๋ค.
- WS๊ฐ ์คํ๋๋ ์ปดํจํฐ์ ์๋ธ๋ฆฟ ์ปจํ ์ด๋๊ฐ ์คํ๋๋ ์ปดํจํฐ๊ฐ ๋ฌ๋ผ๋ ๋๋ค
- ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ Web Server๋ก๋ถํฐ HTTP Request๋ฅผ ์ ๋ฌ๋ฐ์ ํด๋น ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์๋๋ก ์๋ธ๋ฆฟ์ ์์ฑํ์ฌ service() ๋ฉ์๋๋ฅผ ํธ์ถํ๋ค.
- ์๋ธ๋ฆฟ(์ปจํ ์ด๋์ ์ํด ์ธ์คํด์คํ๋)์ ํ์์ ๋ฐ๋ผ init() ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ์ด๊ธฐํํ๊ณ , ์ค์ ์๋น์ค๋ฅผ ์ํํ๊ธฐ ์ํ service() ๋ฉ์๋๋ฅผ ํธ์ถํ ์ ์๋ค.
- ์๋น์ค๋ฅผ ์ํํ ํ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์๋ ค์ฃผ๊ธฐ ์ํ ๊ฒฐ๊ณผ ํ์ด์ง๋ฅผ Web Server์๊ฒ ์ ๋ฌํ๋ค.
- Web Server๋ ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ก๋ถํฐ ์ ๋ฌ๋ฐ์ ๊ฒฐ๊ณผ ํ์ด์ง๋ฅผ Web Client์๊ฒ HTTP Response๋ก ๋ณด๋ธ๋ค.
Servlet ์์
3ํ๋ ์์ ํ ๋ ์บก์ณํ ์ฌ์ง?์ด ์๊ธธ๋ ๊ฐ์ ธ์๋ดค๋ค ^^
์ด์ฒ๋ผ ์๋ธ๋ฆฟ์ ์ด์ฉํด์ Java ์ฝ๋ ์์ HTML์ ๋ฃ์ด์ ์น ํ์ด์ง๋ฅผ ๋์ ์ผ๋ก ์์ฑํ ์ ์์ง๋ง,
out.println
๋ฉ์๋๊ฐ ์ค๋ณต๋์ด ๊ฐ๋ ์ฑ์ด ์ฌ๊ฐํ๋ค.๊ทธ๋์ Servlet์ผ๋ก ๋ฐ๋ก ์น ํ์ด์ง๋ฅผ ๋ง๋ค๊ธฐ ๋ณด๋ค๋ JSP๋ฅผ ์ด์ฉํด์ ์น ํ์ด์ง๋ฅผ ๋์ ์ผ๋ก ์์ฑํ๊ณ , ๊ทธ๊ฒ์ ์๋ธ๋ฆฟ ํํ๋ก ๋ณํํด์ ๊ตฌํํ๋ ๊ฒ ์ผ๋ฐ์ ์ด๋ค.
JSP (Java Server Page)
HTML ๋ฌธ์์ Java ์ฝ๋๋ฅผ ํฌํจํ์ฌ ์น ์๋ฒ์์ ๋์ ์ธ ์น ํ์ด์ง๋ฅผ ์์ฑํ ์ ์๊ฒ ํ๋ ๋๊ตฌ
์คํ ์ ์๋ธ๋ฆฟ์ผ๋ก ๋ณํ๋์ด ์คํ๋๋ฉฐ, ์๋ธ๋ฆฟ๊ณผ ๋ฌ๋ฆฌ HTML ํ์ค์ ์ํด ์์ฑ๋๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฐ์ ์ฉ์ดํ๋ค.
๋น์ทํ ๊ตฌ์กฐ๋ก PHP, ASP, ASP.NET ๋ฑ์ด ์์ง๋ง ํ์ฌ๋ ๋ง์ด ์ฌ์ฉํ์ง ์๋๋ค.
JSP ํน์ง
- Presentation Logic๊ณผ Business Logic ๋ถ๋ฆฌ
- ์น ํ์ด์ง์ ๋์์ธ์ด ๋ณ๊ฒฝ๋๋๋ผ๋ ๋ด๋ถ ๋น์ฆ๋์ค ๋ก์ง์ ์ฒ๋ฆฌํ๋ JSP์
Javabeans
์ฝ๋๋ ๋ณ๊ฒฝ ๋ ํ์๊ฐ ์๋ค. ๋ฐ๋๋ ๋ง์ฐฌ๊ฐ์ง
- ์น ํ์ด์ง์ ๋์์ธ์ด ๋ณ๊ฒฝ๋๋๋ผ๋ ๋ด๋ถ ๋น์ฆ๋์ค ๋ก์ง์ ์ฒ๋ฆฌํ๋ JSP์
- ์ปดํฌ๋ํธ์ ์ฌ์ฌ์ฉ ๊ฐ๋ฅ
- ๊ณตํต์ ์ผ๋ก ์ฌ์ฉ๋๋ ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค์ด์ ์ฌ์ฌ์ฉํ ์ ์๋ค.
- ex) ์ฃผ์ ๊ฒ์, ํ๊ธ ์ฒ๋ฆฌ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ๋ฑ
- JSTL, EL, ์ปค์คํ ํ๊ทธ ๋ค์ ํ์ฉํด์ ๊ฐ๋ฐ์ ์ฉ์ดํ๊ฒ ํ ์ ์๋ค.
ํ๋ ์ ํ ์ด์ ๋ก์ง์ ์๋ฒ์์ ๋ถ๋ฆฌํ๊ณ , ๋ค์ํ ํด๋ผ์ด์ธํธ ํ๋ซํผ์ ์ง์ํ๊ธฐ ์ํด MVVM ๋ชจ๋ธ์ ์ฌ์ฉํ๋ฉด์ JSP๋ ์ด์ ๋ ๋ง์ด ์ฌ์ฉํ์ง ์๋๋ค!
JSP ์ฒ๋ฆฌ ๊ณผ์
JSP๋ ์ต์ด ์์ฒญ ์ Servlet ํ์ผ๋ก ๋ณํ๋๊ณ ๋ค์ ํด๋์ค ํ์ผ๋ก ์ปดํ์ผ๋๋ค.
์๋ธ๋ฆฟ ์ปจํ ์ด๋์ธ ํฐ์บฃ์ด ํด๋์ค ํ์ผ์ ์คํ์์ผ ๊ฒฐ๊ณผ๋ฅผ ์น ๋ธ๋ผ์ฐ์ ๋ก ์ ๋ฌํ๋ค.
ํ์ง๋ง ์์ฒญํ ๋ ๋ง๋ค ๋งค๋ฒ JSP ํ์ผ์ ์๋ธ๋ฆฟ์ผ๋ก ๋ณํํ๋๊ฑด ๋นํจ์จ์ ์ด๋๊น ๋งจ ์ฒ์ ์์ฒญ์๋ง ๋ณํ ๊ณผ์ ์ด ์กด์ฌํ๋ค.
ํ ๋ฒ์ด๋ผ๋ ์์ฒญํ๋ JSP ํ์ผ์ ๋ค์ ์์ฒญํ๋ฉด ์ด๋ฏธ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๋ ํด๋์ค๊ฐ ์๋ต์ ์ฃผ๊ธฐ ๋๋ฌธ์ ๋์ฒด๋ก ํ๊ท ์๋ต์๊ฐ์ด ์งง๋ค.
์ ๋ฆฌ
WAS์ธ Tomcat์ ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ก ๋์ํ์ฌ ์๋ฐ ์๋ธ๋ฆฟ์ ์คํํ๊ณ , JSP ํ์ด์ง๋ฅผ ๋ ๋๋งํด์ ์ ๊ณตํจ์ผ๋ก์จ ๋์ ์ธ ์น ์ฝํ ์ธ ๋ฅผ ๋ค๋ฃฐ ์ ์๋ค.
Servlet์ Java๋ฅผ ์ด์ฉํด์ ๋์ ์ธ ์น ์ฝํ ์ธ ๋ฅผ ๋ง๋ค ์ ์๋ ํ๋ก๊ทธ๋จ์ด๋ค. Java ์ฝ๋ ์์ HTML ์ฝ๋๋ฅผ ์ฝ์ ํ ์ ์๋ค. ํ์ง๋ง Servlet์ผ๋ก ์ง์ View ํ์ด์ง๋ฅผ ์์ฑํ๋ ๊ฑด ๊ฐ๋ ์ฑ์ด ๋จ์ด์ง๋ค.
JSP๋ HTML ๋ฌธ์ ์์ Java ์ฝ๋๋ฅผ ์ฝ์ ํด์ ์น ํ์ด์ง๋ฅผ ๋์ ์ผ๋ก ๋ง๋ค ์ ์๊ฒ ํด์ค๋ค. ์์ฒญ ์ Servlet์ผ๋ก ๋ณํ๋๋ค.
'Web' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ์ ๋ฏธํ ์ ๊ฐ๋จํ๊ฒ ๊ตฌํํ ์ ์๋ Kurento์ Openvidu ํ๋ ์์ํฌ (420) 2021.11.04 ์ค์๊ฐ ์์คํ ๊ตฌํ์ ์ํ WebSocket์ ์ดํด (424) 2021.10.22 GET Method๋ URL์ 256์ ์ดํ๋ก ์ ํํ์ง ์๋๋ค (402) 2021.09.18 ์์ฃผ ์ฌ์ฉํ๋ HTTP Status Code (1) 2021.07.27 ๊ฐ๋ฐ์๋ค์ ๊ดด๋กญํ๋ SOP(๋์ผ ์ถ์ฒ ์ ์ฑ )์ CORS(๊ต์ฐจ ์ถ์ฒ ๋ฆฌ์์ค ๊ณต์ ) (0) 2021.07.21