[ @Controller์™€ @RestController ]

 

Spring - @Controller์™€ @RestController ๊ทธ๋ฆฌ๊ณ  ์ƒํƒœ์ฝ”๋“œ

[ SpringMVC์— ๋Œ€ํ•˜์—ฌ ] Spring - Spring MVC๋ฅผ ์•Œ์•„์•ผ ์‹œ์ž‘์ด ๊ฐ€๋Šฅํ•˜๋‹ค.์ฒ˜์Œ์—” ๋Œ€์ถฉ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•ด๋ณด๋ คํ–ˆ์ง€๋งŒ,์ด๋Ÿด์ˆ˜๊ฐ€! ์•„๋Š” ๊ฒƒ์ด ๋ฏธ์•ฝํ•˜๋‹ˆ ์‹œ์ž‘ํ•  ์ˆ˜ ์—†์—ˆ๋‹ค.๊ทธ๋ž˜์„œ ๊ฐ€์žฅ ๊ธฐ์ดˆ์ ์œผ๋กœ ์•Œ์•„์•ผํ•˜๋Š”

post-this.tistory.com

 

 

 

 

[ Hello,World ์ถœ๋ ฅํ•˜๊ธฐ ]

 

Spring - [IntelliJ] Hello World ์ถœ๋ ฅํ•˜๊ธฐ

[ Spring MVC์— ๋Œ€ํ•˜์—ฌ ] Spring - Spring MVC๋ฅผ ์•Œ์•„์•ผ ์‹œ์ž‘์ด ๊ฐ€๋Šฅํ•˜๋‹ค.์ฒ˜์Œ์—” ๋Œ€์ถฉ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•ด๋ณด๋ คํ–ˆ์ง€๋งŒ,์ด๋Ÿด์ˆ˜๊ฐ€! ์•„๋Š” ๊ฒƒ์ด ๋ฏธ์•ฝํ•˜๋‹ˆ ์‹œ์ž‘ํ•  ์ˆ˜ ์—†์—ˆ๋‹ค.๊ทธ๋ž˜์„œ ๊ฐ€์žฅ ๊ธฐ์ดˆ์ ์œผ๋กœ ์•Œ์•„์•ผํ•˜๋Š”

post-this.tistory.com

 


 

 

Controller ์•ˆ์—
@GetMapping( )์ด๋ผ๋Š” ์กด์žฌ์˜€๋‹ค.


๊ณผ์—ฐ @GetMapping์€ ์–ด๋–ค ์—ญํ• ์„ ํ•˜๋Š” ๊ฒƒ์ผ๊นŒ?

 

 

 

 

๋ฐ์ดํ„ฐ์—๋Š” ๋‘๊ฐ€์ง€ ์ „์†ก๋ฐฉ์‹์ด ์กด์žฌํ•œ๋‹ค.

 

 

GET

  • URL(์ฃผ์†Œ)์— ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จ์‹œ์ผœ ๋ณด๋‚ธ๋‹ค.
  • ๋ฐ์ดํ„ฐ๋Š” ํ—ค๋”์— ํฌํ•จ๋˜์–ด์žˆ๋‹ค.
  • URL์— ๋ฐ์ดํ„ฐ๊ฐ€ ๋…ธ์ถœ๋˜์–ด ๋ณด์•ˆ์— ์ทจ์•ฝํ•˜๋‹ค.
  • ์บ์‹ฑ(๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๊นŒ์šด ๊ณณ์— ์ž„์‹œ๋กœ ์ €์žฅํ•œ ํ›„, ๋น ๋ฅด๊ฒŒ ๋ถˆ๋Ÿฌ์˜ค๋Š” ํ”„๋กœ์„ธ์Šค)ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ฃผ๋กœ ์กฐํšŒ, ๊ฒ€์ƒ‰ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

 

 

POST

  • URL(์ฃผ์†Œ)์— ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จ์‹œํ‚ค์ง€ ์•Š๋Š”๋‹ค.
  • ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”๋””์— ํฌํ•จํ•œ๋‹ค.
  • URL์— ๋ฐ์ดํ„ฐ๊ฐ€ ๋…ธ์ถœ๋˜์–ด์žˆ์ง€ ์•Š์•„ GET๋ฐฉ์‹ ๋ณด๋‹จ ๋ณด์•ˆ์ด ๋†’๋‹ค.
  • ์บ์‹ฑ((๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๊นŒ์šด ๊ณณ์— ์ž„์‹œ๋กœ ์ €์žฅํ•œ ํ›„, ๋น ๋ฅด๊ฒŒ ๋ถˆ๋Ÿฌ์˜ค๋Š” ํ”„๋กœ์„ธ์Šค)ํ•  ์ˆ˜ ์—†๋‹ค.
  • ์ฃผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„์— ์ €์žฅ, ์ˆ˜์ •ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

 

 


 

 

 

 

@GetMapping( )

  • Get ์š”์ฒญ์„ ํ•˜๋Š” API ์–ด๋…ธํ…Œ์ด์…˜์ด๋‹ค.
  • ๊ฒฝ๋กœ ๋งคํ•‘์— ๋”ฐ๋ผ ์–ด๋–ค ํŽ˜์ด์ง€๋ฅผ ๋ณด์—ฌ์ค„์ง€ ๊ฒฐ์ •ํ•œ๋‹ค.
    (๋งคํ•‘, ์—ฌ๋Ÿฌ ์š”์†Œ๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๊ณผ์ • ํ˜น์€ ๊ฒฐ๊ณผ๋ฌผ์„ ๋งํ•œ๋‹ค. ์˜ˆ์‹œ๋ฅผ ๋“ค์–ด๋ณด๋ฉด, ๊ฐ•๋‚จ ๋ง›์ง‘์„ ๊ฒ€์ƒ‰ํ–ˆ์„์‹œ ๊ฐ•๋‚จ์— ์žˆ๋Š” ๋ชจ๋“  ์‹๋‹น์ด ๊ฒ€์ƒ‰๋˜๋Š” ๊ฒฝ์šฐ๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค. ๋งค์นญ์€ ํ‚ค = 180cm ์ผ๋Œ€์ผ๋กœ ๋งž๋Š” ๊ฒฝ์šฐ)
  • ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
  • ๋ฐ˜ํ™˜๊ฐ’์€ ํ•˜๋‚˜์ง€๋งŒ ๊ฒฝ๋กœ๋Š” ๋‹ค์ค‘์œผ๋กœ ์„ค์ • ๊ฐ€๋Šฅํ•˜๋‹ค. 

 

 

 

์ฝ”๋“œ๋ฅผ ๋ณด๊ณ  ์ดํ•ดํ•ด๋ณด์ž.

 

ํ•ด๋‹น ์ฝ”๋“œ๋Š” ํŽ˜์ด์ง€ ๋ฐ˜ํ™˜์€ ์•„๋‹ˆ๊ณ  @RestController(์ง๋ ฌํ™”๋ฅผ ํ†ตํ•ด ๋ฌธ์ž์—ด์ด ํŽ˜์ด์ง€์— ๋ณด์ด๊ฒŒ ํ•ด์ฃผ๋Š”)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ฝ”๋“œ์˜ ์ผ๋ถ€์ด๋‹ค.

Controller ๋‚ด๋ถ€ ์ฝ”๋“œ

@GetMapping("")
    public String helloWorld() {
        return "Hello, World";
	}

 

  1. @GetMapping("")์œผ๋กœ ("")์— ๊ฒฝ๋กœ๊ฐ€ ์ ํ˜€์žˆ์ง€ ์•Š์•„ ๋ฃจํŠธ๋ฅผ(๋ฉ”์ธ ํŽ˜์ด์ง€) ์˜๋ฏธํ•œ๋‹ค.
  2. @GetMapping("") = ์‚ฌ์šฉ์ž๊ฐ€ ๋ฉ”์ธ ํŽ˜์ด์ง€์— ๋“ค์–ด๊ฐ€๋ฉด
  3. "Hello, World"๋ฅผ ๋ฐ˜ํ™˜ํ•ด๋ผ. (@RestController๋ฅผ ์ด์šฉํ•˜์—ฌ)

 

 

 

๊ทธ๋Ÿฌ๋ฉด ์ด๋ฒˆ์—” ํŽ˜์ด์ง€ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ฝ”๋“œ ์ผ๋ถ€๋ฅผ ์‚ดํŽด๋ณด์ž.

 

Controller ๋‚ด๋ถ€ ์ฝ”๋“œ

@GetMapping("")
public String homePage() {
    return "First";
}

 

  1. page๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ .html ํ˜น์€ .jsp๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž.
  2. ๋ฃจํŠธ ๊ฒฝ๋กœ("")๋กœ ๋“ค์–ด๊ฐ„๋‹ค๋ฉด
  3. First๋ผ๋Š” ํŽ˜์ด์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ผ๋Š” ๋ช…๋ น์ด DispatcherServlet์—๊ฒŒ ์ „๋‹ฌ๋œ๋‹ค.
  4. DispatcherServlet์€ ViewResolver๋กœ ์ „๋‹ฌํ•˜๊ณ 
  5. ViewResolver๊ฐ€ First๋ผ๋Š” ์ด๋ฆ„์„ ๊ฐ€์ง„ ํŽ˜์ด์ง€๋ฅผ ์ฐพ์•„ ์ตœ์ข…์ ์œผ๋กœ ํ™”๋ฉด์— ์ถœ๋ ฅ๋˜๋„๋ก ํ•œ๋‹ค.

 

 


 

 

 

 

@RequestMapping

  • ๋‹ค์–‘ํ•œ ์†์„ฑ์„ ์ง€์ •๊ฐ€๋Šฅํ•˜๋‹ค.
  • value, method, params, headers, consumes, produces์˜ ์†์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
  • ๊ทธ ์†์„ฑ์„ ์ด์šฉํ•˜์—ฌ Get, Post ๋“ฑ ๋‹ค์–‘ํ•œ ๋™์ž‘์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์†์„ฑ์ด ํ•˜๋‚˜๋ผ๋„ ๋‹ฌ๋ผ์•ผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ Handler๊ฐ€ ๋งคํ•‘ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์‰ฝ๊ฒŒ ์ƒ๊ฐํ•˜๋ฉด @RequestMapping์—์„œ ์กฐํšŒํ•˜๋Š” ๋ชฉ์ ์— ๋งž๊ฒŒ ํŽธ๋ฆฌํ•˜๋„๋ก ๋งŒ๋“ค์–ด๋‚ธ ๋ฒ„์ „์„ @GetMapping ๋“ฑ.. ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

 

 

์ด๊ฒƒ๋„ ์‰ฝ๊ฒŒ ์ฝ”๋“œ๋กœ ์‚ดํŽด๋ณด์ž.

@RequestMapping(value = "", method = RequestMethod.GET)
public String helloWorld() {
    return "Hello,Wrold!";
}

=

@GetMapping("")
    public String helloWorld() {
        return "Hello, World";
    }

 

@RequestMapping์€ method์— .GET์œผ๋กœ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉํ• ๊ฑด์ง€ ๋ช…์‹œํ•˜๊ณ  ์žˆ๋‹ค. 

 

๋” ์ž์„ธํ•œ ๊ฑด ๋‚˜์ค‘์— ์ž‘์„ฑํ•˜๊ฒ ๋‹ค.

 

 

 


 

 

 

 

๋ชฉ์ ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ์–ด๋…ธํ…Œ์ด์…˜

  • @PostMapping =  ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒŒ์‹œํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. (Post์˜ ํŠน์ง•์„ ๊ทธ๋Œ€๋กœ ๊ฐ€์ ธ์˜จ ๊ฒƒ)
  • @PutMapping = ์ˆ˜์ •ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ ์ „์ฒด๋ฅผ ๊ฐฑ์‹ ํ•˜๋‹ค.
  • @DeleteMapping = ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
  • @PatchMapping = ์ˆ˜์ •ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋ฉฐ, ์ˆ˜์ •๋œ ๋ถ€๋ถ„๋งŒ ๊ฐฑ์‹ ํ•œ๋‹ค.

 

@GetMapping์„ ํฌํ•จํ•˜์—ฌ ์œ„์˜ ์–ด๋…ธํ…Œ์ด์…˜๋“ค์€ @RequestMapping์—์„œ ๋ชฉ์ ์— ๋งž๊ฒŒ ๋” ํŽธ๋ฆฌํ•œ ์ฝ”๋“œ๋ฅผ ๋งŒ๋“  ๊ฒƒ์ด๋ผ ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. @RequestMapping์—์„œ ๋‹ค์–‘ํ•œ ์†์„ฑ์„ ์กฐํ•ฉํ•ด ์›ํ•˜๋Š” ์ž‘๋™๋ฐฉ์‹์„ ๋งŒ๋“ค์–ด์•ผํ–ˆ๋‹ค๋ฉด, ์œ„์˜ ์–ด๋…ธํ…Œ์ด์…˜์€ ์†์„ฑ์˜ ์กฐํ•ฉ์— ๋Œ€ํ•œ ๋ถ€๋‹ด์„ ์ค„์—ฌ์ค€ ๊ฒƒ์œผ๋กœ ๋ณด์ธ๋‹ค.


 

 

@GetMapping์— ๋Œ€ํ•ด ์•Œ์•„๋ดค์Šต๋‹ˆ๋‹ค.

๊ทธ๋ƒฅ ํ•œ ์ค„๋กœ ์ •๋ฆฌํ•˜๋ฉด ๋“ค์–ด์˜ค๋Š” ๊ฒฝ๋กœ์— ๋งž์ถฐ ๋ฐ˜ํ™˜๋  ํŽ˜์ด์ง€๋ฅผ ๊ณจ๋ผ์ฃผ๋Š” ์—ญํ• ์ธ ๊ฒƒ ๊ฐ™๋„ค์š”.
@RequestMapping์— ๋Œ€ํ•ด์„œ๋Š” ๋‹ค์Œ์— ์ •๋ฆฌํ•ด๋ณผ๊นŒ ํ•ฉ๋‹ˆ๋‹ค.

 

 

์•„๋ž˜์— ์ถœ์ฒ˜๋ฅผ ๋‚จ๊ฒจ๋‘๊ฒ ์Šต๋‹ˆ๋‹ค.
๋ธ”๋กœ๊ทธ์—” ์ œ๊ฐ€ ์ตœ๋Œ€ํ•œ ์ดํ•ดํ•œ ๋‚ด์šฉ๊นŒ์ง€๋งŒ ์ ๋Š”๊ฑฐ๋ผ
์ถœ์ฒ˜์— ๋“ค์–ด๊ฐ€์‹œ๋ฉด ๋” ๋งŽ์€ ๋‚ด์šฉ์ด ์žˆ์–ด ๊ณต๋ถ€ํ•˜์‹œ๋Š”๋ฐ ๋„์›€๋˜์‹ค๊ฒ๋‹ˆ๋‹ค.

 

๐Ÿชฝ

ํ‹€๋ฆฐ ๋‚ด์šฉ์ด ์žˆ๋‹ค๋ฉด ๋Œ“๊ธ€๋กœ ์•Œ๋ ค์ฃผ์„ธ์š”

 

 


 

 

 

- @GetMapping์˜ ๊ฐœ๋…

 

GetMapping ์–ด๋…ธํ…Œ์ด์…˜์œผ๋กœ ๋‹ค์ค‘๋งตํ•‘ํ•˜๊ธฐ

@GetMapping ์–ด๋…ธํ…Œ์ด์…˜์€ HTTP GET ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ๋งตํ•‘(@RequestMapping) ํ•˜๋Š” ์–ด๋…ธํ…Œ์ด์…˜์ด๋‹ค. ๋ฉ”์„œ๋“œ(url)์— ๋”ฐ๋ผ ์–ด๋–ค ํŽ˜์ด์ง€๋ฅผ ๋ณด์—ฌ์ค„์ง€ ๊ฒฐ์ •ํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ์ฐธ๊ณ ๋กœ ์Šคํ”„๋ง๋ถ€ํŠธ์—์„œ๋Š”

youngjinmo.github.io

 

 

 

- Get๊ณผ Post

 

Controller์˜ PostMapping, GetMapping ์— ๋Œ€ํ•ด ์ดํ•ดํ•˜๊ธฐ

ใ…‡ GET/POST ์ดํ•ดํ•˜๊ธฐ 1) GET ๋ž€? - URL์— ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จ์‹œ์ผœ ์š”์ฒญ - ๋ฐ์ดํ„ฐ๋ฅผ ํ—ค๋”์— ํฌํ•จํ•˜์—ฌ ์ „์†ก - URL์— ๋ฐ์ดํ„ฐ๊ฐ€ ๋…ธ์ถœ๋˜์–ด ๋ณด์•ˆ์— ์ทจ์•ฝ - ์บ์‹ฑํ•  ์ˆ˜ ์žˆ์Œ => ์ฃผ๋กœ ์กฐํšŒํ• ๋•Œ๋งŒ ์‚ฌ์šฉ 2) POST ๋ž€? - URL์—

tjdwns4537.tistory.com

 

 

 

- @RequestMapping ๋™์ž‘๋ฐฉ์‹

 

[Spring] @RequestMapping์ด๋ž€ ๊ทธ๋ฆฌ๊ณ  ๋™์ž‘ ๋ฐฉ์‹

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” Spring ๊ฐœ๋ฐœ ์‹œ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” @RequestMapping์˜ ๊ฐœ๋… ๋ฐ ๋™์ž‘ ๋ฐฉ์‹์— ๋Œ€ํ•ด ์ •๋ฆฌํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. [๋ชฉ์ฐจ] 1. @RequestMapping์ด๋ž€? 2. @RequestMapping ์ž‘์„ฑ ์˜ˆ์‹œ 3. @RequestMapping ๋™์ž‘ ๋ฐฉ์‹ 1. @RequestMapping

backendcode.tistory.com

 

 

 

- @RequestMapping ์˜ต์…˜

 

[Spring] @RequestMapping ์˜ต์…˜

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” @RequestMapping ์–ด๋…ธํ…Œ์ด์…˜์˜ ์˜ต์…˜๋“ค์— ๋Œ€ํ•ด ์ •๋ฆฌํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ตญ๋น„ ๊ณผ์ •์„ ๋“ค์œผ๋ฉฐ, ๊ธฐ์กด์— ์•Œ๊ณ  ์žˆ๋˜ @RequestMapping ์˜ต์…˜๋“ค๊ณผ ๋‹ค๋ฅธ ์˜ต์…˜๋“ค์ด ์กด์žฌํ•˜๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์–ด ๊ธฐ์กด์— ์•Œ๊ณ  ์žˆ

backendcode.tistory.com

 

 

 

- ๋งคํ•‘๊ณผ ๋งค์นญ

 

#002.๋งคํ•‘๊ณผ ๋งค์นญ์˜ ์ฐจ์ด, ์•Œ๊ณ  ๊ณ„์„ธ์š”?

์ฃผ๋‹ˆ์–ด ๊ธฐํš์ž ์‹œ์ ˆ, ๊ฐœ๋ฐœ์ž๋“ค๊ณผ ์ผํ•˜๋ฉด์„œ ๋งค์นญ(Matching)์ด๋ž€ ๋‹จ์–ด์™€ ๋งคํ•‘(Mapping)์ด๋ž€ ๋‹จ์–ด๋ฅผ ์ž์ฃผ ๋“ค์—ˆ์—ˆ๋Š”๋ฐ, ๋‹น์‹œ๋งŒ ํ•ด๋„ ์ด ๋‘ ๋‹จ์–ด์˜ ์ฐจ์ด๋ฅผ ์ž˜ ๋ชฐ๋ž์Šต๋‹ˆ๋‹ค. ๊ทธ๋ƒฅ ๊ฐœ๋ฐœ์ž ๋งˆ๋‹ค ์–ด๋–ค ๊ฐœ๋ฐœ์ž๋Š”

yamestyle.com

 

 

 

 

 

[ SpringMVC์— ๋Œ€ํ•˜์—ฌ ]

 

Spring - Spring MVC๋ฅผ ์•Œ์•„์•ผ ์‹œ์ž‘์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

์ฒ˜์Œ์—” ๋Œ€์ถฉ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•ด๋ณด๋ คํ–ˆ์ง€๋งŒ,์ด๋Ÿด์ˆ˜๊ฐ€! ์•„๋Š” ๊ฒƒ์ด ๋ฏธ์•ฝํ•˜๋‹ˆ ์‹œ์ž‘ํ•  ์ˆ˜ ์—†์—ˆ๋‹ค.๊ทธ๋ž˜์„œ ๊ฐ€์žฅ ๊ธฐ์ดˆ์ ์œผ๋กœ ์•Œ์•„์•ผํ•˜๋Š” ๊ฐœ๋…์„ ์ฐจ๊ทผ์ฐจ๊ทผ ์ •๋ฆฌํ•ด๋ณผ๊นŒ ํ•œ๋‹ค.๋‘๋‘ฅ, Spring MVC๋ž€?์•„๋งˆ ์ •๋ณด์ฒ˜

post-this.tistory.com

 

 

 

 

[ Hello World ์ถœ๋ ฅํ•˜๊ธฐ ]

 

Spring - [IntelliJ] Hello World ์ถœ๋ ฅํ•˜๊ธฐ

[ Spring MVC์— ๋Œ€ํ•˜์—ฌ ] Spring - Spring MVC๋ฅผ ์•Œ์•„์•ผ ์‹œ์ž‘์ด ๊ฐ€๋Šฅํ•˜๋‹ค.์ฒ˜์Œ์—” ๋Œ€์ถฉ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•ด๋ณด๋ คํ–ˆ์ง€๋งŒ,์ด๋Ÿด์ˆ˜๊ฐ€! ์•„๋Š” ๊ฒƒ์ด ๋ฏธ์•ฝํ•˜๋‹ˆ ์‹œ์ž‘ํ•  ์ˆ˜ ์—†์—ˆ๋‹ค.๊ทธ๋ž˜์„œ ๊ฐ€์žฅ ๊ธฐ์ดˆ์ ์œผ๋กœ ์•Œ์•„์•ผํ•˜๋Š”

post-this.tistory.com

 


 

 

Hello, World๋ฅผ ์ถœ๋ ฅํ–ˆ๋‹ค.
๊ทธ๋Ÿฐ๋ฐ @Controller๊ฐ€ ์•„๋‹Œ @RestController๋ฅผ ์‚ฌ์šฉํ•˜์˜€๋‹ค.

์™œ @RestController๋ฅผ ์‚ฌ์šฉํ•œ๊ฑธ๊นŒ?

 

 

 

 

@Controller

  • @Controller๋Š” ์ฃผ๋กœ view๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • ViewResolver๋ฅผ ํ†ตํ•ด view๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • AnnotationMethodHandlerAdapter ํ•ธ๋“ค๋Ÿฌ ์–ด๋Œ‘ํ„ฐ๊ฐ€ ์‚ฌ์šฉํ•œ๋‹ค.
  • ๋ฉ”์†Œ๋“œ ๋‹จ์œ„๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํšจ์œจ์ด ์ข‹๋‹ค.
  • @Controller๋Š” 200 OK(์„ฑ๊ณต์„ ์•Œ๋ฆฌ๋Š” ์ƒํƒœ ์ฝ”๋“œ)๋ฅผ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ณด๋‚ธ๋‹ค.

 

 

@RestController

  • @Controller์— @ResponseBody๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ๋‹ค.
  • Controller๋ฅผ ํ†ตํ•ด Json ํ˜•ํƒœ๋กœ ๋ฐ˜ํ™˜ํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉํ•œ๋‹ค.
  • HttpMessageConverter๋ฅผ ํ†ตํ•ด Json ํ˜•ํƒœ๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • ๋ฐ˜ํ™˜๋˜๋Š” ๊ฐ์ฒด๋Š” Json์œผ๋กœ Serialize(์ง๋ ฌํ™”)๋˜์–ด ๋ฐ˜ํ™˜๋œ๋‹ค.
  • @RestController๋Š” 200 OK(์„ฑ๊ณต์„ ์•Œ๋ฆฌ๋Š” ์ƒํƒœ ์ฝ”๋“œ)๋ฅผ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ณด๋‚ธ๋‹ค.

 

 

 

๊ฒฐ๋ก ์ ์œผ๋กœ @Controller๋Š” View๋ฅผ ๋ฐ˜ํ™˜ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๊ณ , @RestController๋Š” Hello, World ๊ฐ™์€ ์–ด๋–ค Json ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฑธ ์•Œ์•˜๋‹ค.

 

๊ทธ๋ ‡๋‹ค๋ฉด ์™œ @RestController๋Š” Json ๋ฐ˜ํ™˜์ด ๋˜๋Š”๊ฑธ๊นŒ?

 

 

 

 

์ง๋ ฌํ™”

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

 

 

 

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

 

 

 

 

 

Q. @Controller๋Š” Json ํ˜•ํƒœ๋กœ ๋ฐ˜ํ™˜์„ ๋ชปํ•˜๋‚˜?

 

A. ๊ทธ๊ฑด ์•„๋‹ˆ๋‹ค. ํ•  ์ˆ˜ ์žˆ๋‹ค. @ResponseBody๋ฅผ ๋ถ™์—ฌ์ฃผ๋ฉด Json ํ˜•ํƒœ๋กœ ๋ฐ˜ํ™˜์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๋ณธ๋ž˜ @Controller๋Š” ViewResolver๊ฐ€ ์ž‘๋™ํ•˜์—ฌ view๋ฅผ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค. ํ•˜์ง€๋งŒ @ResponseBody๋ฅผ ๋ถ™์ด๋ฉด @RestController์ฒ˜๋Ÿผ HttpMessageConverter๊ฐ€ ๊ฐœ์ž…ํ•˜๊ฒŒ ๋˜์–ด ๊ฐ์ฒด๋ฅผ ์ง๋ ฌํ™”ํ•˜์—ฌ ์ „๋‹ฌํ•˜๊ฒŒ ๋œ๋‹ค. ๋˜ํ•œ MessageConverter์—๋Š” ๋ฐ์ดํ„ฐ์˜ ์ข…๋ฅ˜(๋‹จ์ˆœ ๋ฌธ์ž์—ด์ธ์ง€, ๊ฐ์ฒด์ธ์ง€...)์— ๋”ฐ๋ผ ์„œ๋กœ ๋‹ค๋ฅธMessageConverter๊ฐ€ ์ž‘๋™ํ•˜๊ฒŒ ๋œ๋‹ค.

// @ResponseBody๋ฅผ ๋ถ™์ธ ์ฝ”๋“œ
@Controller
public class HelloController {

    @GetMapping("")
    @ResponseBody
    public String helloWorld() {
        return "Hello, World";
    }

}

 

<๊ฒฐ๊ณผ>

๐Ÿ‘

 

 

 


 

 

 

 

Http ์ƒํƒœ ์ฝ”๋“œ

  • ํŠน์ • HTTP ์š”์ฒญ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋˜์—ˆ๋Š”์ง€ ์•Œ๋ ค์ค€๋‹ค.
  • ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ์„ฑ๊ณต์‘๋‹ต์€ 200 OK๊ฐ€ ์žˆ๋‹ค.

 

- ๋” ๋‹ค์–‘ํ•œ ์ƒํƒœ ์ฝ”๋“œ

 

HTTP ์ƒํƒœ ์ฝ”๋“œ - HTTP | MDN

HTTP ์‘๋‹ต ์ƒํƒœ ์ฝ”๋“œ๋Š” ํŠน์ • HTTP ์š”์ฒญ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋˜์—ˆ๋Š”์ง€ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. ์‘๋‹ต์€ 5๊ฐœ์˜ ๊ทธ๋ฃน์œผ๋กœ ๋‚˜๋ˆ„์–ด์ง‘๋‹ˆ๋‹ค: ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋Š” ์‘๋‹ต, ์„ฑ๊ณต์ ์ธ ์‘๋‹ต, ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ, ํด๋ผ์ด์–ธํŠธ ์—๋Ÿฌ, ๊ทธ๋ฆฌ๊ณ 

developer.mozilla.org

 

 

 

 

Q. @RestController์˜ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฐ˜ํ™˜๋˜๋Š” ์„ฑ๊ณต ์ƒํƒœ ์ฝ”๋“œ๋Š” 200 OK๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋‹ค๋ฅธ ์ƒํƒœ ์ฝ”๋“œ๋กœ ๋ฐ”๊พธ๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ•˜๋‚˜?

A. ResponseEntity๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒํƒœ ์ฝ”๋“œ๋ฅผ ์ง์ ‘ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

1) ResponseEntity.ok()๋ฅผ ์‚ฌ์šฉํ•œ ์ฝ”๋“œ (200 OK)

// ์˜ˆ์ œ ์ถœ์ฒ˜ - mangkyu.tistory (๋ง๋‚˜๋‹ˆ ๊ฐœ๋ฐœ์ž๋‹˜)

  @GetMapping(value = "/users")
    public ResponseEntity<User> findUserWithResponseEntity(@RequestParam String userName){
        return ResponseEntity.ok(userService.findUser(userName));
    }

 

 

2) ResponseEntity.status(HttpStatus.CREATED)๋ฅผ ์‚ฌ์šฉํ•œ ์ฝ”๋“œ (201 Created)

@GetMapping(value = "/users")
public ResponseEntity<User> findUserWithCreatedResponse(@RequestParam String userName){
    return ResponseEntity.status(HttpStatus.CREATED).body(userService.findUser(userName));
}

 

์ฝ”๋“œ ์„ค๋ช… :

  1. @GetMapping โ–ป users ๊ฒฝ๋กœ๋กœ ๋“ค์–ด์˜จ ์š”์ฒญ์„ ํ•ด๊ฒฐํ•˜๊ณ  ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  2. ResponseEntity<User> โ–ป User(User ์•ˆ์— ์žˆ์„ ์–ด๋–ค ์ •๋ณด๋“ค, ์ด๋ฆ„+๋‚˜์ด+์ฃผ์†Œ์™€ ๊ฐ™์€...) ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š”๋ฐ, ์ƒํƒœ ์ฝ”๋“œ์™€ ํ•จ๊ป˜ ๋ฐ˜ํ™˜ํ•˜๋‹ค๋Š” ๋œป. (ResponseEntity๋กœ ๊ฐ์‹ธ์„œ ๋ฐ˜ํ™˜)
  3. @RequestParam  โ–ป ํŒŒ๋ผ๋ฏธํ„ฐ ์ด๋ฆ„์œผ๋กœ ๋ฐ”์ธ๋”ฉ(๊ตฌ์ฒด์ ์ธ ๊ฐ’์„ ํ• ๋‹นํ•˜๋Š” ๊ณผ์ •, ์ด๋ฆ„ = ๋ฏธ๋‚˜ + ๋‚˜์ด = 10์„ธ + ์ฃผ์†Œ = ์„œ์šธํŠน๋ณ„์‹œ์™€ ๊ฐ™์€...) ๊ทธ๋Ÿฐ๋ฐ userName์ด ์˜†์— ๋ถ™์—ˆ๋‹ค. ์ด ์˜๋ฏธ๋Š” ๊ตฌ์ฒด์ ์ธ ๊ฐ’์œผ๋กœ userName์ด ๋“ค์–ด์˜ค๋ฉด(์ฟผ๋ฆฌ ํŒŒ๋ผ๋ฏธํ„ฐ) userName ๋ณ€์ˆ˜์— ์ €์žฅํ•˜๊ฒ ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. (๋ฏธ๋‚˜๋ผ๋Š” ๊ฐ’์ด url๋กœ๋ถ€ํ„ฐ ๋ฐ›์•„์˜ค๋ฉด ๊ทธ ๊ฐ’์„ userName์— ์ €์žฅํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๊ทธ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ๋‹ค๋ฅธ ์ •๋ณด๋ฅผ ์ถ”๊ฐ€์ ์œผ๋กœ ๋„ฃ์„ ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ ๋‹ค๋Š” ์˜๋ฏธ์ธ ๊ฒƒ ๊ฐ™๋‹ค.)
  4. ResponseEntity.status  โ–ป ์‘๋‹ต์ƒํƒœ ์ฝ”๋“œ๋ฅผ ์„ค์ •ํ•˜๋„๋ก ํ•œ๋‹ค.
  5. HttpStatus.CREATED  โ–ป 201 Created๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์š”์ฒญ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜์—ˆ์œผ๋ฉฐ, ์ž์›์ด ์ƒ์„ฑ๋˜์—ˆ์Œ์„ ๋‚˜ํƒ€๋‚ด๋Š” ์„ฑ๊ณต ์ƒํƒœ ์‘๋‹ต ์ฝ”๋“œ์ด๋‹ค. 
  6. findUser(userName)  โ–ป userName์„ ์ฐพ์•„์„œ User ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ผ๋Š” ๊ฒƒ์ด๋‹ค.

 

๊ฒฐ๋ก  : users๋กœ ๋“ค์–ด์˜จ ์š”์ฒญ์„ ํ•ด๊ฒฐํ•œ ํ›„ ์„ฑ๊ณต์ ์ด๋ฉด 201 CREATED๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ ๋ฐ˜ํ™œํ•  ๋•Œ User ๋‚ด์šฉ๋„ ๊ฐ™์ด ๋‹ด์•„์„œ ๋ฐ˜ํ™˜ํ•ด๋ผ. 

 

 

 

 

 

 

Q. ๊ทธ๋ ‡๋‹ค๋ฉด @Controller๋Š” ์ƒํƒœ ์ฝ”๋“œ๋ฅผ ์–ด๋–ป๊ฒŒ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€?

 

A. @RestController์™€ ๊ฐ™์ด ResponseEntity.status๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ์ง€๋งŒ, HttpServletResponse ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•˜์—ฌ ์ƒํƒœ ์ฝ”๋“œ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด  HttpServletResponse response์™€ response.setStatus(HttpStatus.CREATED.value()); ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด 201 CREATED๋กœ ์ƒํƒœ๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฑธ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

    @GetMapping("/users")
    public String findUser(@RequestParam String userName, HttpServletResponse response) {        
        response.setStatus(HttpStatus.CREATED.value());
    }

 

 

 


 

 

์ด๋ฒˆ์—๋Š” @Controller์™€ @RestController์— ๋Œ€ํ•ด ์•Œ์•„๋ดค์Šต๋‹ˆ๋‹ค.

์ƒ๊ฐ๋ณด๋‹ค ์ •๋ฆฌํ•˜๋Š”๋ฐ ์˜ค๋ž˜๊ฑธ๋ ค์„œ ์กฐ๊ธˆ ๋‹นํ™ฉ์Šค๋Ÿฌ์› ๋„ค์š”...

 

๋‹ค ์ฒ˜์Œ๋ณด๋Š” ๋‚ด์šฉ๋“ค์ด๋ผ ํ•˜๋‚˜์˜ ๊ฐœ๋…์„ ์ดํ•ดํ•˜๋ ค๋ฉด ๋‹ค๋ฅธ ๊ฐœ๋…๋“ค๋„ ์ดํ•ดํ•ด์•ผํ–ˆ๊ณ 
์ƒํƒœ ์ฝ”๋“œ์— ๋Œ€ํ•œ ๋ถ€๋ถ„๋„ ๋ชฐ๋ž๋‹ค๊ฐ€ ์–ผ๋–จ๊ฒฐ์— ๊ฐ„๋‹จํžˆ ๋ฐฐ์šฐ๊ณ  ๋„˜์–ด๊ฐ€๊ฒŒ ๋˜๋Š” ์‹œ๊ฐ„์ด์—ˆ์Šต๋‹ˆ๋‹ค.

 

์•„๋ž˜์— ์ถœ์ฒ˜๋ฅผ ๋‚จ๊ฒจ๋‘๊ฒ ์Šต๋‹ˆ๋‹ค.
๋ธ”๋กœ๊ทธ์—” ์ œ๊ฐ€ ์ตœ๋Œ€ํ•œ ์ดํ•ดํ•œ ๋‚ด์šฉ๊นŒ์ง€๋งŒ ์ ๋Š”๊ฑฐ๋ผ
์ถœ์ฒ˜์— ๋“ค์–ด๊ฐ€์‹œ๋ฉด ๋” ๋งŽ์€ ๋‚ด์šฉ์ด ์žˆ์–ด ๊ณต๋ถ€ํ•˜์‹œ๋Š”๋ฐ ๋„์›€๋˜์‹ค๊ฒ๋‹ˆ๋‹ค.

 

๐Ÿชฝ

ํ‹€๋ฆฐ ๋‚ด์šฉ์ด ์žˆ๋‹ค๋ฉด ๋Œ“๊ธ€๋กœ ์•Œ๋ ค์ฃผ์„ธ์š”

 

 


 

 

- @Controller์™€ @RestController์˜ ์›๋ฆฌ์™€ ์ฐจ์ด ๊ทธ๋ฆฌ๊ณ  ์ƒํƒœ์ฝ”๋“œ

 

[Spring] @Controller์™€ @RestController ์ฐจ์ด

Spring์—์„œ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์ง€์ •ํ•ด์ฃผ๊ธฐ ์œ„ํ•œ ์–ด๋…ธํ…Œ์ด์…˜์€ @Controller์™€ @RestController๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ „ํ†ต์ ์ธ Spring MVC์˜ ์ปจํŠธ๋กค๋Ÿฌ์ธ @Controller์™€ Restuful ์›น์„œ๋น„์Šค์˜ ์ปจํŠธ๋กค๋Ÿฌ์ธ @RestController์˜ ์ฃผ์š”ํ•œ ์ฐจ์ด์ 

mangkyu.tistory.com

 

 

 

- ๋‹ค์–‘ํ•œ Controller์— ๋Œ€ํ•ด์„œ

 

[Spring] Controller์˜ ์ข…๋ฅ˜์™€ ๋‹ค์–‘ํ•œ ์ „๋žต

1. Controller์˜ ์ข…๋ฅ˜ 1) Servlet - javax.servlet.Servlet์„ ์ƒ์†ํ•œ ํด๋ž˜์Šค๋ฅผ ์ปจํŠธ๋กค๋Ÿฌ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. @Component("/home") // bean ์ด๋ฆ„์„ ์ด์šฉํ•œ ํ•ธ๋“ค๋Ÿฌ ๋งคํ•‘ ๋ฐฉ์‹ ์ด์šฉ public class HomeServlet extends HttpServlet { protected void

kimcoder.tistory.com

 

 

 

- ์ง๋ ฌํ™”์— ๋Œ€ํ•ด์„œ

 

์ง๋ ฌํ™” - ์œ„ํ‚ค๋ฐฑ๊ณผ, ์šฐ๋ฆฌ ๋ชจ๋‘์˜ ๋ฐฑ๊ณผ์‚ฌ์ „

์œ„ํ‚ค๋ฐฑ๊ณผ, ์šฐ๋ฆฌ ๋ชจ๋‘์˜ ๋ฐฑ๊ณผ์‚ฌ์ „. ์ง๋ ฌํ™”(็›ดๅˆ—ๅŒ–) ๋˜๋Š” ์‹œ๋ฆฌ์–ผ๋ผ์ด์ œ์ด์…˜(serialization)์€ ์ปดํ“จํ„ฐ ๊ณผํ•™์˜ ๋ฐ์ดํ„ฐ ์Šคํ† ๋ฆฌ์ง€ ๋ฌธ๋งฅ์—์„œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋‚˜ ์˜ค๋ธŒ์ ํŠธ ์ƒํƒœ๋ฅผ ๋™์ผํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ ํ™˜๊ฒฝ

ko.wikipedia.org

 

 

 

 

- @RequestParam์— ๋Œ€ํ•ด์„œ

 

๐ŸŒฑ @RequestParam ๊ฐœ๋… ์ •๋ฆฌ

@RequestParam ์Šคํ”„๋ง์ด ์ œ๊ณตํ•˜๋Š” ์–ด๋…ธํ…Œ์ด์…˜์œผ๋กœ, ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์š”์ฒญ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋งค์šฐ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค @ResponseBody @RequestMapping("/request-param") public String requestParamV2( @RequestParam("username") Strin

yummy0102.tistory.com

 

 

 

- HttpservletResponse์— ๋Œ€ํ•ด์„œ

 

์„œ๋ธ”๋ฆฟ(Servlet) - HttpservletResponse ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•, HTTP ์‘๋‹ต ๋ฐ์ดํ„ฐ ๋‹จ์ˆœ ํ…์ŠคํŠธ & HTML & API JSON

์ธํ”„๋Ÿฐ ๊น€์˜ํ•œ ๋‹˜์˜ ์Šคํ”„๋ง ๊ฐ•์˜์ด๋ฉฐ, ์„น์…˜ 2 - ์„œ๋ธ”๋ฆฟ(Servlet)๋ฅผ ์ •๋ฆฌํ•œ๋‹ค. ์‹ค์Šตํ˜• ๊ต์œก์œผ๋กœ ์ž์„ธํ•œ ์„ค๋ช…์ด ๊ถ๊ธˆํ•˜๋ฉด ์ˆ˜๊ฐ•์„ ๊ถŒ์žฅํ•œ๋‹ค. (์‹ค์Šต์€ ๋ชจ๋‘ ์˜›๋‚  ๋ฐฉ์‹์ด๋ฉฐ, ํ˜„์žฌ๋Š” ์ข€ ๋” ํŽธํ•˜๊ฒŒ ์‚ฌ์šฉํ•œ

loopstudy.tistory.com

 

 

 

- ๋‹ค์–‘ํ•œ ์ƒํƒœ ์ฝ”๋“œ

 

HTTP ์ƒํƒœ ์ฝ”๋“œ - HTTP | MDN

HTTP ์‘๋‹ต ์ƒํƒœ ์ฝ”๋“œ๋Š” ํŠน์ • HTTP ์š”์ฒญ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋˜์—ˆ๋Š”์ง€ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. ์‘๋‹ต์€ 5๊ฐœ์˜ ๊ทธ๋ฃน์œผ๋กœ ๋‚˜๋ˆ„์–ด์ง‘๋‹ˆ๋‹ค: ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋Š” ์‘๋‹ต, ์„ฑ๊ณต์ ์ธ ์‘๋‹ต, ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ, ํด๋ผ์ด์–ธํŠธ ์—๋Ÿฌ, ๊ทธ๋ฆฌ๊ณ 

developer.mozilla.org

 

 

 

- ์Šคํ”„๋ง์‚ฌ์ „

 

ResponseBody (Spring Framework 6.1.14 API)

Annotation that indicates a method return value should be bound to the web response body. Supported for annotated handler methods. As of version 4.0 this annotation can also be added on the type level in which case it is inherited and does not need to be a

docs.spring.io

 

 

 

 

- @ResponseStatus์— ๋Œ€ํ•˜์—ฌ

 

Spring์—์„œ ํŠน์ • HTTP ์‘๋‹ต ์ƒํƒœ ๋ฐ˜ํ™˜ํ•˜๊ธฐ

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

devel-repository.tistory.com

 

 

 

์ฒ˜์Œ์—” ๋Œ€์ถฉ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•ด๋ณด๋ คํ–ˆ์ง€๋งŒ,
์ด๋Ÿด์ˆ˜๊ฐ€! ์•„๋Š” ๊ฒƒ์ด ๋ฏธ์•ฝํ•˜๋‹ˆ ์‹œ์ž‘ํ•  ์ˆ˜ ์—†์—ˆ๋‹ค.

๊ทธ๋ž˜์„œ ๊ฐ€์žฅ ๊ธฐ์ดˆ์ ์œผ๋กœ ์•Œ์•„์•ผํ•˜๋Š” ๊ฐœ๋…์„ ์ฐจ๊ทผ์ฐจ๊ทผ ์ •๋ฆฌํ•ด๋ณผ๊นŒ ํ•œ๋‹ค.

๋‘๋‘ฅ, Spring MVC๋ž€?

์•„๋งˆ ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ๋ฅผ ์ค€๋น„ํ•˜๊ฑฐ๋‚˜, IT๊ด€๋ จ ์ „๊ณต์ž๋ผ๋ฉด ํ•œ ๋ฒˆ์€ ๋“ค์–ด๋ดค์„ MVC.
์ด๋ฒˆ ๊ธฐํšŒ์— ์ž์„ธํžˆ ์•Œ์•„๋ณด์ž.

 

 

 

 

๐Ÿชฝ

"ํ‹€๋ฆฐ ๋‚ด์šฉ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค."

 

 

 


 

[ Hello World๋ฅผ ์ถœ๋ ฅํ•˜๊ธฐ ]

 

Spring - [IntelliJ] Hello Word ์ถœ๋ ฅํ•˜๊ธฐ

์•„์ฃผ ๊ฐ„๋‹จํ•œ ์‹ค์Šต์„ ํ•ด๋ณผ๊นŒํ•œ๋‹ค.  Hello, World ์ถœ๋ ฅํ•˜๊ธฐ๐ŸŽƒ1. Spring initializr ์ƒ์„ฑํ•˜๊ธฐ. https://start.spring.io/  โ–ก  Dependencies - SpringWeb ์„ ํƒํ•˜๊ธฐ.โ–ก  Java ํ•ด๋‹นํ•˜๋Š” ๋ฒ„์ „์— ์„ ํƒํ•˜๊ธฐ.    โœ”๏ธŽ  [Mac ๊ธฐ

post-this.tistory.com

 


 

 

 

1. MVC

  • Model - View - Controller๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ๋‹ค.
  • Model, View, Controller๋Š” ๋…๋ฆฝ์ ์œผ๋กœ ์›€์ง์ธ๋‹ค. (๊ฐ์ž ๋งก์€ ๋ถ„์•ผ๋งŒ ํ•ด๊ฒฐํ•œ๋‹ค)
  • MVC ์‚ฌ์šฉ์‹œ, ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถœ ์ˆ˜ ์žˆ๋‹ค.
  • MVC ์‚ฌ์šฉ์‹œ, ์ค‘๋ณต์ฝ”๋“œ ์ œ๊ฑฐ๊ฐ€ ์‰ฝ๊ณ  ์œ ์ง€๋ณด์ˆ˜์— ์ข‹๋‹ค.
  • MVC ์‚ฌ์šฉ์‹œ, ํ™•์žฅ์„ฑ๊ณผ ์œ ์—ฐ์„ฑ์ด ์ฆ๊ฐ€ํ•œ๋‹ค.

 

(1)  View

  • ์‚ฌ์šฉ์ž๊ฐ€ ๋ณด๋Š” ํ™”๋ฉด์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.
  • ์˜ˆ์‹œ๋ฅผ ๋“ค์–ด๋ณด์ž, ์‚ฌ์šฉ์ž๊ฐ€ ์›น ๊ฒ€์ƒ‰์ฐฝ์— [apple]์ด๋ผ๊ณ  ๊ฒ€์ƒ‰ํ•˜๊ธธ ์š”์ฒญํ–ˆ๋‹ค.

 

(2)  Controller

  • View์™€ Model์„ ์—ฐ๊ฒฐํ•ด์ฃผ๋Š” ์ค‘๊ฐ„์—์„œ ์ƒํ˜ธ์ž‘์šฉ ์—ญํ• ์„ ํ•ด์ค€๋‹ค.
  • ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์„ Controller๊ฐ€ ๋ฐ›์•˜๋‹ค. (DispatcherServlet๋ผ๋Š” Front Controller๊ฐ€ ๋ฐ›์Œ)
  • Controller๋Š” ์ด ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด [apple]์ด๋ž€ ๋‹จ์–ด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์„ Model์—๊ฒŒ ์ „๋‹ฌํ•œ๋‹ค.

 

(3)  Model

  • ๋ฐ์ดํ„ฐ์™€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๋‹ด๋‹นํ•œ๋‹ค
  • ์ด๋•Œ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์‘๋‹ต์œผ๋กœ ๋Œ๋ ค์ฃผ๋Š” ์ž‘์—…์˜ ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ Model์ด๋ผ ํ•œ๋‹ค.
  • Controller์—๊ฒŒ ์˜จ ์š”์ฒญ์„ ์ž˜ ๋ฐ›์•˜๋‹ค.
  • Model์€ [apple]์ด๋ž€ ๋‹จ์–ด ๊ด€๋ จ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์•„ Controller์—๊ฒŒ ๋‹ค์‹œ ์ „๋‹ฌํ•œ๋‹ค.
  • Controller๋Š” ๋ฐ›์€ ์ •๋ณด๋ฅผ ๋‹ค์‹œ View์—๊ฒŒ ๋ณด๋‚ด๊ณ  View๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์—ฌ์ค€๋‹ค.

 

 


 

 

2. Spring MVC ๊ตฌ์„ฑ์š”์†Œ์™€ ์ˆœ์„œ

์ถœ์ฒ˜: https://www.geeksforgeeks.org/spring-mvc-framework/

 

1๋ฒˆ

  • ์‚ฌ์šฉ์ž์—๊ฒŒ ์š”์ฒญ(Requeest)์ด ๋“ค์–ด์™”๋‹ค.
  • ์š”์ฒญ์€ ํŠน์ • URL๊ณผ ํ•จ๊ป˜ ๋“ค์–ด์˜ค๊ฒŒ ๋˜๋Š”๋ฐ GET, POST ๋“ฑ HTTP ๋ฉ”์„œ๋“œ๊ฐ€ ํ•จ๊ป˜ ์ „๋‹ฌ๋œ๋‹ค.

 

 

2๋ฒˆ•3๋ฒˆ

  • ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด Front Controller์ธ DispatcherServlet์ด ์š”์ฒญ์„ ๋ฐ›๊ฒŒ ๋œ๋‹ค.
  • DispatcherServlet์€ ์ ์ ˆํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•  Controller๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด HandlerMapping์„ ์ด์šฉํ•œ๋‹ค.
  • ๊ทธ๋ ‡๊ฒŒ HandlerMapping์€ ๋“ค์–ด์˜จ ์š”์ฒญ ๊ฒฝ๋กœ์™€ HTTP ๋ฉ”์„œ๋“œ์— ๋”ฐ๋ผ ์ ์ ˆํ•œ Controller๋ฅผ ์ •ํ•ด ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

 

์ถœ์ฒ˜: https://www.geeksforgeeks.org/spring-mvc-framework/

 

 

 

4๋ฒˆ•5๋ฒˆ

  • HadlerMapping์ด ์ฐพ์€ Controller๋Š” ์š”์ฒญ์„ ์‹ค์ œ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.
  • Controller๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง(์˜ˆ์‹œ๋กœ ํšŒ์›๊ฐ€์ž…์„ ์ฒ˜๋ฆฌํ•˜๊ฑฐ๋‚˜ ์‡ผํ•‘๋ชฐ์—์„œ ๊ฒฐ์ œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ)์„ ์‹คํ–‰ํ•˜๊ณ  ๊ทธ์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ ์ƒ์„ฑ ํ˜น์€ DB์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜จ๋‹ค.
  • ์‰ฝ๊ฒŒ ๋งํ•ด View๋กœ ์ „๋‹ฌํ•  ๋ฐ์ดํ„ฐ๋ฅผ ์ค€๋น„ํ•˜๋Š” ๊ฒƒ์ด๊ณ , Model And View๊ฐ€ ๊ฒฐ๊ณผ์— ๋‹ด๊ฒจ DispatcherServlet์— ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

 

6๋ฒˆ•7๋ฒˆ

  • ๋ฐ˜ํ™˜๋œ ์ •๋ณด๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ ์ ˆํ•˜๊ฒŒ ๋ณด์—ฌ์ค„ View๋ฅผ ๊ณ ๋ฅผ ๊ฒƒ์ด๋‹ค.
  • View Resolver๋Š” Controller๊ฐ€ ๋ฐ˜ํ™˜ํ•œ View ์ด๋ฆ„์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์‹ค์ œ View ํŒŒ์ผ์„ ์ „๋‹ฌํ•œ๋‹ค.

 

 

์ถœ์ฒ˜: https://www.geeksforgeeks.org/spring-mvc-framework/

 

 

 

8๋ฒˆ

  • View์—์„œ View Rendering์ด ์ผ์–ด๋‚œ๋‹ค.
  • View Rendering์€ ํ”„๋ ˆ์  ํ…Œ์ด์…˜ ๋กœ์ง์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค.
  • ํ”„๋ ˆ์  ํ…Œ์ด์…˜ ๋กœ์ง์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์›นํŽ˜์ด์ง€๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ค€๋‹ค.

 

 

10๋ฒˆ

  • View์—์„œ Rendering๋œ ๊ฒฐ๊ณผ๋Š” DispatcherServlet์— ๋ฐ˜ํ™˜๋œ๋‹ค.
  • ์‚ฌ์šฉ์ž๋Š” ์ž์‹ ์ด ์š”์ฒญํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›๊ฒŒ๋œ๋‹ค.

 

 


 

 

3. Spring MVC ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

 

(1) DispathcerServlet

  • ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‹ค๋ฅธ MVC๋Š” DispatcherServlet๊ฐ€ ์—†๋‹ค.
  • ๊ทธ๋ ‡๊ธฐ์— Controller๊ฐ€ ์š”์ฒญ์„ ๋ฐ›๊ณ , ์ง์ ‘์ฒ˜๋ฆฌ๋„ ํ•œ๋‹ค.
  • DispatcherServlet์ด ์žˆ๊ธฐ์—” ์š”์ฒญ ์ฒ˜๋ฆฌ๋ฅผ ๋” ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค.

 

 

(2) @๋กœ ์‹œ์ž‘ํ•˜๋Š” ์–ด๋…ธํ…Œ์ด์…˜์˜ ์œ ๋ฌด

  • ์–ด๋…ธํ…Œ์ด์…˜์˜ ์‚ฌ์šฉ์œผ๋กœ ์ธํ•ด ์ค‘๋ณต์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์ฝ”๋“œ๋ฅผ(ํ˜น์€ ๋น„์Šทํ•œ ์ฝ”๋“œ) ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.
  •  ๊ทธ๋กœ์ธํ•ด ๊ฐ€๋…์„ฑ์ด ํ–ฅ์ƒ๋œ๋‹ค.

 

 

(3) Ioc(์ œ์–ด์˜ ์—ญ์ „)์™€ DI(์˜์กด์„ฑ์ฃผ์ž…)

  • ๊ฐ์ฒด๊ฐ„์˜ ์˜์กด์„ฑ์„ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์ž๋™์œผ๋กœ ์ฃผ์ž…ํ•˜๊ณ  ๊ด€๋ฆฌํ•œ๋‹ค.

 

 


 

 

 

4. SpringMVC๋Š” ์–ด๋–ค์‹์œผ๋กœ ๊ตฌ์„ฑ์„ ํ•ด์•ผํ•˜๋Š”๊ฐ€?

์‡ผํ•‘๋ชฐ์—์„œ ์ฃผ๋ฌธ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ๊ฐ„๋žตํ•˜๊ฒŒ ์˜ˆ๋กœ ๋“ค์–ด๋ณด์ž.

 

 

(1) Controller

์ฃผ๋ฌธ์ด ๋“ค์–ด์™”์„ ๋•Œ ์ฃผ๋ฌธ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  Controller๋ฅผ ๋งŒ๋“ค์–ด์•ผํ•œ๋‹ค.

@RestController  ํ˜น์€ Controller
@RequestMapping("/์š”์ฒญ์ด ๋“ค์–ด์˜จ ๊ฒฝ๋กœ")
public class OrderController {

 ์ฃผ๋ฌธ ์š”์ฒญ์„ ์ง์ ‘ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š๊ณ , ํ•ด๋‹นํ•˜๋Š” ์„œ๋น„์Šค ๊ณ„์ธต์œผ๋กœ ๋„˜๊ธด๋‹ค.

 ์ฃผ๋ฌธ ์ฒ˜๋ฆฌ ์„ฑ๊ณต์‹œ ์–ด๋–ป๊ฒŒ ๋ฐ˜ํ™˜ํ• ์ง€
 ์ƒํƒœ ์ฝ”๋“œ์™€ ๋ฐ์ดํ„ฐ๋ฅผ ํ•จ๊ป˜ ๋ณด๋‚ด๋Š” ๋“ฑ...

}

 

 

 

(2) Service

์ฃผ๋ฌธ ์š”์ฒญ์„ ๋ฐ›์•„ ์ฃผ๋ฌธ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๋งŒ๋“ค์–ด์•ผํ•œ๋‹ค.

@Service
public class OrderServiceImpl implements OrderService {

 ์ฃผ๋ฌธ๋‚ด์—ญ์„ ์ง์ ‘ ์ฒ˜๋ฆฌ

 ์˜ˆ์‹œ๋กœ, ์ฃผ๋ฌธ์ด ๋“ค์–ด์˜จ ์ƒํ’ˆ์ด ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ฑฐ๋‚˜
 ์ƒ์„ฑ๋œ ์ฃผ๋ฌธ์„ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์— ์ €์žฅํ•˜๊ฑฐ๋‚˜ ๋“ฑ...
 ๊ฒฐ๊ณผ๋ฅผ ๋ˆ„๊ตฌ์—๊ฒŒ ๋ฐ˜ํ™˜ํ• ์ง€๊นŒ์ง€ ์ •ํ•˜๋Š” ๊ณณ

}

 

 

 

(3) Repository

์ฃผ๋ฌธ ๋‚ด์—ญ์„  ์ €์žฅํ•  ์ €์žฅ์†Œ

public interface OrderRepository <Order, Long> {

 Order๊ณผ ์—ฐ๊ฒฐ๋œ ์ €์žฅ์†Œ๋กœ ์ž‘์—… ์ˆ˜ํ–‰

}

 

 

 

(4) Entity

์ฃผ๋ฌธ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋กœ ์ฃผ๋ฌธ์ด ๋“ค์–ด์˜ค๋ฉด ๊ฐ์ฒด๋ฅผ ์ดˆ๊ธฐํ™”

@Entity
public class Order {

 ์ฃผ๋ฌธ ๊ณ ์œ ์˜ ID๋ฅผ ๋งŒ๋“ค๊ฑฐ๋‚˜
 ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ฃผ๋ฌธ์„ ํ•˜๋‚˜์˜ ์ƒํ’ˆ์œผ๋กœ ์—ฐ๊ฒฐ๋˜๋„๋ก ํ•˜๊ฑฐ๋‚˜
 ์ƒ์„ฑ์ž๋ฅผ ์ด์šฉํ•˜์—ฌ ์ฃผ๋ฌธ์„ ์ดˆ๊ธฐํ™”ํ•ด์ฃผ๋Š” ๊ฒƒ ๋“ฑ...
   
}

 

 

 

(5) DTO
์š”์ฒญ๊ณผ ์‘๋‹ต๋งŒ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋งŒ ๋‹ด๋‹น, ๋ฐ์ดํ„ฐ ์ „๋‹ฌ ๊ฐ์ฒด

public class OrderRequest {

 ์ฃผ๋ฌธ์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›๋Š” ๊ฐ์ฒด
 ์ƒํ’ˆ ID, ์ˆ˜๋Ÿ‰...

}

public class OrderResponse {

 ์ฃผ๋ฌธ ์™„๋ฃŒํ•œ ๋ฐ์ดํ„ฐ ๋ฐ˜ํ™˜ ๊ฐ์ฒด
 ์ฃผ๋ฌธ ID, ์ด ๊ฐ€๊ฒฉ...

}

 

 

 


 

์‚ฌ์‹ค ์Šคํ”„๋ง์˜ ํŒจํ„ด์—๋Š” MVC๋งŒ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ๋” ๋‹ค์–‘ํ•œ ๋””์ž์ธ ํŒจํ„ด์ด ์กด์žฌํ•˜์ง€๋งŒ, ๋ชจ๋ธ - ๋ทฐ - ์ปจํŠธ๋กค๋Ÿฌ๋กœ ์šฉ๋„๋ฅผ ๋‚˜๋ˆ„๊ณ  ์„œ๋กœ์˜ ์—ญํ• ์—” ์นจ๋ฒ”ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ํฐ ์žฅ์ ์ด ๋˜์–ด MVC๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

๊ณต๋ถ€ํ•˜๋ฉด์„œ ์ดํ•ด๊ฐ€ ์•ˆ๋˜๋Š” ๋‚ด์šฉ์ด ๋งŽ์•˜๋‹ค.

์ดํ•ดํ•œ ๋‚ด์šฉ๊นŒ์ง€๋งŒ ๋ธ”๋กœ๊ทธ์— ์ ์–ด๋ณด์•˜๋‹ค.

์•„๋ž˜ ์ ์–ด๋‘” ์ถœ์ฒ˜์— ๋“ค์–ด๊ฐ€ ํ•œ ๋ฒˆ์”ฉ ์ฝ์–ด๋ณธ๋‹ค๋ฉด ๋” ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.

 


 

- spring ์ถœ์ฒ˜

 

์šฐ๋ฆฌ๋Š” ์™œ ์Šคํ”„๋ง์„ ์‚ฌ์šฉํ•˜๋Š”๊ฐ€? - Java spring์˜ ํŠน์ง•

์•ž์„  ๊ธ€์—์„œ ์™œ ์šฐ๋ฆฌ๊ฐ€ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ง€ ์•Œ์•„๋ณด์•˜๋‹ค. ์งง๊ฒŒ ์งš๊ณ  ๋„˜์–ด๊ฐ€์ž๋ณด์ž. ๊ฒฐ๊ตญ ๊ฐœ๋ฐœ์ž ์ž…์žฅ์—์„œ๋Š” ๊ฒ€์ฆ๋œ ์ฝ”๋“œ๋ฅผ ์ด์šฉํ•ด์„œ ์ตœ์†Œํ•œ์˜ ๋ถ€๋ถ„๋งŒ ๋ฐ”๊พธ์–ด ๋น ๋ฅด๊ฒŒ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•ด์„œ

joychae.tistory.com

 

 

- Spring MVC ์ถœ์ฒ˜

 

A Comprehensive Guide To Spring MVC | SevenMentor Training

Explore A Comprehensive Guide to Spring MVC, covering key concepts, architecture, and components for building robust, scalable Java web applications.

www.sevenmentor.com

 

 

- Spring MVC์˜ ์žฅ์  ์ถœ์ฒ˜

 

Spring vs Spring MVC vs Spring Boot: A Detailed Comparison for Java Developers

In the ever-evolving landscape of Java development, the Spring Framework has emerged as a powerhouse,...

dev.to

 

 

 

- Spring MVC ์ถœ์ฒ˜

 

[Spring] Web MVC ํŒจํ„ด์˜ ํ๋ฆ„๊ณผ Controller, View, Model ๊ตฌํ˜„๋ฒ•

์Šคํ”„๋ง MVC ํŒจํ„ด์˜ ํ๋ฆ„, ํŠน์ง•, ๊ตฌ์„ฑ์š”์†Œ, ์‹คํ–‰ ์ˆœ์„œ. Controller, View, Model ๊ตฌํ˜„๋ฒ•

velog.io

 

 

 

- Spring MVC ์ถœ์ฒ˜

 

[Spring MVC] ์Šคํ”„๋ง MVC๋ž€ ๋ฌด์—‡์ธ๊ฐ€? - ์Šคํ”„๋ง MVC ๊ตฌ์กฐ ์ดํ•ด

๋ณธ ๋‚ด์šฉ์€ ์˜จ๋ผ์ธ ๊ฐ•์˜ ์‚ฌ์ดํŠธ ์ธํ”„๋Ÿฐ์˜ ๊น€์˜ํ•œ ๋‹˜์˜ ๊ฐ•์˜ ๋‚ด์šฉ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. '์Šคํ”„๋ง MVC 1ํŽธ - ๋ฐฑ์—”๋“œ ์›น ๊ฐœ๋ฐœ ํ•ต์‹ฌ ๊ธฐ์ˆ ' ์Šคํ”„๋ง MVC 1ํŽธ - ๋ฐฑ์—”๋“œ ์›น ๊ฐœ๋ฐœ ํ•ต์‹ฌ ๊ธฐ์ˆ  - ์ธํ”„๋Ÿฐ | ๊ฐ•์˜ ์›น

ittrue.tistory.com

 

 

- Mapping ์ถœ์ฒ˜

 

[JAVA] Web์—์„œ์˜ ๋งตํ•‘(Mapping)์ด๋ž€??

์˜ค๋Š˜์€ Mapping์— ๋Œ€ํ•ด์„œ ๊ฐ„๋‹จํžˆ ์•Œ์•„๋ณด๊ฒ ๋‹ค. ๋งตํ•‘์ด๋ž€? ํ•ด๋‹น ๊ฐ’์ด ๋‹ค๋ฅธ ๊ฐ’์„ ๊ฐ€๋ฅดํ‚ค๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. Ex) http~/action.do ๋ผ๋Š” ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ• ๋•Œ ์ด url์ด ๊ทธ๋Œ€๋กœ ์œ ์ถœ๋˜๋ฉด ๋ณด์•ˆ์ƒ ์ทจ์•ฝํ• 

wjdvnadldzm.tistory.com

 

+ Recent posts