๐๋ฐฑ์๋ : BackEnd
์๊ฒ๋ ์ 1. @RequestParam์ ํตํด์ ๋ฐ์ ์ ์๋ ๋ฐ์ดํฐQuery StringForm ํ์ ๋ฐ์ดํฐ (html form)๋ฉํฐํํธ ๋ฐ์ดํฐ : multipart/form-data ํ์์ ์์ฒญ์์ ํผ ํ๋์ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ ์ ์์์ ์ธ๊ฐ์ง๋ฅผ ๋ค ๋ฐ์ ์ ์์ต๋๋ค. 2. @RequestBody๋ ๋ณํ๊ณผ์ , @ModelAttribute์ ๋งตํ๊ณผ์ @RequestBodyJSON, XML, Text๋ฑ์ ๋ฐ์ดํฐ๊ฐ ์ ํฉํ HttpMessageConverter์ ํตํด ํ์ฑ๋์ด Java ๊ฐ์ฒด๋ก ๋ณํ ๋ฉ๋๋ค.@RequestBody๋ฅผ ์ฌ์ฉํ ๊ฐ์ฒด๋ ๋ฐ์ธ๋ฉ์ ์ํ ์์ฑ์๋, setter๋ฉ์๋๊ฐ ํ์ ์์ต๋๋ค.๋จ, ์ง๋ ฌํ๋ฅผ ์ํด ๊ธฐ๋ณธ ์์ฑ์์ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ ์ํ getter๋ setter ์ค 1๊ฐ์ง๋ ์ ์๋์ด์ผ ํฉ๋๋ค..
๐๋ฐฑ์๋ : BackEnd
๋ก๊น
์ด ์ ํ์ํ ๊น?๋ฐฐํฌํ๊ฒฝ์์ ๋์ ์ํ๋ฅผ ํ์ธํ๊ธฐ ์ํด์ ํ์ํฉ๋๋ค.๊ธฐ์กด์ System.out.println(), System.err.println()๊ณผ ๊ฐ์ ํ๋ก์ฐ๋ก๋ ํ๊ณ๊ฐ ์์ต๋๋ค.๋ก๊น
์ด ๊ธฐ๋กํ๋ ๋ ๊ฐ์ง ์ฌํญ์๋น์ค ๋์ ์ํ์ฅ์ (exceptino || error)๋ก๊น
ํ๋ ์์ํฌSLF4JLogbackLog4jnlogSystem.out.println()๋ณด๋ค ์ข์ ์ ์ถ๋ ฅ ํ์์ ์ง์ ํ ์ ์์๋ก๊ทธ ๋ ๋ฒจ์ ์ค์ ํ์ฌ ๋จ๊ธฐ๊ณ ์ถ์ ๋ก๊ทธ๋ฅผ ๋ณ๋๋ก ์ง์ ํ ์ ์์๊ฐ๋ฐ ์๋ฒ์์๋ ๋ชจ๋ ๋ก๊ทธ๋ฅผ ์ถ๋ ฅํ๊ณ , ์ด์์๋ฒ์์๋ ์ถ๋ ฅํ์ง ์๋ ๋ฑ ๋ก๊ทธ๋ฅผ ์ํฉ์ ๋ง๊ฒ ์กฐ์ ํ ์ ์๋ค์ฝ์ ๋ฟ ์๋๋ผ, ํ์ผ์ด๋ ๋คํธ์ํฌ๋ฑ ๋ก๊ทธ๋ฅผ ๋ณ๋์ ์์น์ ๋จ๊ธธ ์ ์์์ฑ๋ฅ๋ System.out.println()๋ณด๋ค ์ข์!๋ก๊ทธ๋ ๋ฒจ(Fatal..
๐๋ฐฑ์๋ : BackEnd
์์ ๋ฑ
ํน ์๋น์ค๋ฅผ ์ฃผ์ ๋ก ํ ํ๋ก์ ํธ๋ฅผ ์งํํ์ง๋ง, ๋์์ฑ์ ๋ํ ์ฒ๋ฆฌ๋ฅผ ํด์ฃผ์ง ๋ชป ํ ์ ์ ๋ณด์ํ๊ธฐ ์ํด ๊ณต๋ถํ ๋ด์ฉ์ ์ ๋ฆฌํ ๊ธ์
๋๋ค. ๋์์ฑ ์ด์ ํด๊ฒฐ๋ฐฉ๋ฒ synchronized ํ๋์ ํ๋ก์ธ์ค์์๋ง ๋์. ์ฆ ์๋ฒ๊ฐ ์ฌ๋ฌ๋์ด๊ณ ์๋ก ๋ค๋ฅธ ์๋ฒ์์ ๋์์ ์ ๊ทผํ๋ค๋ฉด synchronized ๋ ๊ธฐ๋ฅ์ ๋ฐํํ ์ ์๋ค. @Transactional ์ ์ฌ์ฉํ๋ฉด, ํธ๋์ญ์
์ด ์ปค๋ฐํ ๋ ์ ๊น์ ํ
์ ๋ค๋ฅธ ์ค๋ ๋๊ฐ ์ ๊ทผํ ์ ์์ด์ ๋์์ฑ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค. Lock (DB์์ ์ฌ๊ณตํ๋ ๋ฝ๊ธฐ๋ฅ์ ์ฌ์ฉ) Pessimistic Lock (๋น๊ด์ ๋ฝ) row๋ table ๋จ์๋ก ๋ฝ์ ๊ฒ ์์ ์์ฒญ์ ๋ฐ๋ฅธ ๋์์ฑ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๊ฒ์ด๋ผ๊ณ ์์ํ๊ณ ๋ฝ์ ๊ฑธ์ด๋ฒ๋ฆฌ๋ ๋น๊ด์ ๋ฝ ๊ณต์ ๋ฝ(Shared Lock)๊ณผ ๋ฒ ํ๋ฝ..
๐๋ฐฑ์๋ : BackEnd
websocket์ ๋ํด ๊ณต๋ถํ๊ณ ์ ๋ฆฌํ ๊ธ์
๋๋ค. ์น์์ผ ํต์ ์ ์์ ์น์์ผ ํต์ ์ ์์์ HTTP request ์
๋๋ค. ์ด๋ HTTP request ํค๋์๋ Connection : "Upgrade", Upgrade : "websocket"์ ํฌํจํ๊ณ ์์ต๋๋ค. GET /spring-websocket-portfolio/portfolio HTTP/1.1 Host: localhost:8080 Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: Uc9l9TMkWGbHFD2qnFHltg== Sec-WebSocket-Protocol: v10.stomp, v11.stomp Sec-WebSocket-Version: 13 Origin: http://localhos..
๐๋ฐฑ์๋ : BackEnd
์คํ๋ง ์ํ๋ฆฌํฐ์ ๋์ ์๋ฆฌ์ ๋ํด ๊ณต๋ถํ๊ณ ์ ๋ฆฌํ ๋ด์ฉ์
๋๋ค. ์ ์ฒด ๋์๊ณผ์ ํํฐ๋? ์คํ๋ง ์ปจํ
์ด๋ ์ธ๋ถ์ ์กด์ฌํ์ฌ ์คํ๋ง๊ณผ ๋ฌด๊ดํ ์์์ ๋ํด ๋์ํฉ๋๋ค. ๋ณดํต web.xml์ ๋ฑ๋ก. ์ธ์ฝ๋ฉ ๋ณํ ์ฒ๋ฆฌ, XSS ๋ฐฉ์ด ๋ฑ์ ์์ฒญ์ ๋ํ ์ฒ๋ฆฌ๋ก ์ฌ์ฉ๋ฉ๋๋ค. ์ธ์ฆ๊ณผ ์ธ๊ฐ์ ์ฐจ์ด์ ์ธ์ฆ : ํด๋น ์ฌ์ฉ์๊ฐ ๋ณธ์ธ์ด ๋ง๋์ง๋ฅผ ํ์ธํ๋ ์ ์ฐจ ์ธ๊ฐ : ์ธ์ฆ๋ ์ฌ์ฉ์๊ฐ ์์ฒญ๋ ์์์ ๋ํด ์ ๊ทผ์ด ๊ฐ๋ฅํ๊ฐ๋ฅผ ๊ฒฐ์ ํ๋ ์ ์น Servlet Container์ Spring Container DelegatingFilterProxy Servlet Container์ Spring์ Spring Container๋ฅผ ์ฐ๊ฒฐํด์ฃผ๋ ํํฐ์
๋๋ค. servlet container์ ์กด์ฌํ๋ ํํฐ์
๋๋ค. ํํฐ(Filter)๋ ์คํ๋ง์์ ๊ด๋ฆฌ๊ฐ..
๐๋ฐฑ์๋ : BackEnd
REST : Representational State Transfer ํ๋์ URI๋ ํ๋์ ๊ณ ์ ํ ๋ฆฌ์์ค๋ฅผ ๋ํํ๋๋ก ์ค๊ฒ๋๋ค๋ ๊ฐ๋
์ ์ ์ก๋ฐฉ์์ ๊ฒฐํฉํด์ ์ํ๋ ์์
์ ์ง์ ํ๋ค. URI + GET / POST / PUT / DELETE HTTP URI๋ฅผ ํตํด ์ ์ดํ ์์์ ๋ช
์ํ๊ณ , HTTP Method(GET, POST, PUT, DELETE)๋ฅผ ํตํด ํด๋น ์์(Resource)์ ์ ์ดํ๋ ๋ช
๋ น์ ๋ด๋ฆฌ๋ ๋ฐฉ์์ ์ํคํ
์ฒ ๊ธฐ์กด Service : ์์ฒญ์ ๋ํ ์ฒ๋ฆฌ๋ฅผ ํ ํ ๊ฐ๊ณต๋ data๋ฅผ ์ด์ฉํด ํน์ ํ๋ซํผ์ ์ ํฉํ ํํ์ View๋ก ๋ง๋ค์ด์ ๋ฐํ. REST Service : data์ฒ๋ฆฌ๋ง ํ๋ค๊ฑฐ๋, ์ฒ๋ผ ํ ๋ฐํ๋ data๊ฐ ์๋ค๋ฉด JSON์ด๋ XMLํ์์ผ๋ก ์ ๋ฌ. View์ ๋ํด์๋ ์ ๊ฒฝ์ธ ํ์๊ฐ..
๐๋ฐฑ์๋ : BackEnd
MyBatis Java Object์ SQL๋ฌธ ์ฌ์ด์ ์๋ Mapping ๊ธฐ๋ฅ์ ์ง์ํ๋ ORM Framework MyBatis๋ SQL์ ๋ณ๋์ ํ์ผ(XML ํน์ ์)๋ก ๋ถ๋ํด์ ๊ด๋ฆฌ Object ์ SQL ์ฌ์ด์ parameter mapping ์์
์ ์๋์ผ๋ก ํด ์ค. ์๋ฐ์ SQL์ ์ฐ๊ฒฐ๋ง ํด์ค๋ค! JAVA - MyBatis - MySQL myBatis → Java์ myBatis → spring ๋ฐ๋ก ์์ JDBC Driver Loading (Driver Class) DB์ฐ๊ฒฐ(Connection๊ฐ์ฒด ์์ฑ) (url, id, pwd) SQL ์คํ ์ค๋น SQL๋ฌธ์ฅ Statement์์ฑ SQL ์คํ DB ์ ์ข
๋ฃ ๐ก ์ ๋ฐฉ์์์ ํ๋์ ๋ถ๋ถ์ MyBatis๊ฐ ์์์ ํด์ฃผ๊ณ , ์ด๋ก์ ๋ถ๋ถ๋ง xml์ ์ค์ ..
๐๋ฐฑ์๋ : BackEnd
๐กํํฐ, ์ธํฐ์
ํฐ, AOP์ ์ฐจ์ด? ํํฐ - ์คํ๋ง ์ปจํ
์คํธ ์ธ๋ถ์ ์กด์ฌํ์ฌ ์คํ๋ง๊ณผ ๋ฌด๊ดํ ์์์ ๋ํด ๋์ํจ. - ๋ณดํต web.xml์ ๋ฑ๋กํ๊ณ , ์ธ์ฝ๋ฉ ๋ณํ ์ฒ๋ฆฌ, XSS ๋ฐฉ์ด ๋ฑ์ ์์ฒญ์ ๋ํ ์ฒ๋ฆฌ๋ก ์ฌ์ฉ๋จ. ์ธํฐ์
ํฐ - ์คํ๋ง ์ปจํ
์คํธ ๋ด๋ถ์ ์กด์ฌํ๋ฉฐ Dispatcher Servlet์ด ์ปจํธ๋กค๋ฌ๋ฅผ ํธ์ถํ๊ธฐ ์ , ํ๋ก ๋ผ์ด๋ฌ. - ์คํ๋ง์ ๋ชจ๋ ๋น ๊ฐ์ฒด์ ์ ๊ทผํ ์ ์์. ์ฌ๋ฌ๊ฐ๋ฅผ ์ฌ์ฉํ ์ ์์(์์ ์ฃผ์). - ๋ก๊ทธ์ธ ์ฒดํฌ, ๊ถํ์ฒดํฌ, ํ๋ก๊ทธ๋จ ์คํ์๊ฐ ๊ณ์ฐ์์
๋ก๊ทธํ์ธ ๋ฑ์ ์
๋ฌด์ฒ๋ฆฌ. AOP - ํํฐ์ ์ธํฐ์
ํฐ (ํํฐ์ ์ธํฐ์
ํฐ๋ Servlet ๋จ์์์ ์คํ) ์ ๋ค๋ฅด๊ฒ ๋ฉ์๋ ์์์ Proxy ํจํด์ ํํ๋ก ์คํ๋จ. - OOP๋ฅผ ๋ณด์ํ๊ธฐ ์ํด ๋์จ ๊ฐ๋
. (OOP์์ ๊ณตํต ์ฌํญ์ ๋ชจ๋ํ ํ..