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

HTML API (MessageBody JSON)

Last updated