๐Ÿ“‹ Spring MVC - 1. ์›น ์„œ๋ฒ„, ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„


์›น ์„œ๋ฒ„, ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„

์›น์„œ๋ฒ„

  • HTTP ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘
  • ์ •์  ๋ฆฌ์†Œ์Šค ์ œ๊ณต, ๊ธฐํƒ€ ๋ถ€๊ฐ€๊ธฐ๋Šฅ
  • ์ •์  ํŒŒ์ผ์ธ HTML, CSS, JS, ์ด๋ฏธ์ง€, ์˜์ƒ
  • ex) NGINX, ์•„ํŒŒ์น˜

์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„

  • HTTP ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘
  • ์›น ์„œ๋ฒ„ ๊ธฐ๋Šฅ ํฌํ•จ + (์ •์  ๋ฆฌ์†Œ์Šค ์ œ๊ณต ๊ฐ€๋Šฅ)
  • ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•ด์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง ์ˆ˜ํ–‰
    • ๋™์  HTML. REST API
    • JSP, ์Šคํ”„๋ง MVC, ์„œ๋ธ”๋ฆฟ
    • ํ†ฐ์บฃ ๋“ฑ..

์›น ์„œ๋ฒ„ vs ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„

  • ์›น ์„œ๋ฒ„๋Š” ์ •์  ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๋‹นํ•˜๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„๋Š” ๋™์  ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๋‹นํ•œ๋‹ค.
  • ์‚ฌ์‹ค ๋‘˜์˜ ์šฉ์–ด์˜ ๊ฒฝ๊ณ„๋„ ๋ชจํ˜ธํ•จ
    • ์›น ์„œ๋ฒ„๋„ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ํฌํ•จํ•˜๊ธฐ๋„ ํ•จ
    • ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„๋„ ์›น ์„œ๋ฒ„์˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•จ
  • ์ž๋ฐ”์—์„œ๋Š” ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋ฉด ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„๋‹ค.

์›น ์‹œ์Šคํ…œ ๊ตฌ์„ฑ

WAS + DB

WAS๋Š” ์ •์  ๋ฆฌ์†Œ์Šค, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง ๋ชจ๋‘ ์ œ๊ณต ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— WAS, DB๋งŒ์œผ๋กœ ์›น ์‹œ์Šคํ…œ ๊ตฌ์„ฑ์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ์ด๋Ÿด ๊ฒฝ์šฐ WAS๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์€ ์—ญํ• ์„ ๋‹ด๋‹นํ•˜์—ฌ ์„œ๋ฒ„ ๊ณผ๋ถ€ํ•˜๊ฐ€ ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

WEB + WAS + DB

์ •์  ๋ฆฌ์†Œ์Šค๋งŒ ์ œ๊ณตํ•˜๋Š” ์›น์„œ๋ฒ„๋Š” ์ž˜ ์ฃฝ์ง€ ์•Š๋Š”๋‹ค. WAS๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•˜๋‹ค๊ฐ€ ์—๋Ÿฌ๊ฐ€ ๋‚  ์ˆ˜ ์žˆ๋Š”๋ฐ ์ด๋ฅผ ์›น ์„œ๋ฒ„๊ฐ€ ์˜ค๋ฅ˜ ํ™”๋ฉด์„ ๋ณด์—ฌ์ค€๋‹ค. ์›น ์„œ๋ฒ„์™€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„๊ฐ€ ๋ถ„๋ฆฌ๋˜์–ด์„œ ๊ฐ€๋Šฅํ–ˆ๋˜ ์ผ!


์„œ๋ธ”๋ฆฟ

๋งŒ์•ฝ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„๋ฅผ ์‹น ๋‹ค ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค๋ฉดโ€ฆ
๋‚˜๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์‹คํ–‰ํ•˜๊ณ  ์‹ถ์€๋ฐ, HTTP ๋ฉ”์‹œ์ง€๋ฅผ ์‹น ๋‹ค ์ฝ์–ด์•ผํ•œ๋‹ค.

์—ฌ๊ธฐ์„œ ์„œ๋ธ”๋ฆฟ์„ ์ง€์›ํ•˜๋Š” WAS๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์—๋งŒ ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋‹ค.

@WebServlet(name = "helloServlet", urlPattern = "/hello")
public class HelloServlet extends HttpServlet {
  @Override
  protected void service(HttpServletRequest request, HttpServletResponse response)
	// ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง

}
  • ํ•ด๋‹น URL์ด ํ˜ธ์ถœ๋˜๋ฉด ์„œ๋ธ”๋ฆฟ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋œ๋‹ค.
  • HTTP ์š”์ฒญ๊ณผ ์‘๋‹ต ์ •๋ณด๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋ธ”๋ฆฟ์„ ์ œ๊ณตํ•œ๋‹ค.
  • ๊ฐœ๋ฐœ์ž๋Š” HTTP ์ŠคํŽ™์„ ๋งค์šฐ ํŽธ๋ฆฌํ•˜๊ฒŒ ์ œ๊ณต

HTTP ์š”์ฒญ ์‹œ ์„œ๋ธ”๋ฆฟ์˜ ํ๋ฆ„

  • WAS๋Š” ์š”์ฒญ, ์‘๋‹ต ๊ฐ์ฒด๋ฅผ ์ƒˆ๋กœ ๋งŒ๋“ค์–ด์„œ ์„œ๋ธ”๋ฆฟ ๊ฐ์ฒด๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.
  • ๊ฐœ๋ฐœ์ž๋Š” ์š”์ฒญ ๊ฐ์ฒด์—์„œ HTTP ์š”์ฒญ ์ •๋ณด๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ๊บผ๋‚ด์„œ ์‚ฌ์šฉํ•œ๋‹ค.
  • ๊ฐœ๋ฐœ์ž๋Š” ์‘๋‹ต ๊ฐ์ฒด์— HTTP ์‘๋‹ต ์ •๋ณด๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ์ž…๋ ฅํ•œ๋‹ค.
  • WAS๋Š” ์‘๋‹ต ๊ฐ์ฒด์— ๋‹ด๊ฒจ์žˆ๋Š” ๋‚ด์šฉ์œผ๋กœ HTTP ์‘๋‹ต ์ •๋ณด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ

  • WAS ์•ˆ์— ์กด์žฌํ•œ๋‹ค.
  • ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๋Š” ์„œ๋ธ”๋ฆฟ ์ƒ๋ช… ์ฃผ๊ธฐ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค.
  • ์„œ๋ธ”๋ฆฟ ๊ฐ์ฒด๋Š” ์‹ฑ๊ธ€ํ†ค์œผ๋กœ ๊ด€๋ฆฌํ•œ๋‹ค. (๋•Œ๋ฌธ์— ๊ณต์œ  ๋ณ€์ˆ˜ ์‚ฌ์šฉ ์ฃผ์˜)
  • JSP๋„ ์„œ๋ธ”๋ฆฟ์œผ๋กœ ๋ณ€ํ™˜๋˜์–ด ์‚ฌ์šฉ
  • ์ตœ์ดˆ ๋กœ๋”ฉ ์‹œ์ ์— ์„œ๋ธ”๋ฆฟ ๊ฐ์ฒด๋ฅผ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด๋‘๊ณ  ์žฌํ™œ์šฉ
  • ๋™์‹œ ์š”์ฒญ์„ ์œ„ํ•œ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ์ฒ˜๋ฆฌ๋ฅผ ์ง€์›ํ•œ๋‹ค.

๋™์‹œ ์š”์ฒญ - ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ

๊ทธ๋Ÿฐ๋ฐ ์„œ๋ธ”๋ฆฟ์„ ๋ˆ„๊ฐ€ํ˜ธ์ถœํ•˜๋‚˜?

์Šค๋ ˆ๋“œ

  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ
  • ์ž๋ฐ” ๋ฉ”์ธ ๋ฉ”์ธ ๋ฉ”์„œ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด main์ด๋ผ๋Š” ์ด๋ฆ„์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ์‹คํ–‰๋œ๋‹ค.
  • ์Šค๋ ˆ๋“œ๊ฐ€ ์—†์œผ๋ฉด ์ž๋ฐ” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ํ•œ๋ฒˆ์— ํ•˜๋‚˜์˜ ์ฝ”๋“œ ๋ผ์ธ๋งŒ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  • ๋งŒ์•ฝ ๋™์‹œ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋ฉด ์Šค๋ ˆ๋“œ๋ฅผ ์ถ”๊ฐ€๋กœ ์ƒ์„ฑํ•œ๋‹ค.

๋‹จ์ผ ์š”์ฒญ์—๋Š” ๋‹จ์ผ ์Šค๋ ˆ๋“œ๋ฅผ ์‹คํ–‰์‹œํ‚จ๋‹ค.
ํ•˜์ง€๋งŒ, ๋‹ค์ค‘ ์š”์ฒญ์—์„œ ์Šค๋ ˆ๋“œ๊ฐ€ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋‹ค๊ฐ€ ์„œ๋ธ”๋ฆฟ์—์„œ ์ฒ˜๋ฆฌ๊ฐ€ ์ง€์—ฐ๋˜๊ณ  ์žˆ์„ ๋•Œ,
์ด๋•Œ ์ถ”๊ฐ€ ์š”์ฒญ์ด ๋“ค์–ด์˜ฌ ๊ฒฝ์šฐ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

์ด๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด?

์š”์ฒญ๋งˆ๋‹ค ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

์žฅ์ 
  • ๋™์‹œ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋ฆฌ์†Œ์Šค๊ฐ€ ํ—ˆ์šฉํ•  ๋•Œ๊นŒ์ง€ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ
  • ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ์ง€์—ฐ๋˜์–ด๋„ ๋‚˜๋จธ์ง€ ์Šค๋ ˆ๋“œ๋Š” ์ •์ƒ ๋™์ž‘
๋‹จ์ 
  • ์Šค๋ ˆ๋“œ ์ƒ์„ฑ ๋น„์šฉ์€ ๋น„์‹ธ๋‹ค.
    • ์š”์ฒญ์ด ์˜ฌ ๋•Œ๋งˆ๋‹ค ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ์‘๋‹ต์ด ๋Šฆ์–ด์ง„๋‹ค.
  • ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ ๋น„์šฉ์ด ๋ฐœ์ƒํ•œ๋‹ค.
  • ์Šค๋ ˆ๋“œ ์ƒ์„ฑ์— ์ œํ•œ์ด ์—†๋‹ค.
    • ์š”์ฒญ์ด ๋„ˆ๋ฌด ๋งŽ์œผ๋ฉด ๋ฆฌ์†Œ์Šค ์ž„๊ณ„์ ์„ ๋„˜์–ด ์„œ๋ฒ„๊ฐ€ ์ฃฝ์„ ์ˆ˜ ์žˆ๋‹ค.

์Šค๋ ˆ๋“œ ํ’€

์š”์ฒญ์ด ์˜ค๋ฉด ์Šค๋ ˆ๋“œ ํ’€์—์„œ ๋†€๊ณ  ์žˆ๋Š” ์Šค๋ ˆ๋“œํ’€์„ ๊ฐ€์ ธ๋‹ค๊ฐ€ ์“ด๋‹ค. (ํ†ฐ์บฃ์€ ์ตœ๋Œ€ 200๊ฐœ ๊ธฐ๋ณธ ์„ค์ •).
์Šค๋ ˆ๋“œ๋ฅผ ๋‹ค ์“ฐ๋ฉด ์Šค๋ ˆ๋“œ ํ’€์— ๋ฐ˜๋‚ฉํ•œ๋‹ค.
์Šค๋ ˆ๋“œ ํ’€์— ์žˆ๋Š” ์Šค๋ ˆ๋“œ ๊ฐœ์ˆ˜๋ณด๋‹ค ์š”์ฒญ์ด ๋งŽ์ด๋“ค์–ด์˜ค๋ฉด ์Šค๋ ˆ๋“œ ๋Œ€๊ธฐ ๋˜๋Š” ๊ฑฐ์ ˆ์„ ํ•œ๋‹ค.

์žฅ์ 
  • ๋ฏธ๋ฆฌ ์ƒ์„ฑ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ, ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ข…๋ฃŒํ•˜๋Š” ๋น„์šฉ์ด ์ ˆ์•ฝ๋œ๋‹ค.
  • ์‘๋‹ต ์‹œ๊ฐ„์ด ๋น ๋ฅด๋‹ค.
  • ์ƒ์„ฑ ์Šค๋ ˆ๋“œ ์ตœ๋Œ€์น˜๊ฐ€ ์žˆ์œผ๋‹ˆ, ์š”์ฒญ์ด ๋งŽ์ด ๋“ค์–ด์™€๋„ ๊ธฐ์กด ์š”์ฒญ์€ ์•ˆ์ „ํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•œ๋‹ค.

์‹ค๋ฌด ํŒ

  • WAS์˜ ์ฃผ์š” ํŠœ๋‹ ํฌ์ธํŠธ๋Š” ์ตœ๋Œ€ ์Šค๋ ˆ๋“œ ์ˆ˜์ด๋‹ค.
  • ๋„ˆ๋ฌด ๋‚ฎ๊ฒŒ ์„ค์ •ํ•˜๋ฉด?
    • ๋ฆฌ์†Œ์Šค๋Š” ์—ฌ์œ , ํด๋ผ์ด์–ธํŠธ๋Š” ๊ธˆ๋ฐฉ ์‘๋‹ต ์ง€์—ฐ
  • ๋„ˆ๋ฌด ๋†’๊ฒŒ ์„ค์ •ํ•˜๋ฉด?
    • ๋™์‹œ ์š”์ฒญ์ด ๋งŽ์œผ๋ฉด ์ด์†Œ์Šค ์ž„๊ณ„์  ์ดˆ๊ณผ๋กœ ์„œ๋ฒ„ ๋‹ค์šด
  • ์žฅ์•  ๋ฐœ์ƒ ์‹œ
    • ํด๋ผ์šฐ๋“œ๋ฉด ์„œ๋ฒ„๋ฅผ ๋Š˜๋ฆฌ๊ณ  ํŠœ๋‹ํ•œ๋‹ค.

์ ์ • ์ˆซ์ž?

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง ๋ณต์žก๋„, CPU, ๋ฉ”๋ชจ๋ฆฌ, IO ๋ฆฌ์†Œ์Šค ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋ชจ๋‘ ๋‹ค๋ฅด๋‹ค.
๋•Œ๋ฌธ์— ์‹ค์ œ ์„œ๋น„์Šค์™€ ์œ ์‚ฌํ•œ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด๋ณด์•„์•ผ ํ•œ๋‹ค.

WAS๋Š” ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ๋ฅผ ์ง€์›ํ•œ๋‹ค.

๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ์— ๋Œ€ํ•œ ๋ถ€๋ถ„์€ WAS๊ฐ€ ์ฒ˜๋ฆฌํ•œ๋‹ค.
๋•Œ๋ฌธ์— ๊ฐœ๋ฐœ์ž๋Š” ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ๊ด€๋ จ ์ฝ”๋“œ๋ฅผ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š์•„๋„ ๋œ๋‹ค.
๋‹จ, ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์ด๋ฏ€๋กœ ์‹ฑ๊ธ€ํ†ค ๊ฐ์ฒด(์„œ๋ธ”๋ฆฟ, ์Šคํ”„๋ง ๋นˆ)๋Š” ์ฃผ์˜ํ•ด์„œ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค.


HTML, HTTP API, CSR, SSR

๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ณ ๋ฏผํ•ด์•ผํ•  ๊ฒƒโ€ฆ.

์ •์  ๋ฆฌ์†Œ์Šค

๊ณ ์ •๋œ HTML, CSS, js ๋“ฑ์„ ์ œ๊ณตํ•œ๋‹ค.

HTML ํŽ˜์ด์ง€

๋ธŒ๋ผ์šฐ์ €์˜ ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด WAS๊ฐ€ ํ…œํ”Œ๋ฆฟ ์—”์ง„์œผ๋กœ ๋™์ ์œผ๋กœ HTML์„ ์ƒ์„ฑํ•œ๋‹ค.
์›น ๋ธŒ๋ผ์šฐ์ €๋Š” HTML์„ ํ•ด์„ํ•œ๋‹ค.

HTTP API

HTML์ด ์•„๋‹Œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•œ๋‹ค.
์ฃผ๋กœ JSON ํ˜•์‹์„ ์‚ฌ์šฉํ•˜๊ณ , ๋‹ค์–‘ํ•œ ์‹œ์Šคํ…œ์—์„œ ํ˜ธ์ถœํ•œ๋‹ค.
๋ฐ์ดํ„ฐ๋งŒ ์ฃผ๊ณ  ๋ฐ›๊ณ , UI ํ™”๋ฉด์ด ํ•„์š”ํ•˜๋ฉด ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ณ„๋„๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค.

CSR, SSR

SSR - ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง

  • ์„œ๋ฒ„์—์„œ ์ตœ์ข… HTML์„ ์ƒ์„ฑํ•ด์„œ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „๋‹ฌํ•œ๋‹ค.
  • ์ฃผ๋กœ ์ •์ ์ธ ํ™”๋ฉด์—์„œ ์‚ฌ์šฉ
  • ๊ด€๋ จ ๊ธฐ์ˆ  : JSP, ํƒ€์ž„๋ฆฌํ”„ ๋“ฑ
  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ™”๋ฉด ์ผ๋ถ€๋ฅผ ๋™์ ์œผ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.
CRS - ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง
  • HTML ๊ฒฐ๊ณผ๋ฅผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•ด ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ HTML์„ ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•œ๋‹ค.
  • ๋™์ ์ธ ํ™”๋ฉด์—์„œ ์‚ฌ์šฉํ•˜์—ฌ ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ex) ๊ตฌ๊ธ€ ์ง€๋„..
  • ๊ด€๋ จ ๊ธฐ์ˆ  : React, Vue.js ๋“ฑ
  • HTML ์š”์ฒญ -> ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์š”์ฒญ(ํด๋ผ์ด์–ธํŠธ ๋กœ์ง, HTML ๋ Œ๋”๋ง ์ฝ”๋“œ) -> HTTP API ๋ฐ์ดํ„ฐ ์š”์ฒญ -> ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ JS๋กœ HTML ๊ฒฐ๊ณผ ๋ Œ๋”๋ง

์ž๋ฐ” ๋ฐฑ์—”๋“œ ๊ธฐ์ˆ  ์—ญ์‚ฌ

์„œ๋ธ”๋ฆฟ - 1997

HTML ์ƒ์„ฑ์ด ์–ด๋ ค์›€

JSP - 1999

HTML ์ƒ์„ฑ์€ ํŽธํ•˜์ง€๋งŒ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊นŒ์ง€ ๋„ˆ๋ฌด ๋งŽ์€ ์—ญํ• ์„ ํ•œ๋‹ค.

์„œ๋ธ”๋ฆฟ, JSP ์กฐํ•ฉ = MVC ํŒจํ„ด ์‚ฌ์šฉ

Model, View, Controller๋กœ ์—ญํ• ์„ ๋‚˜๋ˆ„์–ด ๊ฐœ๋ฐœ

์ˆ˜๋งŽ์€ MVC ํ”„๋ ˆ์ž„ ์›Œํฌ

MVC ํŒจํ„ด ์ž๋™ํ™”, ๋ณต์žกํ•œ ์›น ๊ธฐ์ˆ ์„ ๋” ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ
ex) ์ŠคํŠธ๋Ÿฟ์ธ , ์Šคํ”„๋ง MVC(๊ณผ๊ฑฐ ๋ฒ„์ ผ)

์–ด๋…ธํ…Œ์ด์…˜ ๊ธฐ๋ฐ˜์˜ ์Šคํ”„๋ง MVC

@Controller ๋“ฑ์˜ ์–ด๋…ธํ…Œ์ด์…˜ ๋“ฑ์žฅ.

์Šคํ”„๋ง ๋ถ€ํŠธ์˜ ๋“ฑ์žฅ

์Šคํ”„๋ง ๋ถ€ํŠธ๋Š” ์„œ๋ฒ„๋ฅผ ๋‚ด์žฅํ•œ๋‹ค.
๊ณผ๊ฑฐ๋Š” ์„œ๋ฒ„์— WAS๋ฅผ ์ง์ ‘ ์„ค์น˜ํ•˜๊ณ , ์†Œ์Šค๋Š” War ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ์„ค์น˜ํ•œ WAS์— ๋ฐฐํฌํ•ด์•ผํ–ˆ๋‹ค.
์Šคํ”„๋ง ๋ถ€ํŠธ๋Š” ๋นŒ๋“œ ๊ฒฐ๊ณผ(Jar)์— WAS ์„œ๋ฒ„๋ฅผ ํฌํ•จํ•œ๋‹ค. -> ๋นŒ๋“œ ๋ฐฐํฌ ๋‹จ์ˆœํ™”

์ตœ์‹  ๊ธฐ์ˆ  - ์Šคํ”„๋ง ์›น ๊ธฐ์ˆ ์˜ ๋ถ„ํ™”

  • Web Servlet - Spring MVC
  • Web Reactive - Spring WebFlux
Spring WebFlux?
  • ์™„์ „ํ•œ ๋น„๋™๊ธฐ ๋…ผ๋ธ”๋กœํ‚น ์ฒ˜๋ฆฌ
  • ์ตœ์†Œ ์Šค๋ ˆ๋“œ๋กœ ์ตœ๋Œ€ ์„ฑ๋Šฅ - ์Šค๋ ˆ๋“œ ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ ๋น„์šฉ ํšจ์œจํ™”
  • ํ•จ์ˆ˜ํ˜• ์Šคํƒ€์ผ ๊ฐœ๋ฐœ - ๋™์‹œ์ฒ˜๋ฆฌ ์ฝ”๋“œ ํšจ์œจํ™”
  • ์„œ๋ธ”๋ฆฟ ๊ธฐ์ˆ  ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ
  • ํ•˜์ง€๋งŒ, RDB ์ง€์›์ด ๋ถ€์กฑํ•˜๋‹ค.
  • ํ•˜์ง€๋งŒ, ์ผ๋ฐ˜ MVC์˜ ์Šค๋ ˆ๋“œ ๋ชจ๋ธ๋„ ์ถฉ๋ถ„ํžˆ ๋น ๋ฅด๋‹ค.

์ž๋ฐ” ๋ทฐ ํ…œํ”Œ๋ฆฟ ์—ญ์‚ฌ

JSP

์†๋„๊ฐ€ ๋Š๋ฆฌ๊ณ  ๊ธฐ๋Šฅ์ด ๋ถ€์กฑํ•˜๋‹ค.

ํ”„๋ฆฌ๋งˆ์ปค, Velocity

์†๋„ ๋ฌธ์ œ ํ•ด๊ฒฐ, ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ

ํƒ€์ž„ ๋ฆฌํ”„

HTML ๋ชจ์–‘์„ ์œ ์ง€ํ•˜๋ฉด์„œ ๋ทฐ ํ…œํ”Œ๋ฆฟ ์ ์šฉ ๊ฐ€๋Šฅ (HTML ํƒœ๊ทธ์— ์ ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์—) ์Šคํ”„๋ง MVC์™€ ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ ํ†ตํ•ฉ


โœ๏ธ ๊น€์˜๋‹˜์˜ ์Šคํ”„๋ง MVC 1ํŽธ - ๋ฐฑ์—”๋“œ ์›น ๊ฐœ๋ฐœ ํ•ต์‹ฌ ๊ธฐ์ˆ  ๊ฐ•์˜ ๋…ธํŠธ โœ๏ธ