โ๏ธ ๋ค๋ฅธ ์ฌ๋์ ์ปดํจํฐ์ ์๋ ํ๋ก๊ทธ๋จ ์คํโ๏ธ ๋ธ๋ผ์ฐ์ + WAS โก๏ธ ์๊ฒฉ ํ๋ก๊ทธ๋จ์ ์คํ๋ธ๋ผ์ฐ์ ์์ URL์ ์ ๋ ฅ์ ํ๊ณ ์ํฐ๋ฅผ ์น๋ฉด ํฐ์บฃํฌํธ๊ฐ 8080์ ์ฌ์ฉํ๋๋ฐ, ์ด ์์ฒญ์ ํฐ์ผ์ด ๋ฐ์์ ํ๋ก๊ทธ๋จ์ ์คํํ๊ฒ ๋๋ค. ํ์ง๋ง, ๋ค๋ฅธ ์ปดํจํฐ์ ํ๋ก๊ทธ๋จ์ ์๋ฌด๊ฑฐ๋
๐ก ๊ด์ฌ์ฌ์ ๋ถ๋ฆฌ Separation of Concerns > โ๏ธ oop 5๋ ์ค๊ณ ์์น: SOLID ๐ SRP(๋จ์ผ์ฑ ์์ ์์น) > โ๏ธ ํ๋์ ๋ฉ์๋๋ ํ๋์ ์ฑ ์์ ์ง๋ค. ์ฑ ์ = ๊ด์ฌ์ฌ : ํ๋์ ๋ฉ์๋๋ ํ๊ฐ์ ๊ด์ฌ์ฌ๊ฐ ์์ด์ผ ํ๋ค. ๋ฐ๋ผ์, ์ ์
๐ก spring ์๋ฆฌ 1 โ๏ธ YoilTeller.java โ๏ธ MethodInfo.java > โ๏ธ YoilTeller๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ณ ์ฒ๋ฆฌํ๋ ํด๋์ค โ๏ธ Spring์ ์ญํ ์ ์์๋ณด๊ธฐ ์ํ ํด๋์ค YoilTeller๋ก ์ปดํ์ผํ ๋ ์ปดํ์ผ๋ฌ๋ ๋งค๊ฐ๋ณ์ ํ์ ์
๐ก @RequestParam > โ๏ธ ์์ฒญ ํ๋ผ๋ฏธํฐ๋ฅผ ์ฐ๊ฒฐํ ๋ ๋งค๊ฐ๋ณ์์ ๋ถ์ด๋ ์ ๋ํ ์ด์ โ๏ธ @RequestParam: required=false & String year โก๏ธ public String main2(@RequestParam(name="year
๐ก @ModelAttribute > โ๏ธ ์ ์ฉ ๋์์ Model์ ์์ฑ์ผ๋ก ์๋ ์ถ๊ฐํด์ฃผ๋ ์ ๋ํ ์ด์ โ๏ธ MyDate Model์ ์๋ ์ ์ฅ key๋ฅผ ์๋ตํ๋ฉด ์๋์ผ๋ก ์์ ๊ธ์๋ฅผ ์๋ฌธ์๋ก ๋ณํํด์ key๋ก ์ง์ ํด ์ค๋ค. : ex) ("myDate", MyDa
โ๏ธ ํ์๊ฐ์ ํ๋ฉด ๊ตฌํ > โ๏ธ ํ์๊ฐ์ ํ๋ฉด์ ๊ตฌํํ์ฌ ์ฌ์ฉ์๊ฐ ๊ฐ์ ๋ฃ์ผ๋ฉด ์ ๋ณด์ฐฝ์ผ๋ก ์ด๋ํ๊ฒ ๋ง๋ค์ด๋ณด์ โ๏ธ RegisterController.java โ๏ธ registerForm.jsp > * โ๏ธ ``* : Context root ์ถ๊ฐ : Sessio
๐ก @GetMapping >โ๏ธ ์ฃผ์ด์ง URI ํํ์๊ณผ ์ผ์นํ๋ HTTP Get ์์ฒญ์ ์ฒ๋ฆฌ. โ๏ธ @GetMapping("/register/add") โ๏ธ @GetMapping ์์ -* @RequestMapping(value="/register/add", m
๐ช JSP์์ ๋ฐฐ์ ๋ Cookie๋ฅผ Spring์์๋ ํ์ฉํด ๋ณด์.โ๏ธ ์์ด๋ ๊ธฐ์ต์ ๋๋ฅด๋ฉด ์ฟ ํค ์ ์ฅโ๏ธ ์์ด๋ ๊ธฐ์ต์ ๋๋ฅด์ง ์์ผ๋ฉด ์ฟ ํค ์ญ์ ์์ด๋ ๊ธฐ์ต ๋๋ฅด๊ณ ๋ค์ ๋ก๊ทธ์ธ ์ฐฝ์ ๊ฐ๋ณด๋ฉด ์์ด๋๊ฐ ๋ฐ๋ก ๋ฃ์ด์ง ๊ฒ์ ํ์ธํด ๋ณผ ์ ์๋ค.
โ๏ธ ๊ฒ์ํ ์ด์ฉ ์, ๋ฏธ๋ก๊ทธ์ธ์ด๋ฉด ๋ก๊ทธ์ธ ํ๋ฉด์ผ๋ก ์ด๋LoginController ๊ฐ ๋ก๊ทธ์ธ์ ์ฑ๊ณตํ์ ๋ boardList.jsp ๊ฐ๊ฒ ๋ง๋ค๋ ค๋ฉด, index.jsp ์์ Board๋ฅผ ํด๋ฆญํ๋ค๋ ๊ฒ์ ์์์ผ ํจ โก๏ธ BoardController ์์ ๋ณด๋ฉด ์ด๋์ ์๋
๐ก RedirectView๊ฐ redirect ์ฒ๋ฆฌ > โ๏ธ ์๋ต ํค๋๋ฅผ ๋ง๋ค์ด ๋ Controller์์ ๋ฐํ๊ฐ์ผ๋ก redirect ๋ฌธ์์ด ํฌํจ โก๏ธ RedirectView์๊ฒ ์ ๋ฌ RedirectView ๋ ์๋ต์ ๋ง๋ค์ด๋ด๊ณ Client๋ ์ด ์๋ต์ ๋ฐ์์ ์
โ๏ธ Controller ๋ฉ์๋ ๋ด์์ try-catch๋ก ์ฒ๋ฆฌโ๏ธ Controller์ @ExceptionHandler ๋ฉ์๋๊ฐ ์ฒ๋ฆฌโ๏ธ @ControllerAdivice ํด๋์ค์ @ExceptionHandler ๋ฉ์๋๊ฐ ์ฒ๋ฆฌโ๏ธ ์์ธ ์ข ๋ฅ๋ณ๋ก ๋ทฐ ์ง์ : Simple
๐ก Spring MVC ์์ฒญ ์ฒ๋ฆฌ ๊ณผ์ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์์ฒญ์ ํ๋ฉด, front controller์ธ DispatcherServlet ํด๋์ค๊ฐ ์์ฒญ์ ๋ฐ๋๋ค. DispatcherServlet ๋ ํ๋ก์ ํธ ํ์ผ ๋ด์ servlet-context.xml ํ์ผ์ @
โ๏ธ ์์ฒญ ๋งค๊ฐ๋ณ์(form ๋๋ query ๋ฐ์ดํฐ)๋ฅผ ๋ชจ๋ธ ๊ฐ์ฒด์ ๋ฐ์ธ๋ฉํ๋ค.๋ธ๋ผ์ฐ์ ๋ฅผ ํตํด์ ์์ฒญ๋ฐ์ ๊ฐ์ด ์ค์ ์๋ฒ์ ๊ฐ์ฒด์ ๋ฐ์ธ๋ฉ ๋ ๋, ์ค๊ฐ ์ญํ ์ ํจ1\. ํ์ ๋ณํ 2\. ๋ฐ์ดํฐ ๊ฒ์ฆ โก๏ธ ๋ณํ ๊ฒฐ๊ณผ๋ ์๋ฌ๋ BindingResult์ ์ ์ฅ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฐ์ดํฐ
โ๏ธ ๊ฐ์ฒด๋ฅผ ๊ฒ์ฆํ๊ธฐ ์ํ ์ธํฐํ์ด์ค. ๊ฐ์ฒด ๊ฒ์ฆ๊ธฐ ๊ตฌํ์ ์ฌ์ฉBindingResult ์ธํฐํ์ด์ค๋ Errors ์ ์์์ด๋ค.: ์์์ ๋ฐ์ดํฐ๋ฅด ๋ณํํ๊ณ ๊ฒฐ๊ณผ๋ฅผ BindingResult ์ ์ ์ฅํ๋ฏ์ด, Validator ๋ ๊ฒ์ฆํ ๋ฐ์ดํฐ๋ฅผ Errors ์ ์ ์ฅํ๋ค.or
โ๏ธ ์ฐ๋ฆฌ๋ ์ด๋ป๊ฒ ํ๋ฉด ํ๋ก๊ทธ๋จ์ ๋ณ๊ฒฝ์ ์ต์ํ ํ ๊น๋ฅผ ๊ณ ๋ฏผํด์ผ ํ๋ค.โก๏ธ ๋ณ๊ฒฝ์ด ์ ๋ฆฌํ๊ฒ ๋ง๋ค๊ธฐ ์ํด = OOP์ค๋ฅธ์ชฝ ์์ ์ ๋ฉ์๋๋ ๊ธฐ๋ฅ์ ๋ด๋นํ๋ ๋ฉ์๋์ด๊ณ car๋ฅผ ์ ์ํ๋ ์์ ์ฌ์ฉํ๋ ์ฝ๋์ด๋ค. ์ ๋ฉ์๋๊ฐ getCar() ์ SportCar() ๊ฐ ๋ฐ๊ปด๋
โ๏ธ ์ ์ด์ ์ญ์ : ์ ์ด์ ํ๋ฆ์ ์ ํต์ ์ธ ๋ฐฉ์๊ณผ ๋ค๋ฅด๊ฒ ๋ค๋ฐ๊พธ๋ ๊ฒControl = flow Control: if๋ฌธ๊ณผ for๋ฌธ์ ์๋ฏธ โก๏ธ ์คํ ํ๋ฆ์ด ๋ฐ๋๋ ๊ฒ โก๏ธ ์คํ ํ๋ฆ์ด ์ญ์ ๋๋ ๊ฒ์ ๋ต ํจํด์ด๋ผ๊ณ ๋ ๋ถ๋ฆผ์ ํต์ ์ธ ๋ฐฉ์์ ์ฐ๋ฆฌ๊ฐ ๋ค๋ฅธ ์ฌ๋์ด ์์ฑํ ์ฝ๋(๋ผ์ด๋ธ
โ๏ธ servlet-contex.xml: ์์ฒญ๊ณผ ๊ด๋ จ๋ ๊ฐ์ฒด๋ฅผ ์ ์url๊ณผ ๊ด๋ จ๋ controller๋, @(์ด๋ ธํ ์ด์ ), ViewResolver, Interceptor, MultipartResolver ๋ฑ์ ์ค์ ์ด๊ธฐ ํ์ผ์ ๋ณด๋ฉด, <!-- DispatcherSe
๐ก JDBC(Java Database Connectivity) > โ๏ธ ์๋ฐ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์ํ ์ ์๋๋ก ํ๋ ์๋ฐ API โ๏ธ JDBC ํ์ค ์ธํฐํ์ด์ค์ 3๊ฐ์ง ๊ธฐ๋ฅ java.sql.Connection : ์ฐ๊ฒฐ java.sql.Statement : SQL
๐ก DAO(Data Access Object) > โ๏ธ ๋ฐ์ดํฐ(data)์ ์ ๊ทผ(access) ํ๊ธฐ ์ํ ๊ฐ์ฒด(object) Database์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ธฐ, ์ฐ๊ธฐ, ์ญ์ , ๋ณ๊ฒฝ์ ์ํ โก๏ธ CRUD DBํ ์ด๋ธ๋น ํ๋์ DAO๋ฅผ ์์ฑ : ํ๋์ DAO๊ฐ
โ๏ธ ์ด๋ค ๋ก์ง์ ๊ธฐ์ค์ผ๋ก ํต์ฌ์ ์ธ ๊ด์ , ๋ถ๊ฐ์ ์ธ ๊ด์ ์ผ๋ก ๋๋์ด์ ๋ณด๊ณ ๊ทธ ๊ด์ ์ ๊ธฐ์ค์ผ๋ก ๊ฐ๊ฐ ๋ชจ๋ํํ๋ ๊ฒ๊ด์ ์งํฅ ํ๋ก๊ทธ๋๋ฐํก๋จ ๊ด์ฌ์ฌ(cross-cutting concerns)๋ถ๊ฐ ๊ธฐ๋ฅ์ ๋์ ์ผ๋ก ์ถ๊ฐํด์ฃผ๋ ๊ธฐ์ : ๋์ ์ผ๋ก ์ถ๊ฐํ๋ค๋ ๋ง์, ์ฐ๋ฆฌ๊ฐ ํ๋ก๊ทธ๋จ
๐ก ์๋น์ค ๊ณ์ธต(Layer)์ ๋ถ๋ฆฌ- ๋น์ง๋์ค ๋ก์ง์ ๋ถ๋ฆฌ โ๏ธ ๊ณ์ธต ๋ถ๋ฆฌ ๊ด์ฌ์ฌ์ ๋ถ๋ฆฌ: ์ฑ๊ฒฉ์ด ๋ค๋ฅธ ์ฝ๋, ๋ณ๊ฒฝ๋ผ์ผ ํ๋ ์ด์ ๊ฐ ๋ค๋ฅธ ์ฝ๋๋ ๋ถ๋ฆฌํด์ผ ํ๋ค. ์ค๋ณต ์ฝ๋ ์ ๊ฑฐ **์ฌ์ฉ์ ์ด๋ ฅ(UserHistoryDao) โก๏ธ ๋น์ฆ
โ๏ธ SQL Mapping Framwork - Easy & Simplejava์ฝ๋์ SQL์ ๋งคํํด์ค: SQL์ ๋ณ๋ XML๋ก ๋ถ๋ฆฌํด๋๊ณ ์๋ฐ ์ฝ๋์์ ๊ฐ๋จํ๊ฒ ์ฌ์ฉํ ์ ์๊ฒ ํด ๋์๋ค.โก๏ธ ๋งค๊ฐ๋ณ์ ์ค์ ๊ณผ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์ฝ์ด์ค๋ ์ฝ๋๋ฅผ ์ ๊ฑฐ. MyBais๊ฐ ์์์ ํด
1๏ธโฃ DB ํ ์ด๋ธ ์์ฑ2๏ธโฃ Mapper XML & DTO ์์ฑ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ๋ก ๋ถํฐ ๋ฐ์ดํฐ๋ฅผ CRUD๋ฅผ ํ๊ธฐ ์ํ sql๋ฌธ๋ค์ ์์ฑselect๋ฅผ ํ๊ธฐ ์ํ resultType์ BoardDto๋ก ์ค์ 3๏ธโฃ DAO ์ธํฐํ์ด์ค ์์ฑ4๏ธโฃ DAO ์ธํฐํ์ด์ค ๊ตฌํ &
boardList.jsp๋ฅผ ๋ง๋ค๊ธฐ ์ ์ TDD๋ก ์ฐ๋ฆฌ๊ฐ ์ํ๋๋๋ก ํ์ด์ง์ด ๋๋์ง ํ ์คํธ ํด๋ณผ ๊ฒ์ด๋ค.board.jsp: ๊ฒ์๋ฌผ ๋ด์ฉ์ ๋ณด์ฌ์ฃผ๋ ํ๋ฉด.: ํ์ฌ ํ์ด์ง์ ๊ฐ์ ๋๋ ค์ค์ผ ํ๋ฉด์ด ๋์จ๋ค.: ํ์ฌ ํ์ด์ง, ๋ค์ ํ ์ด์ง์๋ ๊ฐ ํ์ด์ง ๋ฒํธ๊ฐ ๊ฑฐ๊ธฐ์ ๋ง๊ฒ ๋งํฌ๊ฐ
uri๊ฐ ๋๊ฐ์ด /board/write์ด์ง๋ง http๋ฉ์๋๋ฅผ ํตํด ๊ตฌ๋ณํ์๋ค.์์ ์์ post๋ฐฉ์์ผ๋ก ์ค๋ฉด ์์ ๋ ๊ฒ์๋ฌผ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๋ค.boardList.jsp์์ ์ ๋ชฉ์ ํด๋ฆญํ๋ฉด ์ ๋ชฉ์ ๊ฑธ๋ ค์๋ ๋งํฌ์ ๋ฐ๋ผ์ ์์ฒญ์ด ๊ฐ๋ค. ๊ฒ์๋ฌผ ๋ฒํธ๊ฐ ๊ฐ์ด ๋ฐ๋ผ๊ฐBoar
boardList.jsp์ ๊ธ์ฐ๊ธฐ ๋ฒํผ์ ํ๋ ์ถ๊ฐํ๊ณ ๋ฒํผ ํด๋ฆญํ๋ฉด BoardController์ wrtie() ์ ํธ์ถํ๊ฒ ๋ง๋ค ๊ฒwrite() ๋ board.jsp๋ฅผ ๋ณด์ฌ์ฃผ๋ฉด ๋๋ค.๊ฒ์๊ธ ์ฝ๊ธฐ: mode = new ๊ฒ์ํ ๊ธ์ฐ๊ธฐโก๏ธ ๊ฒ์ํ์ ์ฝ์ ๊ฒ์ธ์ง ์ธ ๊ฒ์ธ์ง
โ๏ธ ๋์ ์ฟผ๋ฆฌ: ๊ฒ์ํ ๋์์ ๋ญ๋ก ์ ํํ๋๋์ ๋ฐ๋ผ์ ์ฟผ๋ฆฌ๊ฐ ๋ฌ๋ผ์ ธ์ผ ํ๋ค. โ๏ธ ํ์ด์ง ์ด๋์ฒ๋ฆฌ: ๊ฒ์ํ ๊ฒฐ๊ณผ์์ ์ด๋ค ๋ด์ฉ์ ์ฝ์๋๋ฐ ๋ชฉ๋ก๋ณด๊ธฐ๋ฅผ ๋๋ ์ ๋ ํ์ด์ง ์ฒ๋ฆฌ๋ ์ ๊ฒฝ์จ์ผ ํ๋ค.๊ธฐ๋ณธ์ ์ผ๋ก ์ ํ๋ ๊ฒ์ด selectedoption๊ณผ keyword์ ๊ฐ์ ๋ฐ์์ผ
?page=1&pageSize=10&option=T&keyword="title"
โ๏ธ JSON(Java Script Object Notation): ์๋ฐ ์คํฌ๋ฆฝํธ ๊ฐ์ฒด ํ๊ธฐ๋ฒ์๋ ์๋ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋ XML์ ์ฌ์ฉํ์๋๋ฐ, ๋ณต์กํ๊ณ ์ค์ ๋ฐ์ดํฐ๋ณด๋ค ํ๊ทธ๊ฐ ๋ ๋ง๋ค.๋ฐฐ ๋ณด๋ค ๋ฐฐ๊ผฝ์ด ๋ ๋ง์ ์ํฉ์ด ๋๋ฒ๋ฆผโก๏ธ ๊ฐ๋จํ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด ํ๊ธฐ๋ฒ์ ์ฐ
๐ก ๋๊ธ ๊ธฐ๋ฅ ๊ตฌํ ์์ > โ๏ธ 1. DBํ ์ด๋ธ ์์ฑ ๋๊ธ ๊ธฐ๋ฅ์ ๋ฃ์ ๋๋ ๋จผ์ DBํ ์ด๋ธ์ ์์ฑํด ์ค์ผ ํ๋ค. > โ๏ธ 2. Mapper XML ์์ฑ ์ค๊ฐ์ MyBatis ์์ฑ โก๏ธ Mapper XML ์ฆ, SQL๋ฌธ์ ์์ฑํด์ผ ํ๋ค. โก๏ธ CRUD ์์ฑ
โ๏ธ 6. ๋ทฐ(UI) ์์ฑ & ํ ์คํธ bno๋ฅผ 1๋ก ๊ฐ์ ํ๊ณ bno๊ฐ ํธ์ถ์ด ๋๋ฉด GET์ผ๋ก ์์ฒญ์ด ๊ฐ์ 1๋ฒ์ ์๋ ๋๊ธ๋ค์ ๋ค ๊ฐ์ ธ์จ๋ค.
์์๋ค ๋จผ์ ๋ฑ๋ก ํด ์ค๋ค.๋ต๊ธ ๋๋ฅผ ๋ ์ ๋๋๊ธ ๋ฑ๋ก div๊ฐ ๋์ค๊ฒ ํ ๊บผ์!โก๏ธ ์ผ๋จ ์๋ณด์ด๊ฒ ๋ง๋ ๋ค: style="display: none ์ฒ๋ฆฌ๋ต๊ธ์ ๋๋ฅด๋ฉด ์์น๋ฅผ ์ฎ๊ธฐ๊ณ ๋ค์ style="display: block ์ผ๋ก ๋ง๋ค๋ฉด ๋๋ค.1๏ธโฃ replyForm์
Spring์์ redirect๋ฅผ ์ฌ์ฉํ์ฌ ํ์ด์ง๋ฅผ ์ด๋ํ ๋, ๊ธฐ๋ณธ์ ์ผ๋ก model ๊ฐ์ ๋ณด๋ด์ง์ง ์๋๋ค. Redirect๋ ํด๋ผ์ด์ธํธ์๊ฒ ์๋ก์ด URL๋ก ์ด๋ํ๋ผ๋ ์ง์๋ฅผ ์ ๋ฌํ๋ ๊ฒ์ด๋ฏ๋ก, ์ด๋ํ ํ์ด์ง์์๋ ์ด์ ์์ฒญ๊ณผ๋ ๋ณ๊ฐ๋ก ์๋ก์ด ์์ฒญ์ด ๋ฐ์ํ๋ค.๊ทธ๋ฌ๋ S