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

๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ

(71)
๋ฌธ์„œ ์ถœ๋ ฅ ๋ฐฉ๋ฒ• 4๊ฐ€์ง€, @ResponseBody ResourceViewResolver๋ฅผ ์ด์šฉํ•œ ๋ฐฉ๋ฒ•, TilesViewResolver๋ฅผ ์ด์šฉํ•œ ๋ฐฉ๋ฒ•์€ ์•ž์„œ ์‚ดํŽด ๋ณด์•˜์œผ๋‹ˆ ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ์„œ๋ธ”๋ฆฟ ๊ฐ์ฒด๋ฅผ ์–ป์–ด์„œ ์ถœ๋ ฅํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ @ResponseBody ์–ด๋…ธํ…Œ์ด์…˜์„ ์ด์šฉํ•ด ์ถœ๋ ฅํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค. * ์„œ๋ธ”๋ฆฟ ๊ฐ์ฒด(HttpServletResponse)๋ฅผ ์ด์šฉํ•˜์—ฌ ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ์ง์ ‘ ๋ฌธ์ž์—ด ์ถœ๋ ฅํ•˜๊ธฐ HttpServletResponse ๊ฐ์ฒด์˜ getWriter() ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๋ฌธ์„œ๋ฅผ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค. index ํ•จ์ˆ˜์—์„œ void๋ฅผ ๋ฆฌํ„ดํ•˜๋”๋ผ๋„(๋ฆฌํ„ด๊ฐ’์ด ์—†์Œ) ๋ฉ”์†Œ๋“œ ์•ˆ์—์„œ ์ง์ ‘ ์ถœ๋ ฅํ•˜๋ฏ€๋กœ ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰ ์‹œ ํ™”๋ฉด์— ๋ฌธ์ž์—ด์ด ํฌํ•จ๋œ ๋ฌธ์„œ๊ฐ€ ๋œฌ๋‹ค. HomeController.java @Controller @RequestMapping("/") public ..
์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์œ„ํ•œ ์–ด๋…ธํ…Œ์ด์…˜ ๊ฐœ๋… ์ •๋ฆฌ xml์œผ๋กœ ์„ค์ •ํ–ˆ์„ ๋•Œ๋Š” "/index"๋ผ๋Š” ์š”์ฒญ์„ ๋ฐ›์œผ๋ฉด xml์— ์„ค์ •๋œ url๊ณผ ์ปจํŠธ๋กค๋Ÿฌ ํด๋ž˜์Šค bean ์ •๋ณด๋Œ€๋กœ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์ฐพ์•„ ๋งคํ•‘๋œ๋‹ค. Controller๋ผ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์†ํ•˜๋Š” ๊ฐ๊ฐ์˜ ์ปจํŠธ๋กค๋Ÿฌ๋Š” handelRequest ๋ฉ”์†Œ๋“œ๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋“œ ํ•˜์—ฌ ๊ตฌํ˜„ํ•˜๊ณ  ModelAndView ๊ฐ์ฒด๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค. ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ("/index")์— ๋”ฐ๋ผ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ๋งคํ•‘๋˜๊ธฐ ์ „์— ๊ฑฐ์ณ์•ผ ํ•˜๋Š” ๊ฒƒ์ด ํ”„๋ก ํŠธ ์ปจํŠธ๋กค๋Ÿฌ(์„œ๋ธ”๋ฆฟ)์ด๋‹ค. ํ”„๋ก ํŠธ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ์Šคํ”„๋ง์ด ์ œ๊ณตํ•˜๋Š” MVC ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ, ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ๊ณผ ์ปจํŠธ๋กค๋Ÿฌ ์‚ฌ์ด ์กฐ์œจ์ž ์—ญํ• ์„ ํ•œ๋‹ค. ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์„ ์ „๋ถ€ ๋ฐ›์€ ํ›„ ์ ์ ˆํ•œ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. xml ๋ฐฉ์‹์„ ์–ด๋…ธํ…Œ์ด์…˜ ๋ฐฉ์‹์œผ๋กœ ์ˆ˜์ •ํ•˜๋ฉด ๊ฐ๊ฐ์˜ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ Controller ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์†ํ•  ํ•„์š”๊ฐ€ ์—†์œผ..
์–ด๋…ธํ…Œ์ด์…˜์œผ๋กœ ์„œ๋น„์Šค ๊ฐ์ฒด ์ƒ์„ฑํ•˜๊ธฐ(@Service) / ์ปจํŠธ๋กค๋Ÿฌ ์ •๋ฆฌํ•˜๊ธฐ (@Controller) ์ด์ „ ํฌ์ŠคํŒ…์—์„œ๋Š” ์ƒ์„ฑ๋œ ๊ฐ์ฒด์— DI๋งŒ ์–ด๋…ธํ…Œ์ด์…˜์œผ๋กœ ์ฒ˜๋ฆฌํ–ˆ๋‹ค๋ฉด, ์ด๋ฒˆ์—๋Š” ๊ฐ์ฒด ์ƒ์„ฑ๊นŒ์ง€ ์–ด๋…ธํ…Œ์ด์…˜์œผ๋กœ ์ฒ˜๋ฆฌํ•ด ๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค. service-context.xml ํƒœ๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค. base-package ์•ˆ์— ์žˆ๋Š” ํด๋ž˜์Šค ์ค‘์—์„œ @๊ฐ€ ๋ถ™์€ ํŒŒ์ผ์„ ์ฐพ์•„ ๊ฐ์ฒด ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•ด ๋‹ฌ๋ผ๋Š” ํƒœ๊ทธ์ด๋‹ค. ์ปดํฌ๋„ŒํŠธ ์Šค์บ”์„ ํ•˜๊ฒŒ ๋˜๋ฉด ์ž์—ฐํžˆ ๊ทธ ์•ˆ์—์„œ @Autowired๊ฐ€ ๋ถ™์€ ๋ฉ”์†Œ๋“œ๋ฅผ ์ฐพ๊ธฐ ๋•Œ๋ฌธ์— ํƒœ๊ทธ๋Š” ์ง€์›Œ๋„ ๋œ๋‹ค. ์–ด๋…ธํ…Œ์ด์…˜ ์ปจํ”ผ๊ทธ๋ณด๋‹ค ์ƒ์œ„ ํƒœ๊ทธ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. JDBCNoticeService.java package com.newlecture.web.service.jdbc; //๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์—ฌ IoC ์ปจํ…Œ์ด๋„ˆ์— ๋‹ด๋Š” ์ปดํฌ๋„ŒํŠธ ์–ด๋…ธํ…Œ์ด์…˜ //@Component //@Controller, @Service, @Rep..
๊ฐ์ฒด DI๋ฅผ ์–ด๋…ธํ…Œ์ด์…˜์œผ๋กœ ๋ณ€๊ฒฝํ•˜๊ธฐ ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์˜ ์„ค์ •์€ ํฌ๊ฒŒ xml ๋ฐฉ์‹, ์–ด๋…ธํ…Œ์ด์…˜ ๋ฐฉ์‹์œผ๋กœ ๋‚˜๋‰œ๋‹ค. ์Šคํ”„๋ง์—์„œ๋Š” ๋Œ€๋ถ€๋ถ„ ์–ด๋…ธํ…Œ์ด์…˜๊ณผ ์ž๋ฐ” ํŒŒ์ผ์„ ์ด์šฉํ•œ ์„ค์ •์„ ํ•œ๋‹ค. servlet-context.xml //์ดํ•˜ ์ƒ๋žต ์–ด๋…ธํ…Œ์ด์…˜์œผ๋กœ ์ฃผ์ž…ํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋” ์ด์ƒ ํ•„์š”์น˜ ์•Š์€ ํƒœ๊ทธ๋ฅผ ์‚ญ์ œํ•œ๋‹ค. ์ด ์ƒํƒœ๋กœ ์‹คํ–‰ํ•˜๋ฉด ListController์—์„œ ๋„ ํฌ์ธํ„ฐ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ์„ธํ„ฐ๋ฅผ ์ด์šฉํ•œ ์ฃผ์ž…์ด ๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. context namespace๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ํƒœ๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค. ์ด ํƒœ๊ทธ๊ฐ€ ์žˆ์–ด์•ผ ์–ด๋…ธํ…Œ์ด์…˜์œผ๋กœ ์„ค์ •ํ–ˆ๋‹ค๋Š” ์ธ์‹์„ ํ•˜๊ฒŒ ๋œ๋‹ค. ListController.java public class ListController implements Controller{ @Autowired private NoticeService noticeSer..
PT 34์ผ์ฐจ - ์ˆ„๋”ํ”„๋ ˆ์Šค(๊ธฐ๊ตฌ) 4.5kg 2์„ธํŠธ 9kg 2์„ธํŠธ 4.5kg 1์„ธํŠธ (10๊ฐœ ํ•œ ํ›„ ํ•œ์ชฝ์€ ์‚ด์ง ๋“  ์ƒํƒœ์—์„œ ๋ฐ˜๋Œ€์ชฝ๋งŒ ํ•˜๊ธฐ) 9ํ‚ค๋กœ ์•ˆ๋˜๋Š”์ค„ ์•Œ์•˜๋Š”๋ฐ ๋œ๋‹ค! ํŒ”์„ ์•„์˜ˆ ์ญ‰ ํŽด์„œ ๋“  ์ฑ„๋กœ ์‹œ์ž‘ํ•˜๋ฉด ์ž˜ ๋จ ํŒ”๊ฟˆ์น˜๋Š” ์•ž์œผ๋กœ ๋ณด๋ƒ„. ๋’ค์—์„œ ์‹œ์ž‘ํ•˜๋Š” ๋А๋‚Œ์ด ์•„๋‹˜.. ์–ด๊นจ๋ฅผ ๋“ค์–ด์˜ฌ๋ฆฐ๋‹ค๋Š” ๋А๋‚Œ(๊ทธ๋ ‡๋‹ค๊ณ  ๋„ˆ๋ฌด ์–ด๊นจ๋งŒ ์˜ฌ๋ฆฌ๋ฉด ์•ˆ๋˜๊ณ  ์–ด๊นจ๋ž‘ ํŒ”๊ฟˆ์น˜๊ฐ€ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ํ•จ๊ป˜ ์˜ฌ๋ผ๊ฐ„๋‹ค) ๋งˆ์ง€๋ง‰์€ 4.5kg๋กœ 10๊ฐœ ํ•˜๊ณ  ํ•œ์ชฝ์€ ์‚ด์ง ๋“  ์ƒํƒœ์—์„œ ๋ฐ˜๋Œ€์ชฝ๋งŒ ํ•˜๊ธฐ ์–ด๊นจ๋ฅผ ๋“ค์–ด์˜ฌ๋ฆฐ๋‹ค๋Š” ๋А๋‚Œ์— ์ง‘์ค‘ํ•˜๋‹ˆ๊นŒ ์—„์ฒญ ํž˜๋“ค์—ˆ๋‹ค - ์ˆ„๋”ํ”„๋ ˆ์Šค(ํ”„๋ฆฌ) 2kg 2.5kg ์ธํด๋ผ์ธ ๋ฒค์น˜ 90๋„๋กœ ์„ธ์šฐ๊ณ  ์ž์„ธ์žก๊ธฐ ๋„ˆ๋ฌด ์–ด๋ ต๋‹ค! ๊ท€ ์˜†์—์„œ ์‹œ์ž‘ ํŒ”๊ฟˆ์น˜๋Š” ์•ž์œผ๋กœ ๋ค๋ฒจ์€ ๋’ค๋กœ ์ผ์ž๋กœ ๋“ค์–ด์˜ฌ๋ฆฐ๋‹ค ์ญ‰ ์˜ฌ๋ฆฌ๋ฉด ์‚ด์ง ์•ˆ์œผ๋กœ ๊ตฝ๋Š” ๋А๋‚Œ์ด์ง€๋งŒ ์ผ๋ถ€๋Ÿฌ ๊ทธ๋ ‡๊ฒŒ ํ•˜๋Š”๊ฑด ์•„๋‹ˆ๊ณ ..
PT 33์ผ์ฐจ - ๋•…๋ฐ๋“œ 20kg 30kg 40kg 50kg 55kg(๋•…๋ฐ๋“œ ์ตœ๊ณ ๊ธฐ๋ก!) 3๊ฐœ? 40kg(๋•…์— ๋‹ฟ๊ณ  ์˜ฌ๋ผ์˜ค๊ธฐ) ๊ธฐ๋ฆฝ๊ทผ ํž˜์— ์ง‘์ค‘ ๋•…์—์„œ ์˜ฌ๋ฆด๋• ๋ฌด๋ฆŽ ์ข€ ๋” ์จ๋„ ๋จ - ํ‹ฐ๋ฐ”๋กœ์šฐ ๋นˆ๋ฐ” 2.5kg ๋“ฑ์„ ์ œ๋Œ€๋กœ ๋‹ค ๋ชป์ ‘๋Š”๋‹ค๋Š” ์ง€์ .. ํ‰์†Œ๋ณด๋‹ค ์ž˜ ๋ชปํ•œ๋‹ค๊ณ ํ•จ ํŒ” ์˜ฌ๋ฆฌ๊ณ  ๋“ฑ ์ ‘๊ณ  ๋๊นŒ์ง€์˜ฌ๋ฆผ ๋‚ด๋ฆด ๋•Œ๋Š” ํŒ” ๋จผ์ € ๋‚ด๋ฆฌ๊ณ  ๋“ฑ๊นŒ์ง€ ๋‚ด๋ฆผ - ์ ํ”„์Šค์ฟผํŠธ ๋‘๋ฒˆ์งธ๋กœ ๋†’์€ ๊ณ„๋‹จ์— ์˜ฌ๋ผ์™€์„œ ๋ฐด๋“œ ๊ฑธ๊ณ  ์ ํ”„ํ•˜๋ฉด์„œ ํ„ฑ๊ฑธ์ด ๋‚ด๋ ค์™”์„ ๋•Œ ํŒ”์€ ์™„์ „ํžˆ ํŽด๊ธฐ ํŒ”์„ ์™„์ „ํžˆ ํŽผ ์ˆ˜ ์žˆ์œผ๋ ค๋ฉด ๋ฌด๋ฆŽ์„ ๊ทธ๋งŒํผ ๊ตฝํ˜€์•ผ ํ•จ ๋‚ด๋ ค์˜ฌ ๋•Œ ๋ฒ„ํ‹ฐ๋ฉด์„œ ๋‚ด๋ ค์˜ค๊ธฐ ์ŠคํŠธ๋žฉ ๊ฐ๊ณ ํ•จ -๋ฐ”๋ฒจ๋กœ์šฐ 10kg 15kg(ํž˜๋“ค์ง€๋งŒ ๊ทธ๋ž˜๋„ ์กฐ๊ธˆ์ด๋ผ๋„ ํ•ด๋ณด๊ธฐ ๋ฌด๊ฒŒ ๋Š˜๋ฆฌ๋ ค๋ฉด) 10kg -๋žซํ’€๋‹ค์šด 14kg 3์„ธํŠธ ํŒ”์€ ์™„์ „ํžˆ ํŽด์ง€๋Š” ์•Š๊ธฐ - ๋ฐฑ ์ต์Šคํ…์…˜ ์Œค์ด ๋“ฑ ๋ˆŒ๋Ÿฌ์คŒ ๋ฐœ์— ํž˜ ๋นผ๊ณ ! ..
๋ฐ์ดํ„ฐ ์„œ๋น„์Šค ํด๋ž˜์Šค ์ถ”๊ฐ€ / ์„œ๋น„์Šค ๊ฒฐํ•ฉ๋ ฅ ๋‚ฎ์ถ”๊ธฐ / DB ์—ฐ๊ฒฐ์ •๋ณด ๋ถ„๋ฆฌ / Spring ์„ค์ • ๋ถ„๋ฆฌ * ๋ฐ์ดํ„ฐ ์„œ๋น„์Šค ํด๋ž˜์Šค(NoticeService) ์ค€๋น„ํ•˜๊ธฐ ๊ณต์ง€์‚ฌํ•ญ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฟŒ๋ ค์ฃผ๊ธฐ ์œ„ํ•ด Notice.java(entity), NoticeService.java ํŒŒ์ผ์„ ์ค€๋น„ํ•˜์˜€๋‹ค. (www.newlecture.com ์ฐธ๊ณ ) NOTICE ํ…Œ์ด๋ธ” CREATE TABLE NOTICE ( ID NUMBER NOT NULL, TITLE NVARCHAR2(100) NOT NULL, WRITER_ID NVARCHAR2(50) NOT NULL, CONTENT CLOB, REGDATE TIMESTAMP (6) DEFAULT systimestamp NOT NULL, HIT NUMBER DEFAULT 0 NOT NULL, FILES NVARCHAR2(1000), PUB NUMBER(1,0) DEFAULT 0 NOT N..
์ •์  ํŒŒ์ผ ๋งคํ•‘ / Tiles์™€ TilesResolver * ์ •์  ํŒŒ์ผ ๋งคํ•‘ ์‹ค์Šต์„ ์œ„ํ•ด www.newlecture.com html ํŒŒ์ผ์„ ๋‹ค์šด๋ฐ›์•„์„œ webapp ํด๋” ์•ˆ์— ๋„ฃ๋Š”๋‹ค. index.jsp ํŒŒ์ผ์„ ํผ๋ธ”๋ฆฌ์‹ฑ ๋œ index.html์˜ ๋‚ด์šฉ๋ฌผ๋กœ ๋ฐ”๊พผ ๋’ค ์‹คํ–‰ํ•˜๋ฉด ์ด๋ฏธ์ง€ ํŒŒ์ผ์ด ๋‚˜์˜ค์ง€ ์•Š๋Š”๋‹ค. ํ•ด๋‹น ๊ฒฝ๋กœ(webapp/images/logo.png)์— ํŒŒ์ผ์ด ์žˆ์Œ์—๋„ ์ด๋ฏธ์ง€๊ฐ€ ๋‚˜์˜ค์ง€ ์•Š๋Š” ์ด์œ ๋Š”, ์Šคํ”„๋ง์ด ์ •์ ์ธ ํŒŒ์ผ(html, ์ด๋ฏธ์ง€ ๋“ฑ)์„ ์ œ๊ณตํ•˜์ง€ ์•Š๋„๋ก ๋ง‰์•„๋‘์—ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. jsp ํŒŒ์ผ์€ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์ด๋ฏธ์ง€ ๋“ฑ์€ url์œผ๋กœ ์š”์ฒญํ–ˆ์„ ๋•Œ 404๊ฐ€ ๋œฌ๋‹ค. (localhost:8080/images/logo.png) ์œ„์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด ์ •์  ํŒŒ์ผ ์„œ๋น„์Šค๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ '/images/**'์œผ๋กœ ์š”์ฒญํ–ˆ์„ ๋•Œ '/images/' ๊ฒฝ๋กœ์—์„œ ์ฐพ์•„๋ณด๊ฒŒ ..