2022 01 24 - oneso123456789/2022 GitHub Wiki

Other

์ด์ œ๋ถ€ํ„ฐ http://localhost:8090/or8080ํฌํŠธ๋ฅผ ์‚ฌ์šฉ์‹œ ์ด๊ฑธ ํ”„๋กœ์ ํŠธ ๊ฒฝ๋กœ๋ผ๊ณ  ํ•˜๊ฒ ์Œ ๋„ˆ๋ฌด ๊ธธ์–ด ใ… ์˜คใ… 
๋…ธํŠธ๋ถ์—” ํ†ฐ์บฃ 9.0๋ฒ„์ „์ด 80ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งŒ ๋ฐํ†ฑ์—” 90ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•จ ์ด๊ฑธ ๋งž์ถฐ์•ผ ํ•˜๋Š”๋Œ€ ๋ณ€์ˆ˜๋ฅผ ์ข€ ๊ณ ๋ คํ•ด๋ด์•ผํ• ๊บผ ๊ฐ™์Œ

###JSP ํƒœ๊ทธ ๋ฉ”ํƒ€ ํƒœ๊ทธ์˜ ์†์„ฑ์—” http-equiv, name, content 3๊ฐ€์ง€์˜ ์†์„ฑ์ด ์žˆ์Œ

http-equiv="ํ•ญ๋ชฉ๋ช…"

์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์„œ๋ฒ„์— ๋ช…๋ น์„ ๋‚ด๋ฆฌ๋Š” ์†์„ฑ์œผ๋กœ name ์†์„ฑ์„ ๋Œ€์‹ ํ•˜์—ฌ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Œ,
HTML ๋ฌธ์„œ๊ฐ€ ํ—ค๋”์™€ํ•จ๊ป˜ ์›น ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์›น ๋ธŒ๋ผ์šฐ์ €์— ์ „์†ก๋˜์—ˆ์„ ๋•Œ์—๋งŒ ์˜๋ฏธ๋ฅผ ๊ฐ–์Œ

content="ํ…์ŠคํŠธ"

name์†์„ฑ์ด๋‚˜ http-equiv์†์„ฑ๊ณผ ๊ด€๋ จ๋œ ๊ฐ’(value)์„ ๋ช…์‹œํ•จ

name="์ •๋ณด ์ด๋ฆ„"

๋ช‡ ๊ฐœ์˜ meta ์ •๋ณด์˜ ์ด๋ฆ„์„ ์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด http-equiv์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ํ•จ

๊ฐ ์†์„ฑ์— ๋Œ€ํ•œ ๋” ๋งŽ์€ ์ •๋ณด๋Š” ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ•˜๋ฉด์„œ ์‚ฌ์šฉํ•˜์ž https://webclub.tistory.com/354

Model์ด๋ผ๋Š” ๋ฐ์ดํ„ฐ ์ „๋‹ฌ์ž

Controller์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ๋Š” ํŠน๋ณ„ํ•˜๊ฒŒ Model์ด๋ผ๋Š” ํƒ€์ž…์„ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Œ
Model ๊ฐ์ฒด๋Š” JSP์— ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ์ƒ์„ฑ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์•„์„œ ์ „๋‹ฌํ•˜๋Š” ์—ญํ™œ์„ ํ•˜๋Š” ์กด์žฌ
์ด๋ฅผ ์ด์šฉํ•ด์„œ JSP์™€ ๊ฐ™์€ ๋ทฐ(View)๋กœ ์ „๋‹ฌํ•ด์•ผ ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์•„์„œ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Œ
๋ฉ”์„œ๋“œ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ์— Model ํƒ€์ž…์ด ์ง€์ •๋œ ๊ฒฝ์šฐ์—๋Š” ์Šคํ”„๋ง์€ ํŠน๋ณ„ํ•˜๊ฒŒ Model ํƒ€์ž…์˜ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด์„œ ๋ฉ”์„œ๋“œ์— ์ฃผ์ž…ํ•จ

Model์€ ๋ชจ๋ธ 2 ๋ฐฉ์‹์—์„œ ์‚ฌ์šฉํ•˜๋Š” request.setAttribute()์™€ ์œ ์‚ฌํ•œ ์—ญํ™œ์„ ํ•จ
Servlet์„ ์ด์šฉํ•ด ๋ณธ ์ ์ด ์žˆ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฝ”๋“œ์— ์ต์ˆ™ํ• ๊ฒƒ์ž„

  request.setAttribute("serverTime", new java.util.Date());   
  RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/home.jsp");   
  dispatcher.forward(request, response);   

์œ„์˜ ์ฝ”๋“œ๋ฅผ ์Šคํ”„๋ง์—์„œ๋Š” Model์„ ์ด์šฉํ•ด์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฒ˜๋ฆฌํ•จ

public String home(Model model){
  model.addAttribute("serverTime", new java.util.Date());
  return "home";
}

๋ฉ”์„œ๋“œ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ Model ํƒ€์ž…์œผ๋กœ ์„ ์–ธํ•˜๊ฒŒ ๋˜๋ฉด ์ž๋™์œผ๋กœ ์Šคํ”„๋ง MVC์—์„œ Modelํƒ€์ž…์˜ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐœ๋ฐœ์ž์˜
์ž…์žฅ์—์„œ๋Š” ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์•„์ฃผ๋Š” ์ž‘์—…๋งŒ์œผ๋กœ ๋ชจ๋“  ์ž‘์—…์ด ์™„๋ฃŒ๋จ
Model์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ์ฃผ๋กœ Controller์— ์ „๋‹ฌ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ด์šฉํ•ด์„œ ์ถ”๊ฐ€์ ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€์•ผ ์ƒํ™ฉ์ž„
์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ๋“ค์„ ์ƒ๊ฐํ•ด ๋ณผ ์ˆ˜ ์žˆ์Œ

  • ๋ฆฌ์ŠคํŠธ ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ๋ฅผ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ „๋‹ฌ๋ฐ›๊ณ , ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ View๋กœ ์ „๋‹ฌํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ
  • ํŒŒ๋ผ๋ฏธํ„ฐ๋“ค์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ ํ›„ ๊ฒฐ๊ณผ๋ฅผ ์ „๋‹ฌํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ

@ModelAttribute ์–ด๋…ธํ…Œ์ด์…˜

์›นํŽ˜์ด์ง€์˜ ๊ตฌ์กฐ๋Š” Request์— ์ „๋‹ฌ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ํ•„์š”ํ•˜๋‹ค๋ฉด ์ถ”๊ฐ€์ ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•ด์„œ ํ™”๋ฉด์œผ๋กœ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘
Model์˜ ๊ฒฝ์šฐ๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ „๋‹ฌ๋œ ๋ฐ์ดํ„ฐ๋Š” ์กด์žฌํ•˜์ง€ ์•Š์ง€๋งŒ ํ™”๋ฉด์—์„œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•จ
EX:ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ(ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ „๋‹ฌ๋˜์ง€๋งŒ, ๊ฒฐ๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋ ค๋ฉด Model์— ๋‹ด์•„์„œ ์ „๋‹ฌํ•จ)

์Šคํ”„๋ง MVC์˜ Controller๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ Java Beans ๊ทœ์น™์— ๋งž๋Š” ๊ฐ์ฒด๋Š” ๋‹ค์‹œ ํ™”๋ฉด์œผ๋กœ ๊ฐ์ฒด๋ฅผ ์ „๋‹ฌํ•จ
์ข์€ ์˜๋ฏธ์—์„œ Java Beans์˜ ๊ทœ์น™์€ ๋‹จ์ˆœํžˆ ์ƒ์„ฑ์ž๊ฐ€ ์—†๊ฑฐ๋‚˜ ๋นˆ ์ƒ์„ฑ์ž๋ฅผ ๊ฐ€์ ธ์•ผ ํ•˜๋ฉฐ,
getter/setter๋ฅผ ๊ฐ€์ง„ ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๋“ค์„ ์˜๋ฏธํ•จ
**์•ž์˜ ์˜ˆ์ œ์—์„œ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์‚ฌ์šฉ๋œ SampleDTO์˜ ๊ฒฝ์šฐ๋Š” Java Bean์˜ ๊ทœ์น™์— ๋งž๊ธฐ ๋•Œ๋ฌธ์— ์ž๋™์œผ๋กœ ๋‹ค์‹œ ํ™”๋ฉด๊นŒ์ง€ ์ „๋‹ฌ๋จ ** ์ „๋‹ฌ๋  ๋•Œ์—๋Š” ํด๋ž˜์Šค๋ช…์˜ ์•ž๊ธ€์ž๋Š” ์†Œ๋ฌธ์ž๋กœ ์ฒ˜๋ฆฌ๋จ
๋ฐ˜๋ฉด์— ๊ธฐ๋ณธ ์ž๋ฃŒํ˜•์˜ ๊ฒฝ์šฐ๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์„ ์–ธํ•˜๋”๋ผ๋„ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™”๋ฉด๊นŒ์ง€ ์ „๋‹ฌ๋˜์ง€ ์•Š์Œ

SampleController์— ex04()๋ฉ”์†Œ๋“œ ์ถ”๊ฐ€

์œ„์—์„œ ์„ค๋ช…ํ•œ SampleDTO์™€ ๊ธฐ๋ณธ ์ž๋ฃŒํ˜•์˜ ์ „๋‹ฌ์ฐจ์ด๋ฅผ ํ™•์ธํ•˜๋ ค๊ณ  ์ž‘์„ฑํ•˜๋Š” ์˜ˆ์ œ ๊ฐ™์Œ
@GetMapping์˜ url์€ "/ex04"์ž„ log.info๋กœ dto์™€ page๋ฅผ ๋กœ๊ทธ์— ์ถœ๋ ฅํ•ด์ฃผ๊ณ 
๋‹ค๋ฅธ ์˜ˆ์ œ์™€ ๋‹ค๋ฅธ์ ์€ ๋ฆฌํ„ด ๋ฌธ์ž์—ด์ด "/sample/ex04"์ธ๋Œ€ ๋ณ„๋กœ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์€ ์•„๋‹Œ๊ฑฐ ๊ฐ™์Œ

ex04.jsp ํŒŒ์ผ ์ƒ์„ฑ

๊ฒฝ๋กœ๋Š” src/main/webapp/WEB-INF/view/sample/ex04.jsp
html ์„ ์–ธ ๋ถ€๋ถ„์„ 4.01๋ฒ„์ „์œผ๋กœ ๋ฐ”๊ฟ”์คŒ ๊ธฐ๋ณธ์ด html5์ง€๋งŒ ์ผ๋‹จ ์˜ˆ์ œ๊ฐ€ 4.01์ด๋‹ˆ ๋ฐ”๊ฟ”์ฃผ๊ณ  ๋ฌธ์ œ ์—†์„์‹œ ๋‹ค์‹œ ๋ณ€๊ฒฝํ•ด๋ณด๊ฒ ์Œ
๋‹ค์Œ์œผ๋ก  ๋ฅผ ์‚ฌ์šฉํ•ด์„œ utf-8๋กœ ๋ฌธ์ž ์ธ์ฝ”๋”ฉ์„ ํ•ด์คŒ
http-equiv์†์„ฑ์„ ์‚ฌ์šฉํ•˜๊ณ  ๊ฐ’์€ content-type๋ฅผ ์‚ฌ์šฉํ•ด ๋ฌธ์„œ์˜ ๋ฌธ์ž ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹์„๋ช…์‹œํ•ด์คŒ
๋‹ค์Œ์œผ๋กœ contentํƒœ๊ทธ๋กœ text/html๊ฐ’์„ ๋ช…์‹œํ•ด์ค€ํ›„ charset์†์„ฑ์œผ๋กœ ์ธ์ฝ”๋”ฉํ•  ๋ฌธ์ž์—ด์„ ๋ช…์‹œํ•ด์คŒ ์—ฌ๊ธฐ์„  UTF-8

<body>์— <h2>ํƒœ๊ทธ๋กœ DTO์™€ PAGE ํƒœ๊ทธ์™€ ๊ฐ’์„ ๋„˜๊ฒจ๋ฐ›๊ธฐ ์œ„ํ•ด ๊ฐ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋œ ๋ณ€์ˆ˜๋ฅผ ์‚ฝ์ž…ํ•ด์คŒ

์˜ค๋ฅ˜

ํฐ๊ฑด ์•„๋‹ˆ๊ณ  ํ”„๋กœ์ ํŠธ ๊ฒฝ๋กœ/sample/ex04๋งŒ ํ˜ธ์ถœํ•ด์„œ ๊ฐ’์„ ๋„˜๊ธฐ์ง€ ์•Š์•„์„œ http state 500 ์˜ค๋ฅ˜๊ฐ€ ๋œธ ํ•ด๊ฒฐ๋ฒ•์€ ์•Œ๋‹ค์‹ถ์ด ๊ฐ’์„ ๊ฐ™์ด ๋„˜๊ฒจ์ฃผ๋Š”๊ฒƒ์ž„ ์‚ฌ์‹ค dto๋Š” ์•ˆ๋„˜๊ฒจ๋„ ์ƒ๊ด€์—†์ง€๋งŒ
page๋Š” ๋ฉ”์†Œ๋“œ ์ƒ์—์„œ ๋งŒ๋“  ๋งค๊ฐœ๋ณ€์ˆ˜(parameter)๋ผ์„œ ๊ฐ’์„ ๋„ฃ์–ด์ฃผ์ง€ ์•Š์œผ๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋‚œ๊ฒƒ์ž„
๊ฒฐ๊ณผ๋Š” intํ˜•์œผ๋กœ ์„ ์–ธํ•œ page๋Š” ๊ฐ’์ด ์ „๋‹ฌ๋˜์ง€ ์•Š์Œ
์•„๋งˆ ์ด๊ฑธ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ @ModelAttribute์ธ๊ฑฐ ๊ฐ™์Œ

@ModelAttribute ์–ด๋…ธํ…Œ์ด์…˜ ํŠน์ง•

@ModelAttribute๋Š” ๊ฐ•์ œ๋กœ ์ „๋‹ฌ๋ฐ›์€ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ Model์— ๋‹ด์•„์„œ ์ „๋‹ฌํ•˜๋„๋ก ํ• ๋•Œ ํ•„์š”ํ•œ ์–ด๋…ธํ…Œ์ด์…˜์ž„
@ModelAttribute๊ฐ€ ๊ฑธ๋ฆฐ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ํƒ€์ž…์— ๊ด€๊ณ„์—†์ด ๋ฌด์กฐ๊ฑด Model์— ๋‹ด์•„์„œ ์ „๋‹ฌ๋จ
๋”ฐ๋ผ์„œ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ „๋‹ฌ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ํ™”๋ฉด์—์„œ ์‚ฌ์šฉํ• ๋•Œ ์œ ์šฉํ•จ

SampleController์— ex04๋ฉ”์†Œ๋“œ์— @ModelAttribute ์–ด๋…ธํ…Œ์ด์…˜ ์ถ”๊ฐ€

๊ธฐ์กด์˜ ์ฝ”๋“œ์—์„œ int ํƒ€์ž…์˜ page๊ฐ€ ํ™”๋ฉด๊นŒ์ง€ ์ „๋‹ฌ๋˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ์•ž์— @ModelAttribute("page) ๋ฉ”์„œ๋“œ๋ฅผ ๋ช…์‹œํ•ด๋ณด๊ฒ ์Œ

์ดํ›„ ์„œ๋ฒ„๋ฅผ ๋‹ค์‹œ ์žฌ์‹œ์ž‘ํ•˜๊ณ  ๊ฐ’์„ ๋„˜๊ฒจ๋ณด๋ฉด ์•„๊นŒ์™€๋Š” ๋‹ค๋ฅด๊ฒŒ page๊ฐ’๋„ ์ž˜ ๋„˜์–ด๊ฐ€์„œ ex04.jsp์— ์ถœ๋ ฅ๋˜๋Š”๊ฑธ ๋ณผ์ˆ˜์žˆ์Œ
๋งˆ์ง€๋ง‰์œผ๋กœ ๊ธฐ๋ณธ ์ž๋ฃŒํ˜•์— @ModelAttribute๋ฅผ ์ ์šฉํ• ๊ฒฝ์šฐ ๋ฐ˜๋“œ์‹œ @ModelAttribute("page")์™€ ๊ฐ™์ด ๊ฐ’์„ ์ง€์ •ํ•ด์ค˜์•ผํ•จ

โš ๏ธ **GitHub.com Fallback** โš ๏ธ