๋ถ๋ฅ ์ ์ฒด๋ณด๊ธฐ (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/' ๊ฒฝ๋ก์์ ์ฐพ์๋ณด๊ฒ .. ์ด์ 1 2 3 4 5 ยทยทยท 9 ๋ค์