** ๐๊ธฐ์ ๋ฉด์ ๋๋น ์ ๋ฆฌ **
JSP + Servlet + DAO/DTO ๊ธฐ๋ฐ ์น ํ๋ก์ ํธ ์ ๊ณผ์ ์
๊ธฐ์ ๋ฉด์ ์์ ์๋ฒฝํ ์ค๋ช ํ ์ ์๋๋ก ์ ๋ฆฌํ ์ง๋ฌธ & ํด์ค ๋ชจ์
๐งฉ ๋ชฉ์ฐจ
- ํต์ฌ ๋ฉด์ ์ง๋ฌธ ๋ฆฌ์คํธ
- ์ง๋ฌธ๋ณ ํต์ฌ ์์ฝ + ์์ ์ค๋ช
- ๋ณด๋์ค: ์ ์ฒด ํ๋ฆ ์ค๋ช ์ฉ ์ ๋ฆฌ ํฌ๋งท
- ๊ธฐ์ ๋ฉด์ ๊ฟํ
- ๋ง๋ฌด๋ฆฌ ์์ฝ + Notion ์์ฑ ํ
โ 1. ํต์ฌ ๋ฉด์ ์ง๋ฌธ ๋ฆฌ์คํธ
์ง๋ฌธ ๋ด์ฉ | ํต์ฌ ํค์๋ |
---|---|
JSP์ Servlet์ ์ฐจ์ด์ ์? | ์ญํ ๋ถ๋ฆฌ, View vs Controller |
DAO์ DTO์ ์ญํ ์? | ๋ฐ์ดํฐ ์ ๊ทผ vs ๋ฐ์ดํฐ ์ ์ฅ ๊ฐ์ฒด |
MVC ํจํด์ ๊ตฌ์กฐ๋? | Model, View, Controller |
GET๊ณผ POST์ ์ฐจ์ด๋? | ์ ์ก ๋ฐฉ์, ๋ณด์, ์ฌ์ฉ ์ฉ๋ |
SQL Injection ๋ฐฉ์ง ๋ฐฉ๋ฒ์? | PreparedStatement |
์ธ์ ๊ณผ ์ฟ ํค ์ฐจ์ด๋? | ์ ์ฅ ์์น, ๋ณด์, ์๋ช ์ฃผ๊ธฐ |
๋ก๊ทธ์ธ ์ฒ๋ฆฌ ํ๋ฆ์? | ์ธ์ ํ์ฉ, DB ๋น๊ต, ์ํ ์ ์ง |
ํ์ผ ์ ๋ก๋ ๊ตฌํ ๋ฐฉ์์? | multipart/form-data, MultipartRequest |
Ajax์ JSP ์ฐ๋์ ์ด๋ป๊ฒ ํ๋์? | fetch(), JSON ์๋ต |
ํ๋ก์ ํธ ๊ตฌ์กฐ๋ฅผ ์ด๋ป๊ฒ ๋ถ๋ฆฌํ๋์? | controller, dao, dto, view ํจํค์ง ๋ถ๋ฆฌ |
RESTful URL ์ค๊ณ๋? | ์๋ฏธ ์๋ URL + ๋ฉ์๋ ๊ธฐ๋ฐ |
์ ์ง๋ณด์ ๊ฐ๋ฅํ ๊ตฌ์กฐ๋? | ์ญํ ๋ณ ๋ถ๋ฆฌ, ๋ค์ด๋ฐ ๋ช ํํ |
โ 2. ์ง๋ฌธ๋ณ ํต์ฌ ์์ฝ + ์์ ์ค๋ช
๐ Q. JSP์ Servlet์ ์ฐจ์ด์ ์?
ํญ๋ชฉ | JSP | Servlet |
---|---|---|
์ญํ | View(ํ๋ฉด ์ถ๋ ฅ) | Controller(์์ฒญ ์ฒ๋ฆฌ) |
์์ฑ ์์น | ๋ณดํต /view/ ํด๋ | /controller/ ํจํค์ง |
์ฃผ์ ๊ธฐ๋ฅ | HTML + ๊ฒฐ๊ณผ ์ถ๋ ฅ | ์์ฒญ ๋ถ์, DAO ํธ์ถ, ๊ฒฐ๊ณผ ์ ๋ฌ |
๐ง ์์ ๋ต๋ณ
JSP๋ ์ฌ์ฉ์์๊ฒ ๋ณด์ด๋ ํ๋ฉด์ ์ถ๋ ฅํ๊ณ , Servlet์ ์ฌ์ฉ์์ ์์ฒญ์ ๋ฐ์์ ์ฒ๋ฆฌํ ๋ค JSP๋ก ์ด๋์์ผ์ค๋๋ค. MVC2 ํจํด์์ Servlet์ Controller ์ญํ , JSP๋ View ์ญํ ์ ํฉ๋๋ค.
๐ Q. DAO์ DTO์ ์ญํ ์?
ํญ๋ชฉ | DAO | DTO |
---|---|---|
๊ธฐ๋ฅ | DB์ ์ง์ ํต์ (insert, select ๋ฑ) | ๋ฐ์ดํฐ๋ฅผ ๋ด๋ ๊ฐ์ฒด |
์์ | BoardDAO.insert(dto) |
BoardDTO.setTitle("์ ๋ชฉ") |
๐ง ์์ ๋ต๋ณ
DAO๋ DB์ ์ฐ๊ฒฐํด์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ์ญํ ์ ํ๊ณ , DTO๋ ๊ทธ ๋ฐ์ดํฐ๋ฅผ ํ๋์ ๊ฐ์ฒด๋ก ๋ด์์ ์ ๋ฌํด์ฃผ๋ ์ญํ ์ ํฉ๋๋ค. DAO๋ ๊ธฐ๋ฅ, DTO๋ ๋ฐ์ดํฐ ์ค์ฌ์ ๋๋ค.
๐ Q. MVC ํจํด ๊ตฌ์กฐ ์ค๋ช
M | V | C |
---|---|---|
DB + ๋ก์ง ์ฒ๋ฆฌ (DAO/DTO) | ๊ฒฐ๊ณผ ์ถ๋ ฅ (JSP) | ํ๋ฆ ์ ์ด, ์์ฒญ ์ฒ๋ฆฌ (Servlet) |
๐ง ์์ ๋ต๋ณ
์ฌ์ฉ์๊ฐ JSP์์ ์์ฒญํ๋ฉด, Servlet์ด ์ด๋ฅผ ๋ฐ์ DAO๋ฅผ ํตํด DB ์์ ์ ํ๊ณ ๊ฒฐ๊ณผ๋ฅผ request์ ๋ด์์ JSP๋ก ์ ๋ฌํฉ๋๋ค. ์ด ๊ตฌ์กฐ๊ฐ ์ ์ง๋ณด์๊ฐ ์ฌ์ด ์ด์ ๋ ์ญํ ์ด ๋ช ํํ ๋ถ๋ฆฌ๋๊ธฐ ๋๋ฌธ์ ๋๋ค.
๐ Q. GET๊ณผ POST ์ฐจ์ด์
ํญ๋ชฉ | GET | POST |
---|---|---|
์ฃผ์์ฐฝ ๋ ธ์ถ | O | X |
๋ณด์ | ๋ฎ์ | ๋์ |
์ ์ก ์ฉ๋ | ์กฐํ | ๋ฑ๋ก/์์ |
๐ง ์์ ๋ต๋ณ
GET์ ๋ฐ์ดํฐ๋ฅผ URL์ ํฌํจํด์ ์ ์กํ๊ณ , POST๋ ๋ณธ๋ฌธ์ ์จ๊ฒจ์ ์ ์กํ๊ธฐ ๋๋ฌธ์ ๋ณด์์ฑ์ด ๋์ต๋๋ค. ์กฐํ๋ GET, ๋ฑ๋ก/์์ ์ POST๊ฐ ์ผ๋ฐ์ ์ ๋๋ค.
๐ Q. SQL Injection ๋ฐฉ์ง ๋ฐฉ๋ฒ์?
๐ก๏ธ PreparedStatement
์ฌ์ฉ!
String sql = "SELECT * FROM user WHERE id=? AND pw=?";
ps.setString(1, id);
ps.setString(2, pw);
์ฟผ๋ฆฌ์ ๊ฐ์ด ๋ถ๋ฆฌ๋์ด ์์ด์ ์ ์์ ์ธ SQL ๊ตฌ๋ฌธ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
โ 3. ๋ณด๋์ค: ์ ์ฒด ํ๋ก์ ํธ ํ๋ฆ ์ค๋ช ํฌ๋งท (๋ฉด์ ์ฉ)
1. ์ฌ์ฉ์๊ฐ form.jsp์์ ์
๋ ฅ โ POST ์์ฒญ
2. Servlet์์ request.getParameter๋ก ๋ฐ์ดํฐ ์์ง
3. DTO์ ๋ฐ์ดํฐ ์ ์ฅ โ DAO์ ์ ๋ฌ
4. DAO์์ DB insert ์ฒ๋ฆฌ
5. ๊ฒฐ๊ณผ๋ฅผ request์ ๋ด์ JSP๋ก ์ด๋ (RequestDispatcher)
6. JSP์์ ์ถ๋ ฅ
7. ๋ก๊ทธ์ธ ์ ์ธ์
์ ์ฅ โ ๋ก๊ทธ์์ ์ invalidate()
8. Ajax ํต์ ์ fetch โ JSP์์ JSON ์๋ต โ JS ์ฒ๋ฆฌ
โ 4. ๊ธฐ์ ๋ฉด์ ๊ฟํ
ํ | ์ค๋ช |
---|---|
โญ ์ฉ์ด๋ฅผ ํ ๋ฌธ์ฅ์ผ๋ก ์ ์ | โDTO๋ ๋ฐ์ดํฐ๋ฅผ ๋ด๋ ๊ฐ์ฒด์ ๋๋ค.โ |
โญ ํ๋ฆ์ ์์๋๋ก ์ค๋ช | โ์์ฒญ โ Servlet โ DAO โ JSPโ |
โญ ์ค์ ํ๋ก์ ํธ ๊ธฐ๋ฐ์ผ๋ก ๋งํ๊ธฐ | โ์ ๊ฐ ๋ง๋ ๊ฒ์ํ์์๋โฆโ |
โญ ์์์ ํจ๊ป ์ค๋ช | โ์๋ฅผ ๋ค์ด ๊ฒ์๊ธ ๋ฑ๋ก ์โฆโ |
โ 5. ๋ง๋ฌด๋ฆฌ ์์ฝ ๐ง
- ๐ฌ ๊ธฐ์ ๋ฉด์ ์ ๊ฐ๋ + ํ๋ฆ + ์์๋ฅผ ์กฐํฉํด์ ์ค๋ช ํ๋ ๊ฒ์ด ํต์ฌ
- ๐ฆ ๊ฐ ๊ตฌ์กฐ์ ์ญํ ์ ๋ช ํํ๊ฒ ๋งํ ์ ์์ด์ผ ํจ
- ๐ ์ ์ฒด ํ๋ฆ์ โ์์ฒญ โ Controller โ Model โ Viewโ๋ก ์์ฝ ๊ฐ๋ฅ
- โ ๋ชจ๋ ์ง๋ฌธ์ ๋ด๊ฐ ๋ง๋ ํ๋ก์ ํธ ์ฌ๋ก ์ค์ฌ์ผ๋ก ๋ต๋ณํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ค๋๋ ฅ ์