โ MainClass.javaโ Calculator.javaโ MyCalculator.javaโ applicationCTX.xml๊ฒฐ๊ณผ โ Pencil.javaโ Pencil4B.javaโ Pencil6B.javaโ applicationCTX2.xmlโ MainClass
โ ํด๋ ๋ง๋ค๊ธฐโ application.propertiesโ TestController.javaโ test.jsp๊ฒฐ๊ณผโ TestController.javaโ ํด๋โ test2.jsp๊ฒฐ๊ณผโ BoardController.javaโ ํด๋โ content.jsp๊ฒฐ๊ณผ โ Gra
โ GradeController.javaโ grade.jsp๊ฒฐ๊ณผ โ BoardVO.javaโ BoardController.java โ BoardDAO.javaโ BoardService.java โ BoardServiceImpl.java๊ฒฐ๊ณผ ์์กด์ฑ ์ฃผ์ โ ์์กด์ฑ์
๐ @Component: ๋ถ๋ชจ | ์คํ๋ง์ผ๋ก ํ์ฌ๊ธ IOC ์ปจํ ์ด๋์ ๊ฐ์ฒด๋ฅผ ์์ฑํด์ ๋ฃ์ด ๋์ผ๋ผ๋ ์๋ฏธ๐ @Controller: ์ปจํธ๋กค๋ฌ ๊ฐ์ฒด๐ @Service: ์ปค๋งจ๋ ๊ฐ์ฒด๐ @Repository: DAO ๐ @Autowired: ์ฃผ์ (ํจ์๋ฅผ ์ด์ฉํ์ฌ
โ BoardController.javaโ BoardService.javaโ BoardServiceImpl.javaโ BoardMapper.javaโ ๐BoardMapper.xml โ list.jsp๊ฒฐ๊ณผ โ content_view.jsp๊ฒฐ๊ณผ โ write_view
๐ rownum: ์กฐํ ํ ์๋ฒ์ ๋งค๊ธธ ๋ ์ฌ์ฉsql์ด ์คํ๋ ๊ฒฐ๊ณผ์ ๋๋ฒ๋ง์ ํด์ค๋คโ emp ํ ์ด๋ธ์์ 10๋ช ๋ง ์ถ์ถํด์ ๋ณด์ฌ์ฃผ๋ ์ฟผ๋ฆฌ๋ฌธ๊ฒฐ๊ณผโ rownum์ ์ค๋ฅ๊ฒฐ๊ณผ ์ค๋ฅ์ ์ด์ ROWNUM์ 1์ด ํ ๋น๋๊ณ SELECT ์คํ ์ WHERE ์กฐ๊ฑด์ ROWNUM (1)
๐ 2. mybatis 1:n์ผ๋๋ค ์ฒ๋ฆฌ (์กฐ์ธ์ฒ๋ฆฌ ๋ฐฉ๋ฒ) ๐ 2) >โ DeptMapper.xml > โ DeptMapper.java โ EmpController.java โ EmpService.java
โ rest_content_view.htmlโ RestBoardController.java๊ฒฐ๊ณผStatic: ์ ์ ๋ฆฌ์์ค (html, css, js, image..) - ์ปดํ์ผ ๋์์ด ์๋ ํ์ผ๋์ ๋ฆฌ์์ค: jsp ์ธ์ฆ๊ณผ ๊ถํ์ ์ํ ์๋ฃจ์ (ํ๋ ์์ํฌ)์ฃผ๋ก ์ฌ์ฉ๋๋ ๋ก
์ธ์ฆ(Authentication)๊ณผ ๊ถํ(Authorization)์ ๊ทผ ์ฃผ์ฒด(Principal): user, ์ ๊ทผํ๋ ๋์๋ณด์๊ณผ ๊ด๋ จํ์ฌ ์ฒด๊ณ์ ์ผ๋ก ๋ง์ ์ต์ ์ ์ ๊ณตํ์ฌ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉ ๊ฐ๋ฅFilter ๊ธฐ๋ฐ์ผ๋ก ๋์ํ์ฌ MVC์ ๋ถ๋ฆฌํ์ฌ ๊ด๋ฆฌ ๋ฐ ๋์์ ๋ํ ์ด์ ์ ํตํ ๊ฐ
โ LoginController.javaโ SecurityConfig.javaโ home.jsp๊ฒฐ๊ณผ โ login.jsp๊ฒฐ๊ณผ โ userHome.jsp๊ฒฐ๊ณผ โ adminHome.jsp๊ฒฐ๊ณผ๐ login.jsp์์ name๋ช ์ ์๋ก ์ง์ ํ๊ณ ์ถ์ ๋ ๐ Secur
Principal: username ์์ด๋UserDetailsService์์ ๋ฆฌํดํ ๊ฐ์ฒด๊ฐ์ฒด๋ UserDetails ํ์ Credentials: password ๋น๋ฐ๋ฒํธAuthorities: ๊ถํโ LoginController.javaโ home.jsp๊ฒฐ๊ณผ๐ User
์คํ๋ง ์ํ๋ฆฌํฐ(Spring Seurity) ํ๋ ์์ํฌ์์ ์ ๊ณตํ๋ ํด๋์ค ์ค ํ๋๋ก ๋น๋ฐ๋ฒํธ๋ฅผ ์ํธํํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ๋ฉ์๋๋ฅผ ๊ฐ์ง ํด๋์คBCrypt ํด์ฑ ํจ์(BCrypt hashing function)๋ฅผ ์ฌ์ฉํด์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ธ์ฝ๋ฉํด์ฃผ๋ ๋ฉ์๋์ ์ฌ์ฉ์์ ์
๋จ์ ํ ์คํธ: ํจ์ ํ ์คํธํตํฉ ํ ์คํธ: Controller ํ ์คํธ์์คํ ํ ์คํธ: ๋ถํ ํ ์คํธ์ธ์ ํ ์คํธ: ์๊ตฌ์ฌํญ ๋ถ์์ ์ธ์ ํ ์คํธjUnit์ ์ฌ์ฉํ์ฌ ํ ์คํธโ ํ ์คํธ ํ์ผ ์์ฑโ UserVOTest.java๊ฒฐ๊ณผ๐ datasource (์ปค๋ฅ์ ํ) jUnit ํ ์คํธโ
โ HomeControllerTest.java๊ฒฐ๊ณผ : ์ค๋ฅ ๋ฐ์โ ์ฝ๋ ์ถ๊ฐ@WithMockUser ์ถ๊ฐํ์ฌ ์ค๋ฅ ํด๊ฒฐ (๊ถํ ์ค์ )์ผ๋ จ์ ์์ ๋จ์์์ ํ ์ฒ๋ฆฌ๋๊ฑฐ๋ All-OR-Nothing๊ธฐ๋ณธ์ ์ผ๋ก(์ ํต์ ์ผ๋ก) ํ๋์ ํจ์์ ๋ฌถ์ด์ ์ฒ๋ฆฌํจ์คํ๋ง์ ๊ฒฝ์ฐ ๊ทธ ๊ธฐ์ค์ ๋น
์์ธ์ ๋ฐ๋ฅธ ๋กค๋ฐฑ์ฒ๋ฆฌ: Checked ์์ธ๋ ๋กค๋ฐฑ๋์ง ์๊ณ , UnChecked ์์ธ๋ ๋กค๋ฐฑ๋ฉ๋๋ค.Checked Exception ์ผ๋๋ Rollback์ ํ์ง ์๋๋ค.@Transactional(rollbackFor = Exception.class) ์ต์ ์ผ๋ก ๋ชจ๋ ์์ธ์
โ ํ์ผ ์์ฑ๐ 2) web.xml์ ์ฒดํฌ -> Tomcat์ด ์ฝ์ด๋ค์ด๋ ํ๊ฒฝ์ค์ ํ์ผ ๐ก ์ ์ ์๋ ์๋ฌ๊ฐ ๋ฌ์ ๋๋ฉ์ด๋ธ ์ ๋ฐ์ดํธํ๋ก์ ํธ ํด๋ฆฐ
โ BoardController.java์ปจํธ๋กค๋ฌ์์ ์ฌ์ฉํ๋ ์ฝ๋๋ค์ DispatcherServlet์ ๋ด์๋์ด ์ปจํธ๋กค๋ฌ๋ฅผ ์์ฑํ์ง ์์๋ ์ฌ์ฉํ ์ ์๊ฒ ํจ<bean> + Servlet์ ์์๋ฐ์ ํด๋์ค ๋ผ๋ ์๋ฏธHandlerMapping์ ์ญํ : ํด๋น Cont
โ root-context.xml์๋ฐ์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก DataSource ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ปค๋ฅ์ ํ์ ๊ด๋ฆฌํ๋ค.Spring์์๋ ์ฌ์ฉ์๊ฐ ์ง์ ์ปค๋ฅ์ ์ ๊ด๋ฆฌํ ํ์์์ด ์๋ํ๋ ๊ธฐ๋ฒ๋ค์ ์ ๊ณตํ๋๋ฐSpringBoot 2.0 ์ด์ ์๋ tomcat-jdbc๋ฅผ ์ฌ์ฉ,ํ์ฌ