** ๐Ÿ“Œ๊ธฐ์ˆ  ๋ฉด์ ‘ ๋Œ€๋น„ ์ •๋ฆฌ **

JSP + Servlet + DAO/DTO ๊ธฐ๋ฐ˜ ์›น ํ”„๋กœ์ ํŠธ ์ „ ๊ณผ์ •์„

๊ธฐ์ˆ  ๋ฉด์ ‘์—์„œ ์™„๋ฒฝํžˆ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ •๋ฆฌํ•œ ์งˆ๋ฌธ & ํ•ด์„ค ๋ชจ์Œ


๐Ÿงฉ ๋ชฉ์ฐจ

  1. ํ•ต์‹ฌ ๋ฉด์ ‘ ์งˆ๋ฌธ ๋ฆฌ์ŠคํŠธ
  2. ์งˆ๋ฌธ๋ณ„ ํ•ต์‹ฌ ์š”์•ฝ + ์˜ˆ์‹œ ์„ค๋ช…
  3. ๋ณด๋„ˆ์Šค: ์ „์ฒด ํ๋ฆ„ ์„ค๋ช…์šฉ ์ •๋ฆฌ ํฌ๋งท
  4. ๊ธฐ์ˆ  ๋ฉด์ ‘ ๊ฟ€ํŒ
  5. ๋งˆ๋ฌด๋ฆฌ ์š”์•ฝ + 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. ๋งˆ๋ฌด๋ฆฌ ์š”์•ฝ ๐Ÿง