Spring/Boost Course Web (20) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ 5.1 ์ํ์ ์ง๊ธฐ์ - Cookie & Session 1) ์ํ์ ๋ณด๋? ์น์์์ ์ํ ์ ์ง ๊ธฐ์ HTTPํ๋กํ ์ฝ์ ์ํ ์ ์ง๊ฐ ์๋๋ ํ๋กํ ์ฝ์ ๋๋ค. - ์ด์ ์ ๋ฌด์์ ํ๊ณ , ์ง๊ธ ๋ฌด์์ ํ๋์ง์ ๋ํ ์ ๋ณด๋ฅผ ๊ฐ๊ณ ์์ง ์์ต๋๋ค. - ์น ๋ธ๋ผ์ฐ์ (ํด๋ผ์ด์ธํธ)์ ์์ฒญ์ ๋ํ ์๋ต์ ํ๊ณ ๋๋ฉด ํด๋น ํด๋ผ์ด์ธํธ์์ ์ฐ๊ฒฐ์ ์ง์ํ์ง ์์ต๋๋ค. ์ํ ์ ์ง๋ฅผ ์ํด Cookie์ Session๊ธฐ์ ์ด ๋ฑ์ฅํฉ๋๋ค. ์ฟ ํค(Cookie)์ ์ธ์ (Session) ์ฟ ํค - ์ฌ์ฉ์ ์ปดํจํฐ์ ์ ์ฅ - ์ ์ฅ๋ ์ ๋ณด๋ฅผ ๋ค๋ฅธ ์ฌ๋ ๋๋ ์์คํ ์ด ๋ณผ ์ ์๋ ๋จ์ - ์ ํจ์๊ฐ์ด ์ง๋๋ฉด ์ฌ๋ผ์ง ์ธ์ - ์๋ฒ์ ์ ์ฅ - ์๋ฒ๊ฐ ์ข ๋ฃ๋๊ฑฐ๋ ์ ํจ์๊ฐ์ด ์ง๋๋ฉด ์ฌ๋ผ์ง๋๋ค. ์ฟ ํค(Cookie) ๋์ ์ดํด ์ธ์ ์ ๋์ ์ดํด HttpSession์ด๋ผ๋ ๊ฐ์ฒด: ์ธ์ ์ ์ ๋ณด๋ฅผ ๋ด๊ธฐ ์ํด ์์ฑ๋๋ ๊ฐ์ฒด 2) .. 4.5 Swagger 1) Swagger ๊ฐ์ 1. ์ค์จ๊ฑฐ(Swagger)๋? ์ค์จ๊ฑฐ๋ Web API ๋ฌธ์ํ๋ฅผ ์ํ ๋๊ตฌ์ ๋๋ค. ์ค์จ๊ฑฐ ํํ์ด์ง(https://swagger.io)์์๋ ์ค์จ๊ฑฐ๋ฅผ OAS(Open API Specification)์ด๋ผ๊ณ ์๊ฐํ๊ณ ์์ต๋๋ค. ๋ง๊ทธ๋๋ก API๋ค์ด ๊ฐ์ง๋ ๋ช ์ธ(Spec)์ ๊ด๋ฆฌํ๊ธฐ ์ํ ํ๋ก์ ํธ๋ผ๊ณ ๋งํ ์ ์์ต๋๋ค. Web API๋ฅผ ์๋์ผ๋ก ๋ฌธ์ํ ํ๋ ๊ฒ์ ๊ต์ฅํ ํ๋ ์์ ์ ๋๋ค. Web API์ ์คํ์ด ๋ณ๊ฒฝ๋์์ ๋ ๋ฌธ์ ์ญ์ ๋ณ๊ฒฝ์ด ๋์ผ ํ๋๋ฐ ์ด๋ฅผ ์ ์งํ๋ ๊ฒ์ด ์ฝ์ง๊ฐ ์์ต๋๋ค. Swagger๋ฅผ ์ฌ์ฉํ๋ฉด Web API๊ฐ ์์ ๋๋๋ผ๋ ์๊ด ์์ต๋๋ค. ๋ฌธ์๊ฐ ์๋์ผ๋ก ๊ฐฑ์ ์ด ๋๊ธฐ ๋๋ฌธ์ ๋๋ค. 2. ์ค์จ๊ฑฐ์ ๊ธฐ๋ฅ ์ค์จ๊ฑฐ ํํ์ด์ง๋ฅผ ๊ฐ๋ณด๋ฉด ์๋์ ๊ฐ์ ๊ธฐ๋ฅ์ด ์์ต๋๋ค. 1) API .. 4.4 Controller 1) RestController๋? Spring MVC์์ ์ ๊ณตํ๋ RestController @RestController Spring 4 ์์ Rest API ๋๋ Web API๋ฅผ ๊ฐ๋ฐํ๊ธฐ ์ํด ๋ฑ์ฅํ ์ด๋ ธํ ์ด์ ํฉ๋๋ค. ์ด์ ๋ฒ์ ์ @Controller์ @ResponseBody๋ฅผ ํฌํจํฉ๋๋ค. MessageConvertor ์๋ฐ ๊ฐ์ฒด์ HTTP ์์ฒญ / ์๋ต ๋ฐ๋๋ฅผ ๋ณํํ๋ ์ญํ @ResponseBody, @RequestBody @EnableWebMvc ๋ก ์ธํ ๊ธฐ๋ณธ ์ค์ WebMvcConfigurationSupport ๋ฅผ ์ฌ์ฉํ์ฌ Spring MVC ๊ตฌํ Default MessageConvertor ๋ฅผ ์ ๊ณต ๋งํฌ ๋ฐ๋ก๊ฐ๊ธฐ์ addDefaultHttpMessageConverters๋ฉ์๋ ํญ๋ชฉ ์ฐธ์กฐ M.. 4.3 WEB API 1) Rest API๋? HTTP ํ๋กํ ์ฝ์ ์ด์ฉํ์ฌ ๋ธ๋ผ์ฐ์ ๋ ์์ฒญ์ ๋ณด๋ด๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ ๋๋๋งํ์ฌ ํ๋ฉด์ ๋ณด์ฌ์ง๊ฒ ๋ฉ๋๋ค. HTTP์ ์ด๋ฐ ํน์ง์ ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ ๋ค๋ฅธ ํด๋ผ์ด์ธํธ๋ ์ฌ์ฉํ ์ ์์๊น? ๋ผ๋ ๊ณ ๋ฏผ์ ๊ฐ๋ฐ์๋ค์ ํ๊ฒ ๋์์ต๋๋ค. ์ฆ, ์๋๋ก์ด๋ ์ฑ, ๋ชจ๋ฐ์ผ ์ฑ, Javascript ๋ฑ์์ HTTP๋ก ์์ฒญ์ ๋ณด๋ด๊ณ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ฌ ์ ์์๊น? ํ๋ ์๊ฐ์ ํ๊ฒ ๋ ๊ฒ์ ๋๋ค. ์๋ฅผ ๋ค์ด, ์ ๋ถ์์ ๋ฒ์ค ์ดํ ์๊ฐํ๋ฅผ ์ ๊ณตํ๋ค๊ณ ์๊ฐํด ๋ณด๊ฒ ์ต๋๋ค. ์ ๋ถ์์๋ 300๋ฒ ๋ฒ์ค์ ๋ํ ์๊ฐํ๋ฅผ ์ ๊ณตํ๋ URL์ ์๋์ ๊ฐ์ ํํ๋ก ์ ๊ณตํ๋ ๊ฒ์ ๋๋ค. http://ip์ฃผ์/api/buses/300 ์์ ๊ฐ์ URL์ ํธ์ถ ํ๊ฒ ๋์์ ๋ ์๊ฐํ ์ ๋ณด๋ฅผ ํน์ ํ ํํ๋ก ์ ๊ณตํ๋ค๋ฉด, ๊ทธ ์ ๋ณด๋ฅผ ๋ค์ํ.. 4.2 Layered Architecture 1) ๋ ์ด์ด๋ ์ํคํ ์ฒ๋? Controller์์ ์ค๋ณต๋๋ ๋ถ๋ถ์ ์ฒ๋ฆฌํ๋ ค๋ฉด? ๋ณ๋์ ๊ฐ์ฒด๋ก ๋ถ๋ฆฌํฉ๋๋ค. ๋ณ๋์ ๋ฉ์๋๋ก ๋ถ๋ฆฌํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์ผํ๋ชฐ์์ ๊ฒ์ํ์์๋ ํ์ ์ ๋ณด๋ฅผ ๋ณด์ฌ์ฃผ๊ณ , ์ํ ๋ชฉ๋ก ๋ณด๊ธฐ์์๋ ํ์ ์ ๋ณด๋ฅผ ๋ณด์ฌ์ค์ผ ํ๋ค๋ฉด ํ์ ์ ๋ณด๋ฅผ ์ฝ์ด์ค๋ ์ฝ๋๋ ์ด๋ป๊ฒ ํด์ผ ํ ๊น์? ์ปจํธ๋กค๋ฌ์ ์๋น์ค ๋น์ง๋์ค ๋ฉ์๋๋ฅผ ๋ณ๋์ Service๊ฐ์ฒด์์ ๊ตฌํํ๋๋ก ํ๊ณ ์ปจํธ๋กค๋ฌ๋ Service๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋๋ก ํฉ๋๋ค. ์๋น์ค(Service)๊ฐ์ฒด๋? ๋น์ง๋์ค ๋ก์ง(Business logic)์ ์ํํ๋ ๋ฉ์๋๋ฅผ ๊ฐ์ง๊ณ ์๋ ๊ฐ์ฒด๋ฅผ ์๋น์ค ๊ฐ์ฒด๋ผ๊ณ ํฉ๋๋ค. ๋ณดํต ํ๋์ ๋น์ง๋์ค ๋ก์ง์ ํ๋์ ํธ๋์ญ์ ์ผ๋ก ๋์ํฉ๋๋ค. ํธ๋์ญ์ (Transaction)์ด๋? ํธ๋์ญ์ ์ ํน์ง์ ํฌ๊ฒ 4๊ฐ์ง๋ก ๊ตฌ๋ถ๋ฉ๋๋ค. ์์์ฑ (.. 4.1 Spring MVC 1) Spring MVC๋? MVC๋? MVC๋ Model-View-Controller์ ์ฝ์์ ๋๋ค. ์๋๋ ์ ๋ก์ค ์ฐ๊ตฌ์์์ ์ผํ๋ ํธ๋คผ๊ทธ๋ฒ ๋ฆฐ์ฆ์ปค๊ทธ๊ฐ ์ฒ์์ผ๋ก ์๊ฐํ ๊ฐ๋ ์ผ๋ก, ๋ฐ์คํธํฑ ์ดํ๋ฆฌ์ผ์ด์ ์ฉ์ผ๋ก ๊ณ ์๋์์ต๋๋ค. Model : ๋ชจ๋ธ์ ๋ทฐ๊ฐ ๋ ๋๋งํ๋๋ฐ ํ์ํ ๋ฐ์ดํฐ์ ๋๋ค. ์๋ฅผ ๋ค์ด ์ฌ์ฉ์๊ฐ ์์ฒญํ ์ํ ๋ชฉ๋ก์ด๋, ์ฃผ๋ฌธ ๋ด์ญ์ด ์ด์ ํด๋นํฉ๋๋ค. View : ์น ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ทฐ(View)๋ ์ค์ ๋ก ๋ณด์ด๋ ๋ถ๋ถ์ด๋ฉฐ, ๋ชจ๋ธ์ ์ฌ์ฉํด ๋ ๋๋ง์ ํฉ๋๋ค. ๋ทฐ๋ JSP, JSF, PDF, XML๋ฑ์ผ๋ก ๊ฒฐ๊ณผ๋ฅผ ํํํฉ๋๋ค. Controller : ์ปจํธ๋กค๋ฌ๋ ์ฌ์ฉ์์ ์ก์ ์ ์๋ตํ๋ ์ปดํฌ๋ํธ์ ๋๋ค. ์ปจํธ๋กค๋ฌ๋ ๋ชจ๋ธ์ ์ ๋ฐ์ดํธํ๊ณ , ๋ค๋ฅธ ์ก์ ์ ์ํํฉ๋๋ค. MVC Model 1 ์ํคํ ์ฒ ๋ธ๋ผ์ฐ์ ๊ฐ ์์ฒญ์ ํ๊ฒ.. 3.3 Spring JDBC 1) Spring JDBC ์๊ฐ Spring JDBC JDBC ํ๋ก๊ทธ๋๋ฐ์ ๋ณด๋ฉด ๋ฐ๋ณต๋๋ ๊ฐ๋ฐ ์์๊ฐ ์์ต๋๋ค. ์ด๋ฌํ ๋ฐ๋ณต์ ์ธ ์์๋ ๊ฐ๋ฐ์๋ฅผ ์ง๋ฃจํ๊ฒ ๋ง๋ญ๋๋ค. ๊ฐ๋ฐํ๊ธฐ ์ง๋ฃจํ JDBC์ ๋ชจ๋ ์ ์์ค ์ธ๋ถ์ฌํญ์ ์คํ๋ง ํ๋ ์์ํฌ๊ฐ ์ฒ๋ฆฌํด์ค๋๋ค. ๊ฐ๋ฐ์๋ ํ์ํ ๋ถ๋ถ๋ง ๊ฐ๋ฐํ๋ฉด ๋ฉ๋๋ค. Spring JDBC - ๊ฐ๋ฐ์๊ฐ ํด์ผ ํ ์ผ์? Spring JDBC ํจํค์ง org.springframework.jdbc.core JdbcTemplate ๋ฐ ๊ด๋ จ Helper ๊ฐ์ฒด ์ ๊ณต org.springframework.jdbc.datasource DataSource๋ฅผ ์ฝ๊ฒ ์ ๊ทผํ๊ธฐ ์ํ ์ ํธ ํด๋์ค, ํธ๋์ ์ ๋งค๋์ ธ ๋ฐ ๋ค์ํ DataSource ๊ตฌํ์ ์ ๊ณต org.springframework.jdbc.object.. 3.2 Spring Test 1) Test ๊ฐ์ 1. ํ ์คํ ์ด๋ ๋ฌด์์ธ๊ฐ? ์๊ตฌํ๋ ์์ค์ ๋ง์กฑํ๋์ง ํ์ธํ๊ธฐ ์ํด ๊ฒฐํจ์ ๋ฐ๊ฒฌํ๋ ๊ณผ์ ์ด๋ผ๊ณ ๋งํ ์ ์์ต๋๋ค. ์ ํต์ ์ธ ํ ์คํ ๊ฐ๋ ์ ์์ฉ ํ๋ก๊ทธ๋จ ๋๋ ์์คํ ์ด ์ ์๋ํ๋์ง ํ์ธํ๋ ๊ฒ์ ๋๋ค. ํ์ฌ์ ํ ์คํ ๊ฐ๋ ์ ์ฌ์ฉ์์ ๊ธฐ๋ ์์ค๊ณผ ์๊ตฌ ์ฌํญ์ ๋ง๊ฒ ๊ตฌํ๋๊ณ ๋์ํ๋์ง๋ฅผ ํ์ธํ๊ณ ์ด๋ฅผ ํตํด ๊ฒฐํจ์ ๋ฐ๊ฒฌํ๊ณ , ์ต์ข ์ ์ผ๋ก ๊ฒฐํจ ๋ฐ์ดํฐ๋ฅผ ๊ทผ๊ฐ์ผ๋ก ๊ฐ๋ฐ ํ๋ก์ ํธ์ ๋ฆฌ์คํฌ(Risk)์ ๋ํ ์์น์ ์ธ ํ๋จ ๊ทผ๊ฑฐ๋ฅผ ์์ฌ ๊ฒฐ์ ๊ถ์(ํ๋ก์ ํธ ๊ด๋ฆฌ์ ๋ฑ)์๊ฒ ์ ๋ฌํ๋ ๊ฒ์ ๋งํฉ๋๋ค. ๊ฐ๋ฐ ํ๋ก์ ํธ ์ด๊ธฐ์ ๊ฐ๋ฐ ์ค๊ฐ ์ฐ์ถ๋ฌผ(Work products)์ ํ ์คํ ๊ด์ ์์ ๋ฆฌ๋ทฐ(Review)ํ๊ณ , ํ ์คํธ ์ผ์ด์ค๋ฅผ ๋ฏธ๋ฆฌ ๋ง๋๋ ๊ณผ์ ์์ ๊ฒฐํจ์ ๋ฐ๊ฒฌํ๋ ์์ (๊ฒฐํจ ์๋ฐฉ ํ๋)๋ ํ ์คํ ํ๋์ ์ค์ํ ๋ถ.. 3.1 Spring Core ๋ชจ๋ ์ค์ต ์ฝ๋(+์ฃผ์) ๋งํฌ: ํ๋ก์ ํธ๋ช : diexam01 1) Spring์ด๋? Spring Framework๋? ์ํฐํ๋ผ์ด์ฆ๊ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ ์ ์๋ ๊ฐ๋ฒผ์ด ์๋ฃจ์ ์ด์, ์์ค-์คํ-์(One-Stop-Shop) ์ํ๋ ๋ถ๋ถ๋ง ๊ฐ์ ธ๋ค ์ฌ์ฉํ ์ ์๋๋ก ๋ชจ๋ํ๊ฐ ์ ๋์ด ์์ต๋๋ค. IoC ์ปจํ ์ด๋์ ๋๋ค. ์ ์ธ์ ์ผ๋ก ํธ๋์ญ์ ์ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ์์ ํ ๊ธฐ๋ฅ์ ๊ฐ์ถ MVC Framework๋ฅผ ์ ๊ณตํฉ๋๋ค. AOP ์ง์ํฉ๋๋ค. ์คํ๋ง์ ๋๋ฉ์ธ ๋ ผ๋ฆฌ ์ฝ๋์ ์ฝ๊ฒ ๋ถ๋ฆฌ๋ ์ ์๋ ๊ตฌ์กฐ๋ก ๋์ด ์์ต๋๋ค. ํ๋ ์ ์ํฌ ๋ชจ๋ ์คํ๋ง ํ๋ ์์ํฌ๋ ์ฝ 20๊ฐ์ ๋ชจ๋๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค. ํ์ํ ๋ชจ๋๋ง ๊ฐ์ ธ๋ค ์ฌ์ฉํ ์ ์์ต๋๋ค. AOP์ ์ธ์คํธ๋ฃจ๋ฉํ ์ด์ (Instrumentation) spring-AOP : A.. 2.6 JSTL & EL 1) EL(Expression Language) ํํ ์ธ์ด์ ๊ธฐ๋ณธ ๊ฐ์ฒด ์ฌ์ฉ ์ ํํ ์ธ์ด์ ๋ฐ์ดํฐ ํ์ ๋ถ๋ฆฌ์ธ ํ์ - true์ false ์ ์ํ์ - 0~9๋ก ์ด๋ฃจ์ด์ง ์ ์ ๊ฐ ์์์ ๊ฒฝ์ฐ '-'๊ฐ ๋ถ์ ์ค์ํ์ - 0~9๋ก ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ, ์์์ ('.')์ ์ฌ์ฉํ ์ ์๊ณ , 3.24e3๊ณผ ๊ฐ์ด ์ง์ํ์ผ๋ก ํํ ๊ฐ๋ฅํ๋ค. ๋ฌธ์์ด ํ์ - ๋ฐ์ดํ( ' ๋๋" )๋ก ๋๋ฌ์ผ ๋ฌธ์์ด. ๋ง์ฝ ์์ ๋ฐ์ดํ(')๋ฅผ ์ฌ์ฉํด์ ํํํ ๊ฒฝ์ฐ ๊ฐ์ ํฌํจ๋ ์์ ๋ฐ์ดํ๋ \' ์ ๊ฐ์ด \ ๊ธฐํธ์ ํจ๊ป ์ฌ์ฉํด์ผ ํ๋ค. \ ๊ธฐํธ ์์ฒด๋ \\ ๋ก ํ์ํ๋ค. ๋ ํ์ - null ๊ฐ์ฒด ์ ๊ทผ ๊ท์น ํํ 1์ด๋ ํํ 2๊ฐ null์ด๋ฉด null์ ๋ฐํํ๋ค. ํํ1์ด Map์ผ ๊ฒฝ์ฐ ํํ2๋ฅผ key๋กํ ๊ฐ์ ๋ฐํํ๋ค. ํํ1์ด Lis.. 2.5 Scope 1) scope๋? 4๊ฐ์ง Scope page : ํ์ด์ง ๋ด์์ ์ง์ญ๋ณ์์ฒ๋ผ ์ฌ์ฉ pageContext (์์ ใ ) Request : http์์ฒญ์ WAS๊ฐ ๋ฐ์์ ์น ๋ธ๋ผ์ฐ์ ์๊ฒ ์๋ตํ ๋๊น์ง ๋ณ์๊ฐ ์ ์ง๋๋ ๊ฒฝ์ฐ ์ฌ์ฉ ํ๋์ ์์ฒญ์ด ๋ค์ด์์ ์๋ต์ด ๋๊ฐ ๋๊น์ง HttpServletRequest Session : ์น ๋ธ๋ผ์ฐ์ ๋ณ๋ก ๋ณ์๊ฐ ๊ด๋ฆฌ๋๋ ๊ฒฝ์ฐ ์ฌ์ฉ session ๊ฐ์ฒด๊ฐ ์์ฑ๋์ด ์๋ฉธ๋ ๋๊น์ง (์์ฒญ์ด ํ๋๊ฐ ์๋๋ผ ์ฌ๋ฌ ๊ฐ์ ์์ฒญ์ด ๋ค์ด์๋ ๊ณ์ ๋จ์์๋) ์ํ์ ์ง๋ฅผ ํ ๋ ์ฌ์ฉํ๋ scope, HttpSession Application : ์น ์ดํ๋ฆฌ์ผ์ด์ ์ด ์์๋๊ณ ์ข ๋ฃ๋ ๋๊น์ง ๋ณ์๊ฐ ์ ์ง๋๋ ๊ฒฝ์ฐ ์ฌ์ฉ ํ๋์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์์ฑ๋์ด ์ด๊ฒ ์๋ฉธ๋ ๋๊น์ง ServletContext (์์ ใ .. 2.4 JSP 1) JSP๋? ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ jsp๋ ์์ฒด๊ฐ ๋์ํ๋ ๊ฒ ์๋๋ผ ๋ชจ๋ jsp ์๋ธ๋ฆฟ์ผ๋ก ๋ฐ๋์ด์ ๋์ํด์ jsp๋ WebContent ์์ ์์. ์์ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ง๋ค์ด๋ ๋๊ณ . ๋งจ ์ ์ง์๋ฌธ, ์ด๋ฐ ์ง์๋ฅผ ๋ฃ๋ ๊ฒ์ JSP๋ฅผ ์คํํ๋ WAS ๋ฐ ๊บฝ์ ์ ์๋ฐ ์ฝ๋ 1๋ถํฐ 10๊น์ง์ ํฉ : JSP ๋ฑ์ฅ ๋ฐฐ๊ฒฝ ๋ง์ดํฌ๋ก์ํํธ์์ ASP(Active Server Page)๋ผ๋ ์ฝ๊ฒ ์น์ ๊ฐ๋ฐํ ์ ์๋ ์คํฌ๋ฆฝํธ(script) ์์ง์ ๋ฐํํจ (1998๋ ) 1997๋ ์ ๋ฐํ๋ ์๋ธ๋ฆฟ์ ASP์ ๋นํ์ฌ ์๋์ ์ผ๋ก ๊ฐ๋ฐ ๋ฐฉ์์ด ๋ถํธํจ ASP์ ๋ํญํ๊ธฐ ์ํ์ฌ 1999๋ ์ฌ๋ง์ดํฌ๋ก์์คํ ์ฆ์์ JSP๋ฅผ ๋ฐํ JSP๋ ์ค์ ๋ก ์๋ธ๋ฆฟ ๊ธฐ์ ์ ์ฌ์ฉ ํญ์ jsp ๋ ์๋ธ๋ฆฟ์ผ๋ก ๋ฐ๋๊ณ ์ด ๋ฐ๋ ์๋ธ๋ฆฟ์ด ์คํ๋๋ .. 2.3 Servlet 1) Servlet ์ด๋? dynamic web ์ค๋ฅ https://skypotato-note.tistory.com/136 https://stackoverflow.com/questions/4119448/the-import-javax-servlet-cant-be-resolved ์๋ฐ ์น ์ดํ๋ฆฌ์ผ์ด์ (Java Web Application) WAS์ ์ค์น(deploy)๋์ด ๋์ํ๋ ์ดํ๋ฆฌ์ผ์ด์ ์ ๋๋ค. ์๋ฐ ์น ์ดํ๋ฆฌ์ผ์ด์ ์๋ HTML, CSS, ์ด๋ฏธ์ง, ์๋ฐ๋ก ์์ฑ๋ ํด๋์ค(Servlet๋ ํฌํจ๋จ, package, ์ธํฐํ์ด์ค ๋ฑ), ๊ฐ์ข ์ค์ ํ์ผ ๋ฑ์ด ํฌํจ๋ฉ๋๋ค. ์๋ฐ ์น ์ดํ๋ฆฌ์ผ์ด์ ์ ํด๋ ๊ตฌ์กฐ web.xml ํ์ผ ์ค์ํ๋ค ์ ๋ ์๋ธ๋ฆฟ์ด๋? ์๋ฐ ์น ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ฑ์์ ์ค ๋์ ์ธ ์ฒ๋ฆฌ๋ฅผ ํ๋ ํ๋ก๊ทธ๋จ์.. 2.2 ์น ๊ฐ๋ฐํ๊ฒฝ ์ค์ 1) Tomcat ๋ค์ด๋ฐ๊ธฐ ๋ฐ ์ค์นํ๊ธฐ Apache Tomcat์ด๋? ์ํ์น ํฐ์บฃ(Apache Tomcat)์ ์ํ์น ์ํํธ์จ์ด ์ฌ๋จ(Apache Software Foundation, ASF)์์ ๊ฐ๋ฐํ ์ธ๊ณ์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ WAS(Web Application Server)์ ๋๋ค. ์ปดํจํฐ์ ์ด์์ฒด์ ๋ฅผ ์ค์นํด์ผ๋ง ์ปดํจํฐ๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ฒ์ฒ๋ผ, ์๋ฐ๋ฅผ ์ด์ฉํ์ฌ ์์ฑ๋ ์น ์ดํ๋ฆฌ์ผ์ด์ ์ WAS๊ฐ ์์ด์ผ๋ง ์คํํ ์ ์์ต๋๋ค. ์ด๋ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ WAS๊ฐ ์ํ์น ํฐ์บฃ์ด๋ผ๊ณ ๋งํ ์ ์์ต๋๋ค. ์ํ์น ํฐ์บฃ์ ์คํ์์ค ์ํํธ ์จ์ด๋ก์จ ๋๊ตฌ๋ ๋ฌด๋ฃ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ฐธ๊ณ ๋ก Tomcat์ '์๊ณ ์์ด'๋ฅผ ๋ปํฉ๋๋ค. ํฐ๊ณผ ์ ๋ฆฌ์ ํฐ์ด ์๊ฐ๋๊ธฐ๋ ํฉ๋๋ค. Tomcat 8๋ฒ์ ์ JDK 7์ด์์์ ๋์ํ๋ฉฐ.. 2.1 Web๊ฐ๋ฐ์ ์ดํด 1) ์น ํ๋ก๊ทธ๋๋ฐ์ ์ํ ํ๋ก๊ทธ๋จ ์ธ์ด๋ค ์ ๊ธ ์ธ์ด ์ ๊ธ ์ธ์ด๋ ๊ธฐ๊ณ ์ค์ฌ์ ์ธ์ด๋ผ๊ณ ๋งํ ์ ์์ต๋๋ค. ๊ธฐ๊ณ๊ฐ ์ง์ ์์๋ค์ ์ ์๋ ๋ง๋ก 'ํ๋ก๊ทธ๋จ ์ฝ๋๋ฅผ ์์ฑํ๋ค'๊ณ ๋งํ ์ ์์ต๋๋ค. ์ปดํจํฐ๋ ์ ๊ธฐ๋ก ๋์ํฉ๋๋ค. ์ฆ, ์ ๊ธฐ์ ํธ์ธ ์ผ์ก๋ค(on)์ ๊บผ์ก๋ค(off) 2๊ฐ์ง ์ํ ๊ฐ์ผ๋ก ๋์ํ๋ค๊ณ ๋งํ ์ ์์ต๋๋ค. ๋ณดํต ์ซ์๋ก ํํํ๋ฉด ์ผ์ก๋ค๋ 1, ๊บผ์ก๋ค๋ 0์ ์๋ฏธํฉ๋๋ค. 0๊ณผ 1๋ก ํํ๋๋ ์ซ์๋ฅผ ์ฐ๋ฆฌ๋ 2์ง์๋ผ๊ณ ๋งํฉ๋๋ค. 2์ง์๋ก ์ด๋ค์ง ๊ฐ์ผ๋ก ์์ฑํ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ๊ธฐ๊ณ์ด(Machine Language)๋ผ๊ณ ๋งํฉ๋๋ค. ์ซ์๋ก๋ง ๋์ด ์๊ธฐ ๋๋ฌธ์ ์ ์ง๋ณด์๋ ๊ต์ฅํ ์ด๋ ต์ต๋๋ค. ์ซ์๋ก๋ง ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ ์ฌ์ฉ์ด ๊ต์ฅํ ์ด๋ ค์ ์ต๋๋ค. ๊ทธ๋์, ์ด ์ซ์๋ก ๋ ๋ฌธ์ฅ๊ณผ 1:1๋ก ๋์ํ๋ ๊ธฐํธ๋ฅผ.. 1.5 JDBC 1) JDBC๋? JDBC ๊ฐ์ JDBC(Java Database Connectivity)์ ์ ์ - ์๋ฐ๋ฅผ ์ด์ฉํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์๊ณผ SQL ๋ฌธ์ฅ์ ์คํ, ๊ทธ๋ฆฌ๊ณ ์คํ ๊ฒฐ๊ณผ๋ก ์ป์ด์ง ๋ฐ์ดํฐ์ ํธ๋ค๋ง์ ์ ๊ณตํ๋ ๋ฐฉ๋ฒ๊ณผ ์ ์ฐจ์ ๊ดํ ๊ท์ฝ - ์๋ฐ ํ๋ก๊ทธ๋จ ๋ด์์ SQL๋ฌธ์ ์คํํ๊ธฐ ์ํ ์๋ฐ API - SQL๊ณผ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ํตํฉ ์ ๊ทผ ์ค ํ ํํ JAVA๋ ํ์ค ์ธํฐํ์ด์ค์ธ JDBC API๋ฅผ ์ ๊ณต ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฒค๋, ๋๋ ๊ธฐํ ์จ๋ํํฐ์์๋ JDBC ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ๋๋ผ์ด๋ฒ(driver)๋ฅผ ์ ๊ณตํ๋ค. JDBC ํ๊ฒฝ ๊ตฌ์ฑ JDK ์ค์น JDBC ๋๋ผ์ด๋ฒ ์ค์น - Maven์ ๋ค์๊ณผ ๊ฐ์ ์์กด์ฑ์ ์ถ๊ฐํ๋ค. MySQL์ฌ์ดํธ์์ ๋ค์ด๋ก๋ ํ๋ค. mysql mysql-connector-java ${mysq.. 1.4 Maven 1) Maven ์ด๋? Maven์ด๋? Maven์ ์ง๊ธ๊น์ง ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ๊ธฐ ์ํด ๋ฐ๋ณต์ ์ผ๋ก ์งํํด์๋ ์์ ๋ค์ ์ง์ํ๊ธฐ ์ํ์ฌ ๋ฑ์ฅํ ๋๊ตฌ์ ๋๋ค. Maven์ ์ฌ์ฉํ๋ฉด ๋น๋(Build), ํจํค์ง, ๋ฌธ์ํ, ํ ์คํธ์ ํ ์คํธ ๋ฆฌํฌํ , git, ์์กด์ฑ๊ด๋ฆฌ, svn๋ฑ๊ณผ ๊ฐ์ ํ์๊ด๋ฆฌ์๋ฒ์ ์ฐ๋(SCMs), ๋ฐฐํฌ ๋ฑ์ ์์ ์ ์์ฝ๊ฒ ํ ์ ์์ต๋๋ค. Maven์ ์ดํดํ๋ ค๋ฉด CoC(Convention over Configuration)๋ผ๋ ๋จ์ด๋ฅผ ๋จผ์ ์ดํดํด์ผ ํฉ๋๋ค. CoC๋ ์ผ์ข ์ ๊ด์ต์ ๋งํ๋๋ฐ, ์๋ฅผ ๋ค์๋ฉด ํ๋ก๊ทธ๋จ์ ์์คํ์ผ์ ์ด๋ค ์์น์ ์์ด์ผ ํ๊ณ , ์์ค๊ฐ ์ปดํ์ผ๋ ํ์ผ๋ค์ ์ด๋ค ์์น์ ์์ด์ผ ํ๊ณ ๋ฑ์ ๋ฏธ๋ฆฌ ์ ํด๋จ๋ค๋ ๊ฒ์ ๋๋ค. ์ด ๋ง์ ๊ด์ต์ ์ด๋ฏธ ์ต์ํ ์ฌ์ฉ์๋ ์ฝ๊ฒ Maven์ ์ฌ์ฉํ .. 1.3 ๊ฐ๋ฐํ๊ฒฝ ์ค์ 1) JDK ๋ค์ด๋ฐ๊ธฐ ๋ฐ ์ค์นํ๊ธฐ ์๋ฐ ํ๋ก๊ทธ๋จ์ ํ๋ซํผ์ ๋ ๋ฆฝ์ ์ด์ง๋ง ์๋ฐ๋ฅผ ์คํ์์ผ์ฃผ๋ JVM ์์ฒด๋ ํ๋ซํผ ์ข ์์ ์ด๋ค. jdk 1.8.XXX ๋ง ๋ค์ด๋ฐ์ผ๋ฉด ๋๋ค. jre๋ jdk์ ํฌํจ๋์ด ์๋ค. ์ ๋ ๊ธฐ์กด์ ๊น์๋จ๋ ๋ฒ์ ๊ณผ ์ถฉ๋ํด์ ๊ฝค๋ ๊ณ ์์ ํ์ต๋๋ค... JDK: Java Development Kit ์๋ฐ ์์ฉ ๊ฐ๋ฐ ํ๊ฒฝ์ผ๋ก ๊ฐ๋ฐ์ ํ์ํ ๋๊ตฌ๋ฅผ ํฌํจํ๊ณ ์๋ค. ์ปดํ์ผ๋ฌ ๋ฐ ๋๊ตฌ, JRE, ํด๋์ค์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์์ค, ์๋ฐ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ํ ์์ค ๋ฑ JRE: JAVA ์๋ฐ ์คํ ํ๊ฒฝ์ผ๋ก JVM์ด ํฌํจ๋์ด ์๋ค. ์๋ฐ ์คํ ํ๊ฒฝ๋ง ํ์ํ ๊ฒฝ์ฐ JRE๋ง ๋ฐ๋ก ๋ค์ด์ด ๊ฐ๋ฅํ๋ค. 2) ํ๊ฒฝ์ค์ ํ๊ธฐ ํ๊ฒฝ ๋ณ์ ๊ณ ์น๊ณ java -version, javac -version ๋ฒ์ ๋ง๋์ง ํ์ธ 3) ์ดํด๋ฆฝ.. 1.2 SQL 1) SQL์ด๋? SQL(Structured Query Language) SQL์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ค ์ฝ๊ฒ ๊ฒ์ํ๊ณ ์ถ๊ฐ, ์ญ์ , ์์ ๊ฐ์ ์กฐ์์ ํ ์ ์๋๋ก ๊ณ ์๋ ์ปดํจํฐ ์ธ์ด์ ๋๋ค. ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ฐ์ดํฐ๋ฅผ ์กฐ์ํ๊ณ ์ฟผ๋ฆฌํ๋ ํ์ค ์๋จ์ ๋๋ค. DML (Data Manipulation Language): ๋ฐ์ดํฐ๋ฅผ ์กฐ์ํ๊ธฐ ์ํด ์ฌ์ฉํฉ๋๋ค. INSERT, UPDATE, DELETE, SELECT ๋ฑ์ด ์ฌ๊ธฐ์ ํด๋นํฉ๋๋ค. DDL (Data Definition Language): ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์คํค๋ง๋ฅผ ์ ์ํ๊ฑฐ๋ ์กฐ์ํ๊ธฐ ์ํด ์ฌ์ฉํฉ๋๋ค. CREATE, DROP, ALTER ๋ฑ์ด ์ฌ๊ธฐ์ ํด๋นํฉ๋๋ค. DCL (Data Control Language) : ๋ฐ์ดํฐ๋ฅผ ์ ์ดํ๋ ์ธ์ด์ ๋๋ค. ๊ถํ์ ๊ด๋ฆฌํ๊ณ , ๋ฐ.. 1.1 MySQL 1) intro ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ Q> ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ ์ ์ด๋ฆฐ์ด๋ ์ ์ ์์ ์ ๋๋ก ์ค๋ช ํด์ฃผ์ธ์. A> ๋์๊ด์ ์๋ ์ฑ ๋ค์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ผ๊ณ ํ๋ค๋ฉด, ๋์๊ด ์ฌ์๋ถ๋ค์ด๋ ๋์ ์ ๋ณด๋ฅผ ์ฐพ์์ฃผ๋ ์ปดํจํฐ๋ฅผ DBMS๋ผ๊ณ ๋ณผ ์ ์์ต๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ธฐ๋ณธ๊ฐ๋ (์ ์) ๋ฐ์ดํฐ์ ์งํฉ (a Set of Data) ์ฌ๋ฌ ์์ฉ ์์คํ (ํ๋ก๊ทธ๋จ)๋ค์ ํตํฉ๋ ์ ๋ณด๋ค์ ์ ์ฅํ์ฌ ์ด์ํ ์ ์๋ ๊ณต์ฉ(share) ๋ฐ์ดํฐ์ ์งํฉ ํจ์จ์ ์ผ๋ก ์ ์ฅ, ๊ฒ์, ๊ฐฑ์ ํ ์ ์๋๋ก ๋ฐ์ดํฐ ์งํฉ๋ค๋ผ๋ฆฌ ์ฐ๊ด์ํค๊ณ ์กฐ์งํ๋์ด์ผ ํ๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํน์ฑ ์ค์๊ฐ ์ ๊ทผ์ฑ(Real-time Accessability) - ์ฌ์ฉ์์ ์๊ตฌ๋ฅผ ์ฆ์ ์ฒ๋ฆฌํ ์ ์๋ค. ๊ณ์์ ์ธ ๋ณํ(Continuous Evol.. ์ด์ 1 ๋ค์