01.Servlet
Web Application
Web Server
HTTP ๊ธฐ๋ฐ์ผ๋ก ๋์
์ ์ ๋ฆฌ์์ค(HTML, CSS, JS, Img, Video ..) ์ ๊ณต
ex) NGINX, APACHE
Web Application Server (WAS)
HTTP ๊ธฐ๋ฐ ๋์ฅ
Web server ๊ธฐ๋ฅ ํฌํจ + ์ ์ ๋ฆฌ์์ค
Application Logic ์ํ
๋์ HTML, REST API, Servlet, JSP, Spring MVC
ex) Tomcat, Undertow
Web System
Client -> Web Server -> WAS -> DB
WAS์ ์๋ฒ ๊ณผ๋ถํ ๋ฌธ์ ํด๊ฒฐ
Web Server ์์ ์ ์ ๋ฆฌ์์ค ์ฒ๋ฆฌ
WAS ์์๋ Application Logic ๋์ ์ฒ๋ฆฌ
ํจ์จ์ ์ธ ๋ฆฌ์์ค ๊ด๋ฆฌ (ํ์์ ๋ฐ๋ผ ์๋ฒ ์ฆ์ค)
Servlet
Servlet
urlPatterns์ URL์ด ํธ์ถ๋๋ฉด ์๋ธ๋ฆฟ ์ฝ๋ ์คํ
HttpServletRequest ๋ก HTTP ์์ฒญ ์ ๋ณด๋ฅผ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉ
HttpServletResponse ๋ก HTTP ์๋ต ์ ๋ณด๋ฅผ ํธ๋ฆฌํ๊ฒ ์ ๊ณต
Servlet Container
Servlet ์ ์ง์ํ๋ WAS
Servlet ๊ฐ์ฒด๋ฅผ ์์ฑ/์ด๊ธฐํ/ํธ์ถ/์ข ๋ฃํ๋ ์๋ช ์ฃผ๊ธฐ ๊ด๋ฆฌ
Servlet ๊ฐ์ฒด๋ ์ฑ๊ธํค์ผ๋ก ๊ด๋ฆฌ
JSP ๋ Servlet ์ผ๋ก ๋ณํ ๋์ด ์ฌ์ฉ
๋์ ์์ฒญ์ ์ํ ๋ฉํฐ ์ฐ๋ ๋ ์ฒ๋ฆฌ ์ง์
Multi Thread
Thread
Application ์ฝ๋๋ฅผ ํ๋ํ๋ ์์ฐจ์ ์ผ๋ก ์คํํ๋ ๊ฒ
Thread pool
ํ์ํ Thread ๋ฅผ Thread Pool ์ ๋ณด๊ดํ๊ณ ๊ด๋ฆฌ
Thread Pool ์ ์์ฑ ๊ฐ๋ฅํ Thread ์ ์ต๋์น๋ฅผ ๊ด๋ฆฌ
Tomcat default : ์ต๋ 200๊ฐ
WAS ์ฃผ์ ํ๋ ํฌ์ธํธ๋
Max Thread๋๋ฌด ๋ฎ์ ๊ฒฝ์ฐ : ๋์ ์์ฒญ์ด ๋ง์ผ๋ฉด, ์๋ฒ ๋ฆฌ์์ค๋ ์ฌ์ ๋กญ์ง๋ง, ํด๋ฆฌ์ด์ธํธ๋ ์๋ต ์ง์ฐ
๋๋ฌด ๋์ ๊ฒฝ์ฐ : ๋์ ์์ฒญ์ด ๋ง์ผ๋ฉด, CPU, ๋ฉ๋ชจ๋ฆฌ ๋ฆฌ์์ค ์๊ณ์ ์ด๊ณผ๋ก ์๋ฒ ๋ค์ด
์ฅ์ ๋ฐ์ ์ : ํด๋ผ์ฐ๋์ผ ๊ฒฝ์ฐ ์๋ฒ๋ฅผ ๋๋ฆฐ ํ ํ๋, ์๋๋ฉด ๊ทธ๋ฅ ๋นกํ๋..
๊ฐ๋ฐ์๊ฐ Multi Thread ๊ด๋ จ ์ฝ๋๋ฅผ ์ ๊ฒฝ์ฐ์ง ์์๋ ๋จ (Multi Thread ์ ๋ํ ๋ถ๋ถ์ WAS๊ฐ ์ฒ๋ฆฌ)
๋จ, Max Thread ํ๋์ด ์ค์
์ฑ๋ฅ ํ ์คํธ Tool : nGrinder, Apache ab, JMeter
HTML, API, SSR, CSR
HTMl
Static Resources
HTML, CSS, JS, image, vedio ..
Web Browser โ Web Server โ Static Resources
HTML ํ์ด์ง
๋์ HTML ํ์ผ์ ์์ฑํด์ ์ ๋ฌ
JSP, Thymeleaf ..
Web Browser โ WAS (HTML) โ DB
HTML API
๋ฐ์ดํฐ(์ฃผ๋ก JSON) ์ ๋ฌ
Web Browser โ WAS (DATA) โ DB
Web/App Client, Server to Server
SSR
Server Side Rendering
์๋ฒ์์ ์ต์ข HTML์ ์์ฑํด์ ํด๋ผ์ด์ธํธ์ ์ ๋ฌ (์ฃผ๋ก ์ ์ ํ๋ฉด)
JSP, Thymeleaf ..
CSR
HTML ๊ฒฐ๊ณผ๋ฅผ Javascript๋ฅผ ์ฌ์ฉํด ์น ๋ธ๋ผ์ฐ์ ์์ ๋์ ์ผ๋ก ์์ฑํด์ ์ ์ฉ (Google Map, Gmail ..)
React, Vue.js
Servlet
Project
IntelliJ
JSP ์ฌ์ฉ์ ์ํด War Packaging ์ฌ์ฉ
Java ์ง์ ์คํ ์ค์
Preferences Build โ Execution โ Deployment Build Tools Gradle
Lombok ์ ์ฉ
Preferences โ plugin โ lombok
Preferences โ Annotation Processors โ Enable annotation processing check
HTTP ์์ฒญ ๋ฉ์์ง ๋ก๊ทธ ํ์ธ
application.properties
HttpServletRequest
HTTP Start Line ์กฐํ
HTTP Header ํธ์ ์กฐํ
HTTP ๊ธฐํ ์ ๋ณด
HTTP Request Data
HTTP ์์ฒญ ๋ฉ์์ง๋ฅผ ํตํด ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ๋ฐฉ๋ฒ
Get(URL Query Parameter)
๋ฉ์์ง ๋ฐ๋ ์์ด URL ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ์ ๋ฐ์ดํฐ๋ฅผ ํฌํจํด์ ์ ๋ฌ
HTTP Message Body ๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ฏ๋ก Content-type ์ด ์์
ex) ๊ฒ์, ํํฐ, ํ์ด์ง ...
Post(HTML Form)
HTTP Message Body ์ ๋ฐ์ดํฐ๋ฅผ ํฌํจํด์ ์ ๋ฌํ๋ฏ๋ก Content-type ์ ํฌํจ๋ ๋ฐ์ดํฐ ํ์์ ์ง์
ex) ํ์๊ฐ์ , ์ํ์ฃผ๋ฌธ, HTML Form ...
HTTP Message Body
HTTP message body ์ ๋ฐ์ดํฐ๋ฅผ ์ง์ ๋ด์์ ์์ฒญ
HTTP API ์์ ์ฃผ๋ก ์ฌ์ฉ(JSON, XML, TEXT)
๋ฐ์ดํฐ ํ์์ ์ฃผ๋ก JSON(POST, PUT, PATCH)
HttpServletResponse
Status-line
Content-type
Response-headers
Cookie
Redirect
Mmessage body
HTTP Response Data
HTTP ์๋ต ๋ฉ์์ง
๋จ์ ํ
์คํธ
๋จ์ ํ
์คํธHTML
HTMLHTML API (MessageBody JSON)
HTML API (MessageBody JSON)Last updated