๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

WINK-(Web & App)/Spring Boot ์Šคํ„ฐ๋””

[2025 1ํ•™๊ธฐ ์Šคํ”„๋ง ๋ถ€ํŠธ ์Šคํ„ฐ๋””] ์ด์ƒ๋ž˜ #2์ฃผ์ฐจ

๋ฐ˜์‘ํ˜•

๐Ÿ’ก์ •์  ์ปจํ…์ธ 

์ •์  ์ปจํ…์ธ ๋ž€?
  • ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ๋ฐ›๊ณ  ์„œ๋ฒ„์— ๋ฏธ๋ฆฌ ์ €์žฅ๋œ HTML, CSS, JS ๋“ฑ์˜ ํŒŒ์ผ์„ ๊ทธ๋Œ€๋กœ ์‘๋‹ตํ•ด ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

 

์ •์  ์ปจํ…์ธ ์˜ ํŠน์ง•
  • ๋ชจ๋“  ์‚ฌ์šฉ์ž์—๊ฒŒ ๋™์ผํ•˜๊ฒŒ ์ „๋‹ฌ๋จ 
     
  • ์‹ ๋ฌธ๊ณผ ๊ฐ™์ด ์ฝ˜ํ…์ธ ๊ฐ€ ์ž์ฃผ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š” ์‚ฌ์ดํŠธ์— ์ ํ•ฉ 
     
  • ์ •์  HTML์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์–ด Content Delivery Network (CDN)์„ ํ†ตํ•ด ๋น ๋ฅด๊ฒŒ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Œ 

html ํŒŒ์ผ์„ resources/static์— ๋„ฃ์–ด์ฃผ๋ฉด?
์ด๋ ‡๊ฒŒ ์„œ๋ฒ„์— ๋ฐ”๋กœ ์ ์šฉ์ด ๋œ๋‹ค...

 


๐Ÿ’กMVC์™€ ํ…œํ”Œ๋ฆฟ ์—”์ง„

MVC๋ž€?

 

MVC(Model View Controller): ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค, ๋ฐ์ดํ„ฐ ๋ฐ ๋…ผ๋ฆฌ ์ œ์–ด๋ฅผ ๊ตฌํ˜„ํ•˜๋Š”๋ฐ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๋””์ž์ธ ํŒจํ„ด

  • ๋ชจ๋ธ: ๋ฐ์ดํ„ฐ์™€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๊ด€๋ฆฌ
  • ๋ทฐ: ๋ ˆ์ด์•„์›ƒ๊ณผ ํ™”๋ฉด์„ ์ฒ˜๋ฆฌ
  • ์ปจํŠธ๋กค๋Ÿฌ: ๋ชจ๋ธ๊ณผ ๋ทฐ๋กœ ๋ช…๋ น์„ ์ „๋‹ฌ

https://velog.io/@langoustine/%EC%97%AC%EA%B8%B0%EB%8F%84-MVC-%EC%A0%80%EA%B8%B0%EB%8F%84-MVC-MVC-%ED%8C%A8%ED%84%B4%EC%9D%B4-%EB%AD%90%EC%95%BC

1. ์‚ฌ์šฉ์ž์˜ Request(์š”์ฒญ)๋ฅผ Controller๊ฐ€ ๋ฐ›์Œ
2. Controller๋Š” Service์—์„œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•œ ํ›„ ๊ฒฐ๊ณผ๋ฅผ Model์— ๋‹ด์Œ
3. Model์— ์ €์žฅ๋œ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์‹œ๊ฐ์  ์š”์†Œ ์ถœ๋ ฅ์„ ๋‹ด๋‹นํ•˜๋Š” View๋ฅผ ์ œ์–ดํ•˜์—ฌ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ „๋‹ฌ

					    ์›น์—์„œ๋Š”??
1. User: ์‚ฌ์šฉ์ž๊ฐ€ ์›น ์‚ฌ์ดํŠธ์— ์ ‘์†ํ•œ๋‹ค.
2. Manipulates: Controller๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•œ ์›น ํŽ˜์ด์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด Model์„ ํ˜ธ์ถœํ•œ๋‹ค.
3. Updates: Model์€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ํ†ตํ•ด DB ๋ฐ ํŒŒ์ผ๊ณผ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ์–ดํ•œ ํ›„ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์ดํ›„ Controller๋Š” Model์—๊ฒŒ ๋ฐ˜ํ™˜๋ฐ›์€ ๊ฒฐ๊ณผ๋ฅผ View์— ๋ฐ˜์˜ํ•œ๋‹ค.
4. Sees: ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜จ View๊ฐ€ ์‚ฌ์šฉ์ž์—๊ฒŒ ์›น ํŽ˜์ด์ง€๋ฅผ ์ถœ๋ ฅํ•˜์—ฌ ๋ณด์—ฌ์ค€๋‹ค.

 

์ด๋ ‡๊ฒŒ controller์— ์ถ”๊ฐ€ํ•ด์ฃผ๊ณ 
์ด๋ ‡๊ฒŒ ๋œฌ๋‹ค~

 

?name=spring - name์ด๋ผ๊ณ  ํ•˜๋Š” ๊ฐ’์ด spring์œผ๋กœ ์น˜ํ™˜๋œ๋‹ค.

 

 

  1. ์›น๋ธŒ๋ผ์šฐ์ €์—์„œ ๋„˜๊ธฐ๋ฉด ๋‚ด์žฅ ํ†ฐ์ผ“ ์„œ๋ฒ„๋ฅผ ๋จผ์ € ๊ฑฐ์นœ๋‹ค.
  2. ๋‚ด์žฅ ํ†ฐ์ผ“ ์„œ๋ฒ„๋Š” ์Šคํ”„๋งํ•œํ…Œ ์ „๋‹ฌ
  3. ์Šคํ”„๋ง์€ mapping๋˜์žˆ๋Š” ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ
  4. viewResolver๊ฐ€ ํ…œํ”Œ๋ฆฟ ์—”์ง„ํ•œํ…Œ ๋„˜๊ธฐ๊ณ  ๋ณ€ํ™˜ํ›„ ์›น๋ธŒ๋ผ์šฐ์ €์— ๋„˜๊ธด๋‹ค.

๐Ÿ’กAPI

API๋ž€?

 

์ปดํ“จํ„ฐ๋‚˜ ์†Œํ”„ํŠธ์›จ์–ด ํ”„๋กœ๊ทธ๋žจ ๊ฐ„์— ์—ฐ๊ฒฐ์„ ์ œ๊ณตํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค, ์ปดํ“จํ„ฐ๋‚˜ ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ ์‚ฌ์ด์˜ ์—ฐ๊ฒฐ

 

API์˜ ํŠน์ง•
  • ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์—์„œ ํ˜ธํ™˜์„ฑ์„ ์œ„ํ•ด ์ง€์ผœ์•ผ ํ•˜๋Š” ์ถ”์ƒ์ ์ธ ์›์น™ 
     
  • ์—ฌ๋Ÿฌ ๊ธฐ์—…๊ณผ ๊ฐœ๋ฐœ์ž๋“ค์ด ์„œ๋กœ์˜ ํ”„๋กœ๊ทธ๋žจ์ด ํ˜ธํ™˜๋˜๋„๋ก ํ•ฉ์˜ํ•œ ์›์น™
  • ์š”์ฒญํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‘๋‹ต ์„œ๋น„์Šค์˜ ์ธํ”„๋ผ์™€ ๋ถ„๋ฆฌํ•˜๊ณ  ํ†ต์‹ ํ•  ๋•Œ ๋‘˜ ์‚ฌ์ด์— ๋ณด์•ˆ ๊ณ„์ธต์„ ์ œ๊ณต 
     
     
  • ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์„ ํ†ตํ•ด ์ž์ฒด ์ธํ”„๋ผ๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฐ„์†Œํ™”๋œ ๋ฐฉ์‹ 
     
@Controller
public class HelloController {
	@GetMapping("hello-string")
	@ResponseBody
	public String helloString(@RequestParam("name") String name) {
		return "hello " + name;
	}
}

 

- @ResponseBody` ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ทฐ ๋ฆฌ์กธ๋ฒ„(`viewResolver` )๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ

- ๋Œ€์‹ ์— HTTP์˜ BODY์— ๋ฌธ์ž ๋‚ด์šฉ์„ ์ง์ ‘ ๋ฐ˜ํ™˜(HTML BODY TAG๋ฅผ ๋งํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹˜)

 

์ด๋ ‡๊ฒŒ ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ ํ•  ์ˆ˜ ๋„ ์žˆใ„ท ใ…..
์ด๋Ÿฐ๊ฑธ json์ด๋ผ๊ณ  ํ•œ๋‹ค !

 

JSON์ด๋ž€?

 

- ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ/์ „์†ก ํ•  ๋•Œ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ํ˜•์‹ 

- ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๊ฐ„์˜ ํ†ต์‹ ์—์„œ ์ฃผ๋กœ ๋งŽ์ด ์‚ฌ์šฉ

- key, value ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง

 

++ `@ResponseBody` ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉด ๊ฐ์ฒด๊ฐ€ JSON์œผ๋กœ ๋ณ€ํ™˜๋จ

 

@ResponseBody ์‚ฌ์šฉ ์›๋ฆฌ

 

  • HTTP์˜ BODY์— ๋ฌธ์ž ๋‚ด์šฉ์„ ์ง์ ‘ ๋ฐ˜ํ™˜
  • viewResolver ๋Œ€์‹  HttpMessageConverter๊ฐ€ ๋™์ž‘
  • ๊ธฐ๋ณธ ๋ฌธ์ž ์ฒ˜๋ฆฌ :  StringHttpMessageConverter
  • ๊ธฐ๋ณธ ๊ฐ์ฒด ์ฒ˜๋ฆฌ : MappingJackson2HttpMessageConverter
  • ์—ฌ๋Ÿฌ HttpMessageConverter๊ฐ€ ๊ธฐ๋ณธ์œผ๋กœ ๋“ฑ๋ก๋˜์–ด ์žˆ์Œ

 

์—„.. ๋ญ”๊ฐ€ ๊ฐœ๋…๋งŒ ๋ณด๋ฉด ๋ณต์žกํ•œ๋ฐ ์ตœ๋Œ€ํ•œ ์ดํ•ดํ•˜๋ ค๊ณ  ๋…ธ๋ ฅ ํ•ด๋ณผ๊ฒŒ์š”...

์ œ ์ขŒ์šฐ๋ช…์ž…๋‹ˆ๋‹ค.

๋ฐ˜์‘ํ˜•