11 ๋ถ„ ์†Œ์š”

4์žฅ JSP ๋””๋ ‰ํ„ฐ๋ฆฌ์™€ ์•ก์…˜ ํƒœ๊ทธ

4.1 ์ง€์‹œ์–ด ๊ฐœ์š”


  • ์ง€์‹œ์–ด
    • JSP ํŒŒ์ผ์˜ ์†์„ฑ์„ ๊ธฐ์ˆ ํ•˜๋Š” JSP ๋ฌธ๋ฒ•
    • JSP ์ปจํ…Œ์ด๋„ˆ์—๊ฒŒ ํ•ด๋‹น ํŽ˜์ด์ง€๋ฅผ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•ด์•ผํ•˜๋Š”์ง€ ๋‚ด์šฉ ์ „๋‹ฌ
      1. page
      1. JSP ํŽ˜์ด์ง€์— ๋Œ€ํ•œ ์ •๋ณด ์„ค์ •
      2. <%@page ~%> 2. include
      3. JSP ํŽ˜์ด์ง€์˜ ํŠน์ • ์˜์˜์— ๋‹ค๋ฅธ ๋ฌธ์„œ๋ฅผ ํฌํ•จ
      4. <%@include ~ %> 3. taglib
      5. JSP ํŽ˜์ด์ง€์—์„œ ์‚ฌ์šฉํ•  ํƒœ๊ทธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์ •
      6. <%@taglib ~ %>

4.2 page ์ง€์‹œ์–ด


  • page ์ง€์‹œ์–ด
    • ํ˜„์žฌ JSP ํŽ˜์ด์ง€๋ฅผ ์ปจํ…Œ์ด๋„ˆ์—์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ฐ์ข… ์†์„ฑ์„ ๊ธฐ์ˆ 
    • <%@page ์†์„ฑ1=โ€์†์„ฑ๊ฐ’1โ€ ์†์„ฑ2=โ€์†์„ฑ๊ฐ’2โ€โ€ฆ %>
    • page๋Š” ํ†ฐ์ผ“์—์„œ ํ•ด์„ ํ•จ
    • ํ•œ๊ธ€ ์ฒ˜๋ฆฌ ์†์„ฑ
      • pageEncoding ์†์„ฑ
        • ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ฒ˜๋ฆฌํ•  JSP ํŒŒ์ผ ์ž์ฒด์˜ ๋ฌธ์ž ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹์„ ์„ค์ •
      • contentType์˜ charset ์†์„ฑ
        • ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋ฐ›์„(ํ†ฐ์ผ“์ด ๋ณด๋‚ด๋Š”) HTTP ์‘๋‹ต ํŽ˜์ด์ง€์˜ ๋ฌธ์ž ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹์„ ์„ค์ •
      • language ์†์„ฑ
        • JSP ํŽ˜์ด์ง€์—์„œ ์‚ฌ์šฉํ•  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ์„ค์ • (๊ธฐ๋ณธ๊ฐ’ java)
    • import ์†์„ฑ
    • JSP ์—์„œ ์‚ฌ์šฉํ•  ์ž๋ฐ” ํด๋ž˜์Šค ๋˜๋Š” ํŒจํ‚ค์ง€๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ
    • ๊ตฌ๋ถ„์„ , ์„ ์ด์šฉํ•˜๊ฑฐ๋‚˜ ๋ผ์ธ ๋‹จ์œ„ ์ž‘์„ฑ
    • ์ž๋™ import ํŒจํ‚ค์ง€
      • java.lang.*
      • java.servlet.*
      • java.servlet.jsp.*
      • java.servlet.http.*
  • session ์†์„ฑ
    • ์›น ๋ธŒ๋ผ์šฐ์ €์™€ ์›น ์„œ๋ฒ„๊ฐ€ ์ง€์†์ ์ธ ํด๋ผ์ด์–ธํŠธ ์ธ์‹์„ ์œ„ํ•ด ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ์ž„์‹œ๋กœ ์ €์žฅํ•ด๋‘๋Š” ๋ฐฉ๋ฒ•
    • ๊ธฐ๋ณธ ๊ฐ’ true (์„ธ์„ ์„ ์‚ฌ์šฉํ•œ๋‹ค)
    • ์ฃผ๋กœ ๋กœ๊ทธ์ธ์ด๋‚˜ ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๊ตฌํ˜„ ๋“ฑ์— ์‚ฌ์šฉ
  • buffer ์†์„ฑ
    • JSP ํŽ˜์ด์ง€ ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅํ•˜๊ธฐ ์œ„ํ•œ JspWritter ์ฆ‰ out ๋‚ด์žฅ๊ฐ์ฒด์˜ ๋ฒ„ํผ ํฌ๊ธฐ๋ฅผ ์ง€์ •
    • ๊ธฐ๋ณธ 8KB
  • autoFlush ์†์„ฑ
    • ๋ฒ„ํผ๋ฅผ ์ž๋™์œผ๋กœ ๋น„์šธ ๊ฒƒ์ธ์ง€๋ฅผ ์ง€์ •ํ•˜๋Š” ์†์„ฑ
    • ๊ธฐ๋ณธ ๊ฐ’ true
    • ๋ฒ„ํผ ์†์„ฑ์— ์ง€์ •๋˜์–ด ์žˆ๋Š” ํฌ๊ธฐ๋งŒํผ ๋ฒ„ํผ ์œ ์ง€ ํ›„ ๊ฐ€๋“์ฐจ๋ฉด ์ž๋™์œผ๋กœ ์ „์†ก
    • ์†์„ฑ ๊ฐ’์ด false์ด๊ณ  ๋ฒ„ํผ๊ฐ€ ๋‹ค ์ฑ„์›Œ์ง€๋ฉด ์˜ˆ์™ธ ๋ฐœ์ƒ
  • isThreadSafe ์†์„ฑ
    • JSP ํŽ˜์ด์ง€์—์„œ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ๋™์ž‘ ์ œ์–ดํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ
    • ๊ธฐ๋ณธ ๊ฐ’ true
    • false โ†’ ์ˆœ์ฐจ์  ์ฒ˜๋ฆฌ
  • info ์†์„ฑ
    • ํ•ด๋‹น JSP์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ์„ค๋ช…์œผ๋กœ ๊ฐ„๋‹จํ•œ ์ •๋ณด ๊ธฐ์ˆ ์— ์‚ฌ์šฉ (์ €์ž‘๊ถŒ, ์ž‘์„ฑ์ผ ๋“ฑ)
  • errorPage, isErrorPage ์†์„ฑ
    • jsp ํŒŒ์ผ์˜ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ์œ„ํ•œ ์†์„ฑ
    • errorPage
      • ํ˜„์žฌ ํŽ˜์ด์ง€์— ์˜ค๋ฅ˜ ๋ฐœ์ƒ์‹œ ํ˜ธ์ถœํ•  ํŽ˜์ด์ง€ ์ง€์ •ํ•˜๋Š” ์†์„ฑ
    • isErrorPage
      • ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ์ „์šฉ ํŽ˜์ด์ง€์ž„์„ ์•Œ๋ฆฌ๋Š” ์†์„ฑ
      • ์˜ค๋ฅ˜ ์ „์šฉ ํŒŒ์ผ์—๋งŒ ์‚ฌ์šฉ
  • contentType ์†์„ฑ
    • ํ˜„์žฌ JSP ํŽ˜์ด์ง€๋ฅผ ํด๋ผ์ด์–ธํŠธ์—์„œ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์ฝ˜ํ…์ธ  ์œ ํ˜•์„ ์ง€์ •ํ•˜๋Š” ๋ถ€๋ถ„
  • pageEncoding ์†์„ฑ
    • ์ปจํ…Œ์ด๋„ˆ์—์„œ ์ฒ˜๋ฆฌํ•  JSP ํŒŒ์ผ ์ž์ฒด์˜ ์ธ์ฝ”๋”ฉ ์„ค์ •
  • extends ์†์„ฑ
    • JSP๊ฐ€ ์„œ๋ธ”๋ฆฟ์œผ๋กœ ๋ณ€ํ™˜๋  ๋•Œ ์ƒ์†๋ฐ›์„ ์Šˆํผํด๋ž˜์Šค ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„
  • isELIgnored ์†์„ฑ
    • JSP ํŽ˜์ด์ง€์˜ ํ‘œํ˜„ ์–ธ์–ด ์‚ฌ์šฉ ์—ฌ๋ถ€ ์„ค์ •
  • isScriptingEnabled ์†์„ฑ
    • ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ(์„ ์–ธ๋ฌธ, ์Šคํฌ๋ฆฝํŠธ๋ฆฟ, ํ‘œํ˜„์‹) ์‚ฌ์šฉ ์—ฌ๋ถ€ ์„ค์ •

4.3 include ์ง€์‹œ์–ด


  • include ์ง€์‹œ์–ด
    • ์—ฌ๋Ÿฌ ์ •๋ณด์˜ ์กฐํ•ฉ์œผ๋กœ ํ•œ ํ™”๋ฉด์„ ๊ตฌ์„ฑํ•  ๋•Œ ์œ ์šฉ
    • ํ˜„์žฌ JSP ํŒŒ์ผ์— ๋‹ค๋ฅธ HTML์ด๋‚˜ JSP ๋ฌธ์„œ๋ฅผ ํฌํ•จํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋Šฅ ์ œ๊ณต
    • <%@ include file=โ€ํฌํ•จํ•  ํŒŒ์ผ ์ด๋ฆ„โ€ %>

4.4 taglib ์ง€์‹œ์–ด


  • taglib ์ง€์‹œ์–ด
    • JSP ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“  ์ปค์Šคํ…€ ํƒœ๊ทธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์ง€์‹œ์–ด

4.5 ์•ก์…˜ ํƒœ๊ทธ ๊ฐœ์š”


  • ์•ก์…˜ ํƒœ๊ทธ
    • ์ž๋ฐ” ๋นˆ์ฆˆ ์—ฐ๋™ ๋ฐ ๋™์  ํŽ˜์ด์ง€ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณต

    image

4.6 include ์•ก์…˜ํƒœ๊ทธ


  • include ์•ก์…˜ํƒœ๊ทธ
    • include ์ง€์‹œ์–ด ์œ ์‚ฌ
    • ํ˜„์žฌ JSP ํŽ˜์ด์ง€์˜ ํŠน์ • ์˜์—ญ์— ์™ธ๋ถ€ ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ํฌํ•จํ•˜๋Š” ํƒœ๊ทธ
    • <jsp:include page=โ€ํฌํ•จํ•  ํŒŒ์ผ์ด๋ฆ„โ€ flush=โ€falseโ€/>
      • page ์†์„ฑ
        • ํ˜„์žฌ JSP ํŽ˜์ด์ง€ ๋‚ด์— ํฌํ•จํ•  ๋‚ด์šฉ์„ ๊ฐ€์ง„ ์™ธ๋ถ€ ํŒŒ์ผ๋ช…
      • flush ์†์„ฑ (default = false)
        • ์„ค์ •ํ•œ ์™ธ๋ถ€ ํŒŒ์ผ๋กœ ์ œ์–ด๊ฐ€ ์ด๋™ํ•  ๋•Œ ์ง€๊ธˆ๊นŒ์ง€ ์ถœ๋ ฅ ๋ฒ„ํผ์— ์ €์žฅํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ฒ˜๋ฆฌ
        • true ์‹œ ํ˜„์žฌ JSP ํŽ˜์ด์ง€๊ฐ€ ์ง€๊ธˆ๊นŒ์ง€ ์ถœ๋ ฅ ๋ฒ„ํผ์— ์ €์žฅ๋œ ๋‚ด์šฉ์„ ์›น ๋ธŒ๋ผ์šฐ์ €์— ์ถœ๋ ฅํ•˜๊ณ  ์ถœ๋ ฅ ๋ฒ„ํผ๋ฅผ ๋น„์›€
    • ๋‹จ์ˆœํžˆ ํŽ˜์ด์ง€๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฒƒ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ param ์•ก์…˜ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํฌํ•จ๋  ํŽ˜์ด์ง€๋กœ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ „๋‹ฌ ๊ฐ€๋Šฅ
  • include ์ง€์‹œ์–ด์™€ ์ฐจ์ด์ 
    • include ์ง€์‹œ์–ด
      • ํ•ด๋‹น ํŒŒ์ผ์„ ํฌํ•จ์‹œํ‚จ ํ›„ ์ปดํŒŒ์ผ (์ •์ ์ธ ํŽ˜์ด์ง€ ํฌํ•จ ์‹œ)
    • include ์•ก์…˜ํƒœ๊ทธ
      • ์‹คํ–‰ ์‹œ์ ์—์„œ ํ•ด๋‹น ํŒŒ์ผ์„ ํ˜ธ์ถœํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ ํฌํ•จ (๋™์ ์ธ ํŽ˜์ด์ง€ ํฌํ•จ ์‹œ)

    image

4.7 forward ์•ก์…˜ํƒœ๊ทธ


  • forward ์•ก์…˜ํƒœ๊ทธ
    • ์š”์ฒญ ํŽ˜์ด์ง€๋ฅผ ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋กœ ์ „ํ™˜ํ•  ๋•Œ ์‚ฌ์šฉ
    • MVC ํŒจํ„ด์˜ ์ปจํŠธ๋กค๋Ÿฌ์™€ ๊ฐ™์ด ํŠน์ • ๊ธฐ๋Šฅ ์ˆ˜ํ–‰ ํ›„ ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ
    • <jsp:forward page=โ€ํฌ์›Œ๋”ฉํ•  ํŒŒ์ผ์ด๋ฆ„โ€ />
      • page ์†์„ฑ ๊ฐ’
        • ํ˜„์žฌ JSP ํŽ˜์ด์ง€์—์„œ ์ด๋™ํ•  ํŽ˜์ด์ง€์˜ ์™ธ๋ถ€ ํŒŒ์ผ๋ช…
    • param ์•ก์…˜ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ „ํ™˜ํ•  ํŽ˜์ด์ง€๋กœ ํŒŒ๋ผ๋ฏธํ„ฐ ์ „๋‹ฌ ๊ฐ€๋Šฅ

4.8 param ์•ก์…˜ํƒœ๊ทธ


  • param ์•ก์…˜ํƒœ๊ทธ
    • ํ˜„์žฌ JSP ํŽ˜์ด์ง€์—์„œ ๋‹ค๋ฅธ ํŽ˜์ด์ง€์— ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•˜๋Š” ํƒœ๊ทธ
    • ๋‹จ๋… ์‚ฌ์šฉX โ†’ ๋‚˜ ํƒœ๊ทธ ๋‚ด๋ถ€ ์‚ฌ์šฉ
    • ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ •๋ณด ์ „๋‹ฌ ์‹œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ param ์•ก์…˜ํƒœ๊ทธ ์‚ฌ์šฉ

4.9 ์ž๋ฐ” ๋นˆ์ฆˆ ์•ก์…˜ํƒœ๊ทธ


  • ์ž๋ฐ” ๋นˆ์ฆˆ
    • ํ”„๋กœ๊ทธ๋žจ ๋ชจ๋“ˆํ™”๋ฅผ ์œ„ํ•œ ์ปดํฌ๋„ŒํŠธ ์˜๋ฏธ
    • ๋™์  ์ฝ˜ํ…์ธ  ๊ฐœ๋ฐœ์„ ์œ„ํ•ด ์ž๋ฐ” ํด๋ž˜์Šค๋กœ ๋กœ์ง์„ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•
    • JSP์™€ ์—ฐ๋™ํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ ์ปดํฌ๋„ŒํŠธ ํด๋ž˜์Šค
      • ์Šคํฌ๋ฆฝํŠธ๋ฆฟ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์ข‹์Œ
  • ์ž๋ฐ” ๋นˆ์ฆˆ ์ž‘์„ฑ ๊ทœ์น™
    • ์ž๋ฐ” ํด๋ž˜์Šค๋Š” java.io.Serializable ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค. (์ƒ๋žต ๊ฐ€๋Šฅ)
    • ์ธ์ˆ˜๊ฐ€ ์—†๋Š” ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๊ฐ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
    • ๋ชจ๋“  ๋ฉค๋ฒ„ ๋ณ€์ˆ˜์ธ ํ”„๋กœํผํ‹ฐ๋Š” private ์ ‘๊ทผ ์ง€์ •์ž๋กœ ์„ค์ •ํ•ด์•ผ ํ•œ๋‹ค.
    • ๋ชจ๋“  ๋ฉค๋ฒ„ ๋ณ€์ˆ˜์ธ ํ”„๋กœํผํ‹ฐ๋Š” getter/setter() ๋ฉ”์†Œ๋“œ๊ฐ€ ์กด์žฌํ•ด์•ผ ํ•œ๋‹ค.
      • getter() : ๋ฉค๋ฒ„ ๋ณ€์ˆ˜์— ์ €์žฅ๋œ ๊ฐ’์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋Š” ๋ฉ”์†Œ๋“œ
      • setter() : ๋ฉค๋ฒ„ ๋ณ€์ˆ˜์— ๊ฐ’์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์„œ๋“œ
  • ์ฃผ์š” ์•ก์…˜ํƒœ๊ทธ

    image

  • useBean ์•ก์…˜ํƒœ๊ทธ
    • JSP ํŽ˜์ด์ง€์—์„œ ์ž๋ฐ”๋นˆ์ฆˆ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์‹ค์ œ ์ž๋ฐ” ํด๋ž˜์Šค๋ฅผ ์„ ์–ธํ•˜๊ณ  ์ดˆ๊ธฐํ™”
    • <jsp:useBean id=โ€์ž๋ฐ”๋นˆ์ฆˆ ์‹๋ณ„์ด๋ฆ„โ€ class=โ€์ž๋ฐ”๋นˆ์ฆˆ ์ด๋ฆ„โ€ scope=โ€๋ฒ”์œ„โ€ />
      • id : ์ž๋ฐ” ๋นˆ์ฆˆ๋ฅผ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•œ ์ด๋ฆ„
      • class : ํŒจํ‚ค์ง€ ์ด๋ฆ„์„ ํฌํ•จํ•˜๋Š” ์ž๋ฐ”๋นˆ์ฆˆ ์ด๋ฆ„
      • scope : ์ž๋ฐ” ๋นˆ์ฆˆ๊ฐ€ ์ €์žฅ๋˜๋Š” ์˜์—ญ ์„ค์ •
  • setProperty ์•ก์…˜ํƒœ๊ทธ
    • ํ”„๋กœํผํ‹ฐ์˜ ๊ฐ’ ์ €์žฅํ•˜๊ธฐ
      • useBean ๋ฉ”์„œ๋“œ์™€ ํ•จ๊ป˜ setter() ๋ฉ”์„œ๋“œ์— ์ ‘๊ทผํ•˜์—ฌ ์ž๋ฐ”๋นˆ์ฆˆ์˜ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜์ธ ํ”„๋กœํผํ‹ฐ์˜ ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ํƒœ๊ทธ
      • <jsp:setProperty name=โ€์ž๋ฐ”๋นˆ์ฆˆ ์‹๋ณ„์ด๋ฆ„โ€ property=โ€ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„โ€ value=โ€๊ฐ’โ€ />

        image

    • getProperty ์•ก์…˜ํƒœ๊ทธ
      • ํ”„๋กœํผํ‹ฐ์˜ ๊ฐ’ ๊ฐ€์ ธ์˜ค๊ธฐ
      • useBean ๋ฉ”์„œ๋“œ์™€ ํ•จ๊ป˜ setter() ๋ฉ”์„œ๋“œ์— ์ ‘๊ทผํ•˜์—ฌ ์ž๋ฐ”๋นˆ์ฆˆ์˜ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜์ธ ํ”„๋กœํผํ‹ฐ์˜ ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๋Š” ํƒœ๊ทธ
      • <jsp:getProperty name=โ€์ž๋ฐ”๋นˆ์ฆˆ ์‹๋ณ„์ด๋ฆ„โ€ property=โ€ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„โ€ value=โ€๊ฐ’โ€ />

        image




5์žฅ JSP ๋‚ด์žฅ ๊ฐ์ฒด

5.1 JSP ๋‚ด์žฅ ๊ฐ์ฒด์˜ ๊ฐœ์š”


  • JSP ๋‚ด์žฅ ๊ฐ์ฒด
    • JSP์—์„œ ์„ ์–ธํ•˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ์ฒด
    • ๋ณ„๋„์˜ import ๋ฌธ ํ•„์š”์—†์Œ
  • ์ข…๋ฅ˜

    image

5.2 request


  • request ๋‚ด์žฅ ๊ฐ์ฒด
    • ์‚ฌ์šฉ์ž ์š”์ฒญ๊ณผ ๊ด€๋ จ๋œ ๊ธฐ๋Šฅ ์ œ๊ณต
    • jakarta.servlet.http.HttpServletRequest ํด๋ž˜์Šค์— ๋Œ€ํ•œ ์ฐธ์กฐ ๋ณ€์ˆ˜
    • ํด๋ผ์ด์–ธํŠธ์—์„œ ์„œ๋ฒ„๋กœ ์ „๋‹ฌ๋˜๋Š” ์ •๋ณด ์ฒ˜๋ฆฌ
  • ์ฃผ์š” ๋ฉ”์„œ๋“œ
    • getParameter(name)
      • name๊ณผ ์ด๋ฆ„์ด ๊ฐ™์€ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๊ฐ€์ ธ์˜ด(HTML form ์š”์†Œ์˜ ์ž…๋ ฅ๊ฐ’)
    • setCharacterEncoding()
      • ํ˜„์žฌ JSP๋กœ ์ „๋‹ฌ๋˜๋Š” ๋‚ด์šฉ์„ ์ง€์ •ํ•œ ์บ๋ฆญํ„ฐ์…‹์œผ๋กœ ๋ณ€ํ™˜
      • HTML์—์„œ ์ž…๋ ฅ๋œ ๊ฐ’ ์„œ๋ฒ„๋กœ ์ „๋‹ฌ ์‹œ ํ•œ๊ธ€ ์ฒ˜๋ฆฌ (โ€UTF-8โ€)
    • getRemoteAddr()
      • ํด๋ผ์ด์–ธํŠธ์˜ IP ์ฃผ์†Œ๋ฅผ ์•Œ๋ ค์คŒ

5.3 response


  • response ๋‚ด์žฅ ๊ฐ์ฒด
    • ์‚ฌ์šฉ์ž ์‘๋‹ต๊ณผ ๊ด€๋ จ๋œ ๊ธฐ๋Šฅ ์ œ๊ณต
    • ์‚ฌ์šฉ์ž ์š”์ฒญ ์ฒ˜๋ฆฌ, ์‘๋‹ต์„ ๋‹ค๋ฅธ ํŽ˜์ด์ง€์— ์ œ๊ณต
    • jakarta.servlet.http.HttpServletResponse ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ฐธ์กฐ ๋ณ€์ˆ˜
  • ์ฃผ์š” ๋ฉ”์„œ๋“œ
    • setContentType(type)
      • ๋ฌธ์ž์—ด ํ˜•ํƒœ type์— ์ง€์ •๋œ MIME TYPE์œผ๋กœ contentType ์„ค์ •
      • ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‘๋‹ตํ•  MIME ์œ ํ˜• ์„ค์ •
    • setCharacterEncoding()
      • ์„œ๋ธ”๋ฆฟ์—์„œ ํ™”๋ฉด ์ถœ๋ ฅ ์‹œ ํ•œ๊ธ€ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ์บ๋ฆญํ„ฐ ์…‹ ๋ณ€ํ™˜
    • sendRedirect(url)
      • ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋กœ ๋ณด๋ƒ„
      • ํŽ˜์ด์ง€ ๊ฐ•์ œ ์ด๋™
      • ์ด๋™ํ•  URL์„ ์›น ๋ธŒ๋ผ์šฐ์ €์— ๋ณด๋‚ด ์›น ์„œ๋ฒ„์— ๋‹ค์‹œ ์š”์ฒญ
      • forward ์•ก์…˜ ํƒœ๊ทธ์™€์˜ ์ฐจ์ด

      image

      image

  • ํŒจํ‚ค์ง€ ์บ์‹œ๋กœ ์ธํ•œ ๋ฌธ์ œ
    • ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์บ์‹œํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ์„ค์ •
    • <% respoense.setHeader(โ€Cache-Controlโ€, โ€œno-cacheโ€); %>
      • no-cache
        • ์„œ๋ฒ„๊ฐ€ ์บ์‹œ๋กœ ์ธํ•ด ๋ฐ”๋€ ์ •๋ณด๊ฐ€ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ˜์˜๋˜์ง€ ์•Š์„ ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•ด ๋ธŒ๋ผ์šฐ์ €์™€ ํ”„๋ก์‹œ ์„œ๋ฒ„๊ฐ„ ์บ์‹œ ๊ธฐ๋Šฅ ์ œํ•œ

5.4 out


  • out ๋‚ด์žฅ ๊ฐ์ฒด
    • ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ์œผ๋กœ์จ ์›น ๋ธŒ๋ผ์šฐ์ €์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š” ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ ๋‚ด์žฅ ๊ฐ์ฒด
    • jakarta.servlet.jsp.JspWriter ๊ฐ์ฒด์˜ ์ฐธ์กฐ ๋ณ€์ˆ˜
    • ์Šคํฌ๋ฆฝํŠธ๋ฆฟ์—์„œ ๋ธŒ๋ผ์šฐ์ €๋กœ ํ…์ŠคํŠธ ์ถœ๋ ฅ ์‹œ ์‚ฌ์šฉ
  • ์ฃผ์š” ๋ฉ”์„œ๋“œ
    • print
    • println
      • ์ค„ ๋ฐ”๊ฟˆ ์ ์šฉx
    • getBufferSize()

5.5 session


  • session ๋‚ด์žฅ ๊ฐ์ฒด
    • jakarta.servlet.http.HttpSession ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ฐธ์กฐ ๋ณ€์ˆ˜
    • ์ ‘์†ํ•˜๋Š” ์‚ฌ์šฉ์ž ๋ณ„๋กœ ๋”ฐ๋กœ ์ƒ์„ฑ, ์ผ์ • ์‹œ๊ฐ„ ์œ ์ง€ ํ›„ ์†Œ๋ฉธ
      • setAttribute() ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•ด ์ž„์˜์˜ ๊ฐ’์„ ์ €์žฅํ•ด ๋†“๊ณ  ํ™œ์šฉ
  • ์ฃผ์š” ๋ฉ”์„œ๋“œ
    • getAttribute(String name)
      • name์ธ ์†์„ฑ ๊ฐ’์„ Object ํ˜•ํƒœ๋กœ ๋ฐ˜ํ™˜
      • ๋ฐ˜๋“œ์‹œ ํ˜•๋ณ€ํ™˜ ์‚ฌ์šฉ
      • ์„ธ์„  ์„ค์ •๋œ ๊ฐ’ ๊ฐ€์ ธ์˜ค๊ธฐ
    • setAttribute(String name, Object value)
      • name์— value ํ• ๋‹น
    • isNew()
      • ํ•ด๋‹น ์„ธ์…˜์˜ ์ƒ์„ฑ ์—ฌ๋ถ€ ๋ฐ˜ํ™˜
      • ์ฒ˜์Œ์ด๋ฉด true, ์ด์ „ ์ƒ์„ฑ false
    • Invalidate()
      • ํ˜„์žฌ ์„ธ์…˜์— ์ €์žฅ๋œ ๋ชจ๋“  ์„ธ์…˜ ์†์„ฑ ์‚ญ์ œ
    • setMaxInactiveInterval()
      • ์„ธ์…˜ ์œ ์ง€ ์‹œ๊ฐ„ ์„ค์ •

5.6 config


  • config
    • ์„œ๋ธ”๋ฆฟ์ด ์ตœ์ดˆ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ๋  ๋•Œ ์ปจํ…Œ์ด๋„ˆ๋Š” ์„œ๋ธ”๋ฆฟ ์ดˆ๊ธฐํ™”์™€ ๊ด€๋ จ๋œ ์ •๋ณด๋ฅผ ์ฝ๊ณ  jakarta.servlet.ServletConfig ๊ฐ์ฒด์— ์ €์žฅ
    • ServletConfig ํด๋ž˜์Šค์— ๋Œ€ํ•œ ์ฐธ์กฐ ๋ณ€์ˆ˜
    • web.xml ์— ์„ค์ •๋œ ์ดˆ๊ธฐํ™” ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ฐธ์กฐํ•˜๊ธฐ ์œ„ํ•œ ์šฉ๋„๋กœ ์‚ฌ์šฉ
    • getInitParameterNames()
      • ์ดˆ๊ธฐ ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ’๋“ค์˜ ์„ค์ • ์ด๋ฆ„์„ ์—ด๊ฑฐ ๊ฐ์ฒด๋กœ ๋ฐ˜ํ™˜
    • getInitParameter(name)
      • name์— ํ•ด๋‹นํ•˜๋Š” ์ดˆ๊ธฐํ™” ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ’ ๋ฐ˜ํ™˜

5.7 application


  • appliction
    • ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ „์ฒด๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ฐ์ฒด
    • ๊ฐ ์„œ๋ธ”๋ฆฟ์ด๋‚˜ JSP์—์„œ ๊ณต์œ ํ•˜๋ ค๊ณ  ํ•˜๋Š” ๊ฐ์ข… ์ •๋ณด ์„ค์ •, ์ฐธ์กฐ
    • jakarta.servlet.ServletContext ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ฐธ์กฐ ๋ณ€์ˆ˜
    • ์„œ๋ธ”๋ฆฟ์ด ์‹คํ–‰๋˜๋Š” ํ™˜๊ฒฝ์ด๋‚˜ ์„œ๋ฒ„ ์ž์›๊ณผ ๊ด€๋ จํ•œ ์ •๋ณด๋ฅผ ์–ป๊ฑฐ๋‚˜ ๋กœ๊ทธ ํŒŒ์ผ ๊ธฐ๋ก๋“ฑ์˜ ์ž‘์—… ์ˆ˜ํ–‰
    • ์ผ๋ฐ˜์ ์œผ๋กœ ํ†ฐ์ผ“ ์‹œ์ž‘๊ณผ ์ข…๋ฃŒ ๋ผ์ดํ”„์‚ฌ์ดํด์„ ๊ฐ€์ง
  • ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ์„œ๋ฒ„ ์ •๋ณด
    • getServerInfo()
      • JSP/์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ์˜ ์ด๋ฆ„๊ณผ ๋ฒ„์ „ ๋ฐ˜ํ™˜
  • ์„œ๋ฒ„ ์ž์› ์ •๋ณด
    • getResource(path)
      • path์— ์ง€์ •๋œ ์ž์›์„ URL ๊ฐ์ฒด๋กœ ๋ฐ˜ํ™˜
    • getRealPath(path)
      • path์— ์ง€์ •๋œ ์ž์›์„ ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ์‹ค์ œ ๊ฒฝ๋กœ๋กœ ๋ฐ˜ํ™˜
    • getContext(path)
      • path์— ์ง€์ •๋œ ์ž์›์˜ context ์ •๋ณด ๋ฐ˜ํ™˜

5.8 pageContext


  • pageContext
    • jakarta.servlet.jsp.PageContext ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•œ ์ฐธ์กฐ ๋ณ€์ˆ˜
    • ๋‚ด์žฅ ๊ฐ์ฒด ์ค‘ ๊ฐ€์žฅ ๋จผ์ € ์ƒ์„ฑ๋˜๋ฉฐ ์„œ๋ธ”๋ฆฟ๋งˆ๋‹ค ํ•˜๋‚˜์”ฉ ์กด์žฌ
    • ๋‹ค๋ฅธ ๋‚ด์žฅ ๊ฐ์ฒด์— ๋Œ€ํ•œ ํ”„๋กœ๊ทธ๋žจ์ ์ธ ์ ‘๊ทผ ๋ฐฉ๋ฒ• ์ œ๊ณต
  • ๊ด€๋ จ ๋ฉ”์„œ๋“œ
    • forward(page)
      • path์— ์ง€์ •๋œ ํŽ˜์ด์ง€๋กœ ์ „๋‹ฌ
      • forward ์•ก์…˜ํƒœ๊ทธ์™€ ๋™์ผํ•œ ์—ญํ• 
    • include(page)
      • path์— ์ง€์ •๋œ ํŽ˜์ด์ง€ ํฌํ•จ
      • include ์•ก์…˜ํƒœ๊ทธ์™€ ๋™์ผํ•œ ์—ญํ• 

5.9 exception


  • exception
    • page ์ง€์‹œ์–ด์—์„œ ์˜ค๋ฅ˜ ํŽ˜์ด์ง€๋กœ ์ง€์ •๋œ JSP ํŽ˜์ด์ง€์—์„œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ ์ „๋‹ฌ๋˜๋Š” java.lang.Throwable์˜ ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•œ ์ฐธ์กฐ ๋ณ€์ˆ˜
    • ํ˜„์žฌ ํŽ˜์ด์ง€๋ฅผ ์ฒ˜๋ฆฌํ•˜๋‹ค ๋ฐœ์ƒํ•˜๋Š” ์˜ˆ์™ธ์ƒํ™ฉ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Œ

5.10 JSP ๋‚ด์žฅ๊ฐ์ฒด์™€ ์†์„ฑ ๊ด€๋ฆฌ


  • HTTP ํ”„๋กœํ† ์ฝœ ํŠน์ง•๊ณผ ๋‚ด์žฅ๊ฐ์ฒด ์†์„ฑ ๊ด€๋ฆฌ
    • HTTP๋Š” ๋น„์—ฐ๊ฒฐํ˜•์œผ๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ์„œ๋ฒ„์— ํŠน์ • ํŽ˜์ด์ง€๋ฅผ ์š”์ฒญํ•˜๊ณ  ์š”์ณฅ๊ฒฐ๊ณผ๋ฅผ ์‘๋‹ต ๋ฐ›์œผ๋ฉด ์„œ๋ฒ„์™€์˜ ์—ฐ๊ฒฐ์ด ๋Š๊ธฐ๋Š” ํ˜•ํƒœ
  • JSP ๋‚ด์žฅ๊ฐ์ฒด ์†์„ฑ ๊ด€๋ฆฌ

    image

  • request
    • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ ๋งˆ๋‹ค ์ƒ์„ฑ
    • ์„œ๋ฒ„๊ฐ€ ์‘๋‹ต ์™„๋ฃŒ ์‹œ ์ฆ‰์‹œ ์†Œ๋ฉธ
    • ํ•˜๋‚˜์˜ ์š”์ฒญ๊ณผ ์‘๋‹ต๊ณผ์ • ๋™์•ˆ๋งŒ ๋ฐ์ดํ„ฐ ์œ ์ง€
    • ํ•œ ํŽ˜์ด์ง€์—์„œ ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋กœ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ ์‹œ ์‚ฌ์šฉ
  • session
    • ํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ์›น ์‚ฌ์ดํŠธ์— ์ฒ˜์Œ ์ ‘์† ์‹œ ์ƒ์„ฑ
    • ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋‹ซ๊ฑฐ๋‚˜ ์ผ์ •์‹œ๊ฐ„ (๊ธฐ๋ณธ 30๋ถ„) ์ง€๋‚˜๋ฉด ์ž๋™ ์†Œ๋ฉธ
    • ํ•˜๋‚˜์˜ ํด๋ผ์ด์–ธํŠธ ๋‹จ์œ„๋กœ ๋ฐ์ดํ„ฐ ์œ ์ง€
    • ์žฅ๋ฐ”๊ตฌ๋‹ˆ, ๋กœ๊ทธ์ธ ์ •๋ณด๋“ฑ์— ์‚ฌ์šฉ
  • application
    • ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹œ์ž‘ ์‹œ ํ•œ๋ฒˆ๋งŒ ์ƒ์„ฑ
    • ์„œ๋ฒ„ ์ข…๋ฃŒ์‹œ๊นŒ์ง€ ์œ ์ง€
    • ๋ชจ๋“  ์‚ฌ์šฉ์ž์™€ ๋ชจ๋“  ์„ธ์…˜์—์„œ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ์ „์—ญ ๊ฐ์ฒด
    • ๋ฐฉ๋ฌธ์ž ์ˆ˜๋“ฑ์— ์‚ฌ์šฉ
  • request, session, appliction ๊ณตํ†ต
    • setAttribute(String name, Object value)
      • ์†์„ฑ ์ €์žฅ
    • getAttribute(String name)
      • name์— ํ•ด๋‹นํ•˜๋Š” Object ๋ฆฌํ„ด
  • ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜ ํ”„๋กœ๊ทธ๋žจ
    • ์ปจํ…Œ์ด๋„ˆ
      • ํ”„๋กœ๊ทธ๋žจ ๊ด€์ ์—์„œ ์ปจํ…Œ์ด๋„ˆ
        • ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰์— ๊ด€์—ฌํ•˜๋ฉฐ ๋ชจ๋“ˆํ™”๋œ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒํ•˜๊ณ  ํ”„๋กœ๊ทธ๋žจ ๊ฐ„ ์›ํ• ํ•œ ๋ฐ์ดํ„ฐ(๊ฐ์ฒด) ๊ตํ™˜์„ ์ง€์›ํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด
      • ์›น ํ”„๋กœ๊ทธ๋žจ๋„ ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜
        • ์Šคํ”„๋ง
    • ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜ ๊ทธ๋กœ๊ทธ๋žจ์˜ ์žฅ์ 
      • ํ”„๋กœ๊ทธ๋žจ ๋ชจ๋“ˆํ™” ์šฉ์ด
      • ๋…๋ฆฝ์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ๋ชจ๋“ˆ๊ฐ„ ๋ฐ์ดํ„ฐ ๊ตํ™˜ ์šฉ์ด
      • ๊ฐœ๋ณ„ ํ”„๋กœ๊ทธ๋žจ ํ™”๋ฉด, ์ƒํƒœ ์ „ํ™˜ ์‹œ ๋ฐ์ดํ„ฐ ์œ ์ง€, ๊ด€๋ฆฌ ์šฉ์ด
      • ๋‚ด์žฅ๊ฐ์ฒด๋ฅผ ํ†ตํ•ด ์ž„์˜์˜ ๊ฐ์ฒด๋ฅผ ๊ฐ๊ฐ ์ƒ๋ช…์ฃผ๊ธฐ ์‹œ์ ์— ๋”ฐ๋ผ ๊ตํ™˜ ๊ฐ€๋Šฅ
  • MVC ํŒจํ„ด๊ณผ JSP ๋‚ด์žฅ ๊ฐ์ฒด
    • MVC ํŒจํ„ด
      • model, view, controller ์„ธ๊ฐ€์ง€ ์—ญํ• ๋กœ ๊ตฌ๋ถ„ํ•ด ๊ตฌํ˜„ํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๋””์ž์ธ ํŒจํ„ด



6์žฅ ๋ฉ”์ด๋ธ JDBC ํŠธ๋žœ์žญ์…˜

6.1 ๋ฉ”์ด๋ธ


  • ๋ฉ”์ด๋ธ ์ •์˜
    • ํ”„๋กœ์ ํŠธ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋„๊ตฌ
    • ๋นŒ๋“œ ์ž๋™ํ™” ๊ธฐ๋Šฅ๊ณผ ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ ์ œ๊ณต
  • ํ”„๋กœ์ ํŠธ(๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ) ๊ด€๋ฆฌ
    • pom.xml ํŒŒ์ผ์„ ์ด์šฉํ•˜์—ฌ ํ”„๋กœ์ ํŠธ ๊ด€๋ จ๋œ jar ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ๊ด€๋ฆฌ
    • ์ •ํ˜•ํ™”๋œ ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ตฌ์กฐ ๊ด€๋ฆฌ(pom.xml)
    • ์˜์กด์„ฑ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ
      • ํŽธ๋ฆฌํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ(pom.xml, Repositorty)
      • ํ”„๋กœ์ ํŠธ ๋นŒ๋“œ์— ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๊ฐœ๋ฐœ์ž PC์— ์ž๋™ ๋‹ค์šด๋กœ๋“œ
    • ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ(pom.xml)
      • ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์ •์„ ํ†ตํ•ด ๋นŒ๋“œ ์ž๋™ํ™”
  • ๋นŒ๋“œ ์ž๋™ํ™”
    • ๋นŒ๋“œ ์ž‘์—…๋“ค์„ ๊ฐ„๋‹จํ•˜๊ณ  ์‰ฝ๊ฒŒ, ์ผ๊ด€์„ฑ ์žˆ๊ฒŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํ†ตํ•ฉ ํ™˜๊ฒฝ ์ œ๊ณต
    • ๋นŒ๋“œ๋Š” ์†Œ์Šค ์ฝ”๋“œ ํŒŒ์ผ์„ ์‹คํ–‰ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฐฐํฌํ•˜๋Š” ๊ณผ์ •
    • ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์ •์„ ํ†ตํ•ด ๊ธฐ๋Šฅ์„ ์œ„์ž„
    • ๋นŒ๋“œ ๋‹จ๊ณ„ (์ปดํŒŒ์ผ,ํ…Œ์ŠคํŠธ, ํŒจํ‚ค์ง•, ๋ฐฐํฌ)๋“ค์„ ๋นŒ๋“œ ๋ผ์ดํ”„ ์‚ฌ์ดํด์ด๋ผ๊ณ  ํ•จ
    • ๊ฐ ๋นŒ๋“œ ๋‹จ๊ณ„์—์„œ ์ˆ˜ํ–‰๋˜๋Š” ์ž‘์—…์„ ๊ณจ์ด๋ผ๊ณ  ํ•จ
    • ์‹ค์ œ ๊ณจ์€ ๊ทธ ๋‹จ๊ณ„์—์„œ ์—ฐ๊ฒฐ๋œ ํ”Œ๋Ÿฌ๊ทธ์ธ์— ์˜ํ•ด ์‹คํ–‰
  • ์˜์กด๊ด€๊ณ„(๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ) ์„ค์ • (pom.xml)
    • ํ”„๋กœ์ ํŠธ ๋‹น ํ•œ๊ฐœ์˜ pom.xmlํŒŒ์ผ ๊ด€๋ฆฌ
    • ์ตœ์ƒ์œ„ ์—˜๋ฆฌ๋จผํŠธ : project
    • 3๊ฐœ์˜ ํ•„์ˆ˜ ํ•„๋“œ
      • grouupId : ํ”„๋กœ์ ํŠธ ์กฐ์ง ๊ณ ์œ  ๋„๋ฉ”์ธ
      • artifactId : ํ”„๋กœ์ ํŠธ ๋ช…
      • version : ํ”„๋กœ์ ํŠธ ๋ฒ„์ „
    • ํ”„๋กœ์ ํŠธ ์˜์กด๊ด€๊ณ„์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ด€๋ฆฌ : dependency
  • ํ”„๋กœ์ ํŠธ ๋นŒ๋“œ ์„ค์ •
    • ํ”„๋กœ์ ํŠธ ๊ธฐ๋ณธ์ •๋ณด, ์ €์žฅ์†Œ, ํ”„๋กœ๋Ÿฌํ‹ฐ, ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ตฌ์กฐ
    • ํ”Œ๋Ÿฌ๊ทธ์ธ
    • ๊ณจ
  • Maven Repository
    • ๋ฉ”์ด๋ธ์€ ์ค‘์•™์„œ๋ฒ„์—์„œ ํ•„์š”ํ•œ ์„ค์ • ๊ฐ’์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์–ด์•ผํ•จ
    • ์ง€์—ญ ์ €์žฅ์†Œ
      • ๋กœ์ปฌ ์ €์žฅ์†Œ๋Š” ๋ฉ”์ด๋ธ์„ ๋นŒ๋“œํ•  ๋•Œ ๋‹ค์šด๋กœ๋“œํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๊ด€๋ฆฌํ•˜๋Š” ์ €์žฅ์†Œ
      • ๊ธฐ๋ณธ ์ €์žฅ์†Œ : USER_HOME/.m2/repository ๋””๋ ‰ํ„ฐ๋ฆฌ
    • ์ค‘์•™ ์ €์žฅ์†Œ
      • ์˜คํ”ˆ ์†Œ์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ๋ฉ”์ด๋ธ ํ”Œ๋Ÿฌ๊ทธ์ธ, ๋ฉ”์ด๋ธ ์•„ํ‚คํƒ€์ž…์„ ๊ด€๋ฆฌํ•˜๋Š” ์ €์žฅ์†Œ (๊ฒ€์ƒ‰์œผ๋กœ ์ฐพ์•ผ์•„ํ•จ)
    • ์›๊ฒฉ ์ €์žฅ์†Œ
      • ์ค‘์•™ ์ €์žฅ์†Œ์— ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋ณ„๋„์˜ ๋ฉ”์ด๋ธ ์ €์žฅ์†Œ๋ฅผ ์„ค์น˜ํ•˜์—ฌ ๊ด€๋ฆฌ
  • ๋ฉ”์ด๋ธ ์˜์กด์„ฑ ๊ฒ€์ƒ‰ ์ ˆ์ฐจ
    • 1๋‹จ๊ณ„ : ์ง€์—ญ ์ €์žฅ์†Œ ๊ฒ€์ƒ‰
      • ์ฐพ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์—†๋Š” ๊ฒฝ์šฐ 2๋‹จ๊ณ„
    • 2๋‹จ๊ณ„ : ์ค‘์•™ ์ €์žฅ์†Œ ๊ฒ€์ƒ‰
      • ์ฐพ์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์ง€์—ญ ์ €์žฅ์†Œ์— ์ €์žฅ
      • ์ฐพ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์—†๋Š” ๊ฒฝ์šฐ 3๋‹จ๊ณ„
      • ์›๊ฒฉ ์ €์žฅ์†Œ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์—๋Ÿฌ ๋ฐœ์ƒ ํ›„ ์ข…๋ฃŒ
    • 3๋‹จ๊ณ„ : ์›๊ฒฉ ์ €์žฅ์†Œ ๊ฒ€์ƒ‰
      • ์ฐพ์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์ง€์—ญ ์ €์žฅ์†Œ ์ €์žฅ
      • ์ฐพ๋Š” ๋ผ์ด๋ธŒ๋ฒ„๋ฆฌ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์—๋Ÿฌ ๋ฐœ์ƒ ํ›„ ์ข…๋ฃŒ
  • Maven ๋ผ์ดํ”„์‚ฌ์ดํด
    • ๋ฏธ๋ฆฌ ์ •ํ•ด์ง„ ๋นŒ๋“œ ์ˆœ์„œ ์˜๋ฏธ
    • build ๋ผ์ดํ”„ ์‚ฌ์ดํด
      • ์—ฌ๋Ÿฌ ๋‹จ๊ณ„์˜ ํŽ˜์ด์ง€๋กœ ๋‚˜๋‰˜์–ด์ ธ ์žˆ์œผ๋ฉฐ, ๊ฐ ํŽ˜์ด์ฆˆ๋Š” ์˜์กด ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง
        • ํ•˜๋‚˜ ์ด์ƒ์˜ ๊ณจ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํŽ˜์ด์ฆˆ๋“ค๋กœ ๊ตฌ์„ฑ
        • ๊ฐ ํŽ˜์ด์ฆˆ ๋ณ„๋กœ ํ”Œ๋Ÿฌ๊ทธ์ธ ์ž‘์—… ์ˆ˜ํ–‰ โ†’ Goal

        image

      • compile โ†’ test โ†’ package deploy ์ˆœ์„œ๋กœ ์ง„ํ–‰
  • clean ๋ผ์ดํ”„ ์‚ฌ์ดํด
    • clean ํŽ˜์ด์ง€๋ฅผ ์ด์šฉํ•˜์—ฌ ์ด์ „ ๋นŒ๋“œ์—์„œ ์ƒ์„ฑ๋œ ๋ชจ๋“  ํŒŒ์ผ(target ๋””๋ ‰ํ„ฐ๋ฆฌ) ์‚ญ์ œ
  • site ๋ผ์ดํ”„ ์‚ฌ์ดํด
    • site, site-deploy ํŽ˜์ด์ฆˆ๋ฅผ ์ด์šฉํ•˜์—ฌ ์ƒ์„ฑ๋œ ๋ฌธ์„œ๋“ค์„ ๋Œ€์ƒ ์‚ฌ์ดํŠธ์— ๋ฐฐํฌ

6.2 JDBC ๊ธฐ๋ณธ ๊ตฌ์กฐ์™€ API ์ดํ•ด


  • ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
    • ๊ณ ์ •๋œ ํ–‰(๋ฐ์ดํ„ฐ)์™€ ์—ด(์†์„ฑ)๋กœ ๊ตฌ์„ฑ๋œ ํ…Œ์ด๋ธ”์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋ฉฐ ์†์„ฑ์„ ํ†ตํ•ด ํ…Œ์ด๋ธ” ๊ฐ„์˜ ๊ด€๊ณ„ ์ •์˜
    • ์ •ํ˜• ๋ฐ์ดํ„ฐ์— ์ ํ•ฉ
    • MySQL, ORACLE, SQLiteโ€ฆ
  • NoSQL ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค
    • RDBMS์˜ ๊ฐ€์žฅ ํฐ ํŠน์ง•์ธ ํ…Œ์ด๋ธ” ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํ˜•ํƒœ๊ฐ€ ๊ณ ์ •๋˜์ง€ ์•Š์€ ๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์ ํ•ฉ
    • MongoDB, Redisโ€ฆ
  • JDBC ๊ฐœ๋…๊ณผ ์—ญํ• 
    • JDBC
      • ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์—์„œ ์„œ๋กœ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํ‘œ์ค€ํ™”๋œ ๋ฐฉ๋ฒ•์œผ๋กœ ์ ‘์† ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“  API ๊ทœ๊ฒฉ
      • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ข…๋ฅ˜์™€ ๋ฌด๊ด€ํ•˜๊ฒŒ ํ‘œ์ค€ํ™”๋œ API๋ฅผ ์ด์šฉํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ ๊ฐ€๋Šฅ
  • JDBC ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋‹จ๊ณ„
    • 1๋‹จ๊ณ„ : JDBC ๋“œ๋ผ์ด๋ฒ„ ๋กœ๋”ฉ
      • JDBC API ์‚ฌ์šฉ์„ ์œ„ํ•ด์„œ ๋จผ์ € JDBC ๊ทœ๊ฒฉ์— ๋”ฐ๋ฅธ ์‹ค์ œ ๊ตฌํ˜„๋œ ๊ฐ JDBC ๋“œ๋ผ์ด๋ฒ„ ํด๋ž˜์Šค ๋กœ๋”ฉํ•ด์•ผํ•จ
        1. jdbc.drivers ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์ด์šฉ
          • System.setProperty(โ€œjdbc.driversโ€,โ€com.mysql.cj.jdbc.Driverโ€);
        2. Class.forName() ๋ฉ”์„œ๋“œ ์ด์šฉ
          • Class.forName(โ€œcom.mysql.cj.jdbc.Driverโ€); // MySQL JDBC Driver 6 ์ด์ƒ
    • 2๋‹จ๊ณ„ : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ
      • DriverManager ํด๋ž˜์Šค์˜ getConnection() ๋ฉ”์„œ๋“œ ์‚ฌ์šฉ
        • Connection conn = DriverManager.getConnection(jdbc_url , โ€idโ€, โ€passwdโ€);
          • JDBC URL์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ๋‹ค์–‘ํ•œ ์ •๋ณด ํฌํ•จ
          • ๊ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ณ„๋กœ JDBC URL์ด ๋‹ค๋ฅด๋ฏ€๋กœ, ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฉ”๋‰ด์–ผ ์ฐธ๊ณ 
    • 3๋‹จ๊ณ„ : Statement ์ƒ์„ฑ
      • Statement = ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ๋กœ๋ถ€ํ„ฐ SQL ๋ฌธ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ํด๋ž˜์Šค
        • executeQuery()
          • SELECT๋ฌธ ์ˆ˜ํ–‰ ์‹œ ์‚ฌ์šฉ
        • executeUpdate()
          • UPDATE, INSERT, DELETE์™€ ๊ฐ™์€ ๋ฌธ ์ˆ˜ํ–‰ ์‹œ ์‚ฌ์šฉ
      • Statement ๊ฐ์ฒด
        • ์ฟผ๋ฆฌ๋ฅผ ๋ฌธ์ž์—ด๋กœ ์—ฐ๊ฒฐ โ†’ ์†Œ์Šค ๋ณต์žกํ•˜๊ณ  ์˜ค๋ฅ˜ ๋ฐœ์ƒ ์‰ฌ์›€
      • PreparedStatement ๊ฐ์ฒด
        • SQL์— ํ•„์š”ํ•œ ๋ณ€์ˆ˜ ๋ฐ์ดํ„ฐ๋ฅผ โ€œ?โ€๋กœ ํ‘œ๊ธฐํ•˜๊ณ  ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์„ค์ •ํ•˜๋Š” ๋ฐฉ์‹
        • Statement ๋ณด๋‹ค ๊ตฌ์กฐ์ ์ด๊ณ  ํŽธ๋ฆฌ
        • pstmt.setXxxx() ๋ฉ”์„œ๋“œ๋Š” ๋ฐ์ดํ„ฐ ํƒ€์ž… ๋ณ„๋กœ ์ œ๊ณต โ†’ DB ํ…Œ์ด๋ธ” ์ปฌ๋Ÿผ์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์— ๋งž์ถฐ ์‚ฌ์šฉ
        • ์‚ฌ์šฉํ•œ JDBC ๋ฆฌ์†Œ์Šค๋Š” ๋ช…์‹œ์ ์œผ๋กœ ๋ฐ˜๋‚ฉ
          • stmt.close();
          • pstmt.close();
    • 4๋‹จ๊ณ„ : SQL๋ฌธ ์ „์†ก
      • ๋ฐ์ดํ„ฐ ์กฐํ•ฉ๊ณผ ํ•จ๊ป˜ ๋งŒ๋“ค์–ด์ง„ SQL๋ฌธ์€ ๋ช…์‹œ์ ์ธ ์ฒ˜๋ฆฌ ๋ช…๋ น์— ์˜ํ•ด DB๋กœ ์ „๋‹ฌ๋˜์–ด ์‹คํ–‰
      • ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์ด ์žˆ๋Š” ์ฟผ๋ฆฌ (insert, delete, update)
        • executeUpdate() ์‚ฌ์šฉ
      • select ๋ฌธ ๊ฒฝ์šฐ executeQuery() ๋ฉ”์„œ๋“œ ์‚ฌ์šฉ
        • ์กฐํšŒ ๊ฒฐ๊ณผ ๋ฐ›๊ธฐ ์œ„ํ•ด ResultSet ๊ฐ์ฒด ์‚ฌ์šฉ
    • 5๋‹จ๊ณ„ : ๊ฒฐ๊ณผ ๋ฐ›๊ธฐ
      • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์กฐํšŒ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›๊ธฐ ์œ„ํ•ด์„œ๋Š” Statement, PreparedStatement์˜ execiyteQuery() ์‚ฌ์šฉ
      • ์กฐํšŒ ๊ฒฐ๊ณผ์ธ ResultSet ๊ฐ์ฒด๋Š” ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ํฌ์ธํŠธ์˜ ์ง‘ํ•ฉ ๊ฐœ๋…
      • ResultSet๋ฅผ ์ด์šฉํ•ด ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•์€ rs.next() ๋ฉ”์„œ๋“œ
        • ๋‹ค์Œ ๋ฐ์ดํ„ฐ ํ™•์ธ, ๋ฐ์ดํ„ฐ ์žˆ๋Š” ๊ฒฝ์šฐ re.getXxx() ๋ฉ”์„œ๋“œ ์ด์šฉํ•˜์—ฌ ํŠน์ • ์ปฌ๋Ÿผ์— ํ•ด๋‹นํ•˜๋Š” ๋ฐ์ดํ„ฐ ์ฝ์–ด ์‚ฌ์šฉ
    • 6๋‹จ๊ณ„ : ์—ฐ๊ฒฐ ํ•ด์ œ
      • ์‚ฌ์šฉ์ด ๋๋‚œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ์€ conn.close() ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋‹ซ์Œ
        • rs.close();
        • pstmt.close();
        • conn.close();

6.3 ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๋™์„ ์œ„ํ•œ ๋นˆ์ฆˆ


  • JSP ์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€์˜ ์—ฐ๋™์„ ์œ„ํ•œ ๋นˆ์ฆˆ ๊ตฌํ˜„ 3๊ฐ€์ง€ ํ˜•ํƒœ
    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๋™์„ ํฌํ•จํ•ด์„œ ๋ฐ์ดํ„ฐ์™€ ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ์„ ํ•จ๊ป˜ ๊ตฌํ˜„
      • DO, DAO ํด๋ž˜์Šค ํ†ตํ•ฉ ํ˜•ํƒœ
    • ๋ฐ์ดํ„ฐ ๋งคํ•‘๊ณผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฒ˜๋ฆฌ๋ฅผ ๋ถ„๋ฆฌ ๊ตฌํ˜„
      • DO, DAO ํด๋ž˜์Šค ๋ถ„๋ฆฌ ํ˜•ํƒœ
    • ๋ณ„๋„์˜ O-R ๋งคํ•‘ ํ”„๋ ˆ์ž„์›Œํฌ ์‚ฌ์šฉ
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๋™์„ ํฌํ•จํ•ด์„œ ๋ฐ์ดํ„ฐ์™€ ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ์„ ํ•จ๊ป˜ ๊ตฌํ˜„
    • DO, DAO ํด๋ž˜์Šค ํ†ตํ•ฉ ํ˜•ํƒœ
    • ๋นˆ์ฆˆ ๋‚ด๋ถ€์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ ‘์† ๊ด€๋ จ ์ •๋ณด ํฌํ•จ โ†’ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฒ˜๋ฆฌ ๋กœ์ง ๊ฐ–๋Š” ํ˜•ํƒœ
    • ์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ๊ฐœ๋ฐœ ๊ฐ€๋Šฅ
    • ๋น„๊ต์  ๊ฐ„๋‹จํ•œ ํ”„๋กœ๊ทธ๋žจ ๊ตฌํ˜„์— ์ด์šฉ
  • ๋ฐ์ดํ„ฐ ๋งคํ•‘๊ณผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฒ˜๋ฆฌ๋ฅผ ๋ถ„๋ฆฌ ๊ตฌํ˜„
    • DO, DAO ํด๋ž˜์Šค ๋ถ„๋ฆฌ ํ˜•ํƒœ
      • DO ํด๋ž˜์Šค์—๋Š” ํ…Œ์ด๋ธ”๊ณผ ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๋Š” ํ•„๋“œ ๊ด€๋ จ ๊ธฐ๋Šฅ๋งŒ ์กด์žฌ
      • DO(๋ฐ์ดํ„ฐ ์˜ค๋ธŒ์ ํŠธ) : ๊ธฐ๋Šฅ์—†์ด ๊ฐ’๋งŒ ๋“ค์–ด๊ฐ€ ์žˆ๋Š” ํด๋ž˜์Šค
    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ ‘์†๊ณผ ๊ด€๋ จํ•œ ์ •๋ณด์™€ ์ž…๋ ฅ, ์ถœ๋ ฅ, ์‚ญ์ œ์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ์€ DAO ํด๋ž˜์Šค์— ๊ตฌํ˜„
      • DAO(๋ฐ์ดํ„ฐ ์•ก์„ธ์Šค ์˜ค๋ธŒ์ ํŠธ)
    • ๊ตฌํ˜„์ด ์–ด๋ ต์ง€๋งŒ ์œ ์ง€๋ณด์ˆ˜ ์œ ๋ฆฌ
    • ์ฃผ๋กœ MVC ํŒจํ„ด๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉ
  • ๋ณ„๋„์˜ O-R ๋งคํ•‘ ํ”„๋ ˆ์ž„์›Œํฌ ์‚ฌ์šฉ
    • ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฒ˜๋ฆฌ๋ฅผ ๋‹ด๋‹นํ•˜๋Š” DAO ํด๋ž˜์Šค ๋Œ€์‹  O-R ๋งคํ•‘ ํ”„๋ ˆ์ž„์›Œํฌ ์‚ฌ์šฉ
    • O-R ๋งคํ•‘
      • ๋นˆ์ฆˆ(๋„๋ฉ”์ธ) ๊ฐ์ฒด์™€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์˜ ์นผ๋Ÿผ์„ ์ž๋™์œผ๋กœ ์—ฐ๊ฒฐ, ์ด๋“ค์˜ ๊ฐ’ ๋™๊ธฐํ™”ํ•˜๋ฉฐ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜ ์ œ๊ณต
      • ๊ฐœ๋ฐœ์˜ ์ƒ์‚ฐ์„ฑ์™€ ์•ˆ์ „์„ฑ ๋†’์Œ
      • DO๋ฅผ VO(Value Object), DTO(Data Transfer Objext)๋กœ ์‚ฌ์šฉ
        • VO
          • Getter๋งŒ ์กด์žฌ (Read Only)
          • ๋‹จ์ˆœ ๋ฐ์ดํ„ฐ ๊ฐ์ฒด
          • ๊ฐ’๋งŒ ์ €์žฅ ๊ฐ€๋Šฅ โ†’ ์ˆ˜์ • ๋ถˆ๊ฐ€
        • DTO
          • Getter, Setter(Read, Write) ์กด์žฌ
          • ๊ณ„์ธต๊ฐ„ ๋ฐ์ดํ„ฐ ๊ตํ™˜์„ ์œ„ํ•œ ๊ฐ์ฒด
      • JPA : table๊ณผ class๊ฐ€ ์ž๋™ ๋งคํ•‘ (SQL ๋ชฐ๋ผ๋„ ์‚ฌ์šฉ ์‰ฌ์›€)
        • DO ์—ญํ• ์„ Entity Class ์—์„œ ์ œ๊ณต
      • MyBatis : SQL ๋ง˜๋Œ€๋กœ ์‚ฌ์šฉ๊ฐ€๋Šฅ ํ•ด์•ผํ•จ

ํƒœ๊ทธ:

์นดํ…Œ๊ณ ๋ฆฌ:

์—…๋ฐ์ดํŠธ: