๐Ÿ“Œ 1. SelfMedi

Spring์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  Servlet/JSP ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐœ๋ฐœํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ณธ์ธ ๋‹ด๋‹น ์ฝ”๋“œ

๐Ÿ’ก ๋Š๋‚€์ 

์ฒซ ํ”„๋กœ์ ํŠธ๋ผ ๊ฑฑ์ •์ด ๋งŽ์•˜์ง€๋งŒ, ํŒ€์›๋“ค๊ณผ ๋ถ„์—…์„ ํ•˜๋ฉฐ ๋จธ๋ฆฌ๋ฅผ ๋งž๋Œ€์–ด ํ•˜๋‚˜์”ฉ ํ•ด๊ฒฐํ•ด ๋‚˜๊ฐ€๋ฉด ๋œ๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค. ํŒ€์›๋“ค๊ณผ์˜ ํ˜‘๋ ฅ๊ณผ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ๋ฐ ์‹ ๋ขฐ๊ฐ€ ์ค‘์š”ํ•จ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋™์•ˆ ๋ฐฐ์šด Servlet, jQuery, jstl, JSP๊ธฐ๋ฐ˜์˜ MVC2 ๋ชจ๋ธ ํ๋ฆ„์„ ํ™•์‹คํ•˜๊ฒŒ ์•Œ๊ฒŒ ๋˜์—ˆ๊ณ , ๋ฐฐ์šฐ์ง€ ์•Š์•˜๋˜ ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ๊ณผ ๊ตฌํ˜„ ๋ฐฉ๋ฒ•๋„ ๊ฒ€์ƒ‰์„ ํ†ตํ•ด ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค. ํ•œํŽธ์œผ๋กœ๋Š” ์‹œ๊ฐ„์  ์—ฌ์œ ๊ฐ€ ๋ถ€์กฑํ•ด ์›ํ–ˆ๋˜ ๊ธฐ๋Šฅ๋“ค์„ ๋‹ค ๋„ฃ์ง€ ๋ชปํ•ด ์•„์‰ฌ์› ๊ณ , ๋ชจ๋ฅด๋Š” ๊ฒƒ์ด ๋งŽ์Œ์„ ์•Œ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ’ก ๊ฐœ์š”

๋ณด๋‹ค ์‰ฝ๊ณ  ๊ฐ„ํŽธํ•˜๊ฒŒ ๊ฑด๊ฐ•๊ธฐ๋Šฅ์‹ํ’ˆ์„ ์ถ”์ฒœ๋ฐ›์•„ ์ œํ’ˆ์„ ๊ตฌ๋งคํ•˜๊ณ  ๋ณต์šฉํ•˜์—ฌ ๊ฑด๊ฐ•๊ด€๋ฆฌ์— ๋„์›€์„ ์ฃผ๋Š” ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ค ์˜์–‘์„ ์ฑ™๊ฒจ์•ผํ• ์ง€ ๊ณ ๋ฏผ์ธ ์‚ฌ์šฉ์ž, ๋ถ€๋ชจ๋‹˜ ์—ฐ๋ น๋Œ€์— ํ•„์š”ํ•œ ์˜์–‘์ œ๊ฐ€ ๊ถ๊ธˆํ•œ ์‚ฌ์šฉ์ž, ์˜จ๋ผ์ธ์— ๋ฌด๋ถ„๋ณ„ํ•œ ๊ด‘๊ณ ๋กœ ๊ณ ๋ฏผ์ธ ์‚ฌ์šฉ์ž, ํ˜„์žฌ ๋ณต์šฉ ์ค‘์ธ ์˜์–‘์ œ์— ์ถ”๊ฐ€์˜์–‘์ œ๋ฅผ ๋จน์–ด๋„ ๋ ์ง€ ๊ณ ๋ฏผ์ธ ์‚ฌ์šฉ์ž๋“ค์„ ์œ„ํ•œ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก ๊ตฌํ˜„ ๊ธฐ๋Šฅ

  • ํšŒ์›๊ฐ€์ž… : 1. ์ผ๋ฐ˜ํšŒ์› 2. ์‚ฌ์—…์žํšŒ์› (ํŒŒ์ผ ์—…๋กœ๋“œ)
  • ๋กœ๊ทธ์ธ(jQuery Tab) : 1. ์ผ๋ฐ˜๋กœ๊ทธ์ธ 2. ์‚ฌ์—…์ž๋กœ๊ทธ์ธ 3. ์•„์ด๋”” ์ฐพ๊ธฐ, ํŒจ์Šค์›Œ๋“œ์ฐพ๊ธฐ
  • ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž ์ž์œ  ๊ฒŒ์‹œํŒ, ๊ฒŒ์‹œ๊ธ€ ์กฐํšŒ, ์ž‘์„ฑ, ์ˆ˜์ •, ์‚ญ์ œ, ์‹ ๊ณ ,
    • Ajax๊ธฐ๋Šฅ ์ด์šฉ : ๋Œ“๊ธ€์ž‘์„ฑ, ๋Œ“๊ธ€ ์ˆ˜์ •(๋ณธ์ธ), ๋Œ“๊ธ€ ์‚ญ์ œ(๋ณธ์ธ)
  • QnA๊ฒŒ์‹œํŒ : ๊ฒŒ์‹œ๊ธ€ ์กฐํšŒ,์ž‘์„ฑ, ์ˆ˜์ •, ์‚ญ์ œ, ์‹ ๊ณ ,
    • Ajax๊ธฐ๋Šฅ ์ด์šฉ : ๋Œ“๊ธ€ ์ž‘์„ฑ(์˜๋ฃŒ๊ณ„ ์ข…์‚ฌ์ž๋งŒ ๋Œ“๊ธ€ ์ž‘์„ฑ ๊ฐ€๋Šฅ), ๋Œ“๊ธ€ ์ˆ˜์ •(๋ณธ์ธ), ๋Œ“๊ธ€ ์‚ญ์ œ(๋ณธ์ธ)
  • ๊ณต์ง€์‚ฌํ•ญ ๊ฒŒ์‹œํŒ
    • Ajax๊ธฐ๋Šฅ ์ด์šฉ : ๋Œ“๊ธ€์ž‘์„ฑ, ๋Œ“๊ธ€ ์ˆ˜์ •(๋ณธ์ธ), ๋Œ“๊ธ€ ์‚ญ์ œ(๋ณธ์ธ)
  • ์ž๊ฐ€์ง„๋‹จ : ์ž๊ฐ€์ง„๋‹จํ‘œ ์ž‘์„ฑ, ๊ฒฐ๊ณผํ‘œ ๋ณด๊ธฐ, ์ƒํ’ˆ ์ถ”์ฒœ ๋ฐ ๋งํฌ ์—ฐ๊ฒฐ
  • ๋งˆ์ดํŽ˜์ด์ง€: ์‚ฌ์šฉ์ž ์ •๋ณด ํ™•์ธ, ์ž๊ฐ€์ง„๋‹จ ๊ฒฐ๊ณผํ‘œ ๋ณด๊ธฐ, ๋ณธ์ธ์ด ์ž‘์„ฑํ•œ ๊ฒŒ์‹œ๋ฌผ ์กฐํšŒ, ์‚ฌ์šฉ์ž ์ •๋ณด ์ˆ˜์ •(๋‹‰๋„ค์ž„, ๋น„๋ฐ€๋ฒˆํ˜ธ, ์ด๋ฉ”์ผ, ํœด๋Œ€์ „ํ™”๋ฒˆํ˜ธ)
  • ์ƒํ’ˆ
    • ์ƒํ’ˆ์ง„์—ด : ํ†ตํ•ฉ๊ฒ€์ƒ‰๊ธฐ๋Šฅ, ์˜์–‘์ œ ํ•„ํ„ฐ ๋Œ€, ์ค‘, ์†Œ๋ถ„๋ฅ˜, ๋ณ„์ ์ˆœ(jstar ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ) ์ง„์—ด๊ธฐ๋Šฅ(GET ๋ฐฉ์‹ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ), ์ƒํ’ˆ์‚ฌ์ง„, ์ด๋ฆ„, ๋ณ„์  ๋…ธ์ถœ
    • ์ƒํ’ˆ์ƒ์„ธ : ์ƒํ’ˆ์˜ id๋กœ ์ƒํ’ˆ์˜ ์ƒ์„ธ์ •๋ณด DB์กฐํšŒ(์˜์–‘์†Œ, ํ•จ๋Ÿ‰) (GET ๋ฐฉ์‹ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ), ๋กœ๊ทธ์ธ์‹œ ๋น„๊ตํ•จ ์ถ”๊ฐ€ ๋ฐ ์ด๋™, ์˜์–‘์†Œ ์„ฑ๋ถ„ ํ‘œ์‹œ ๋ฐ ๊ถŒ์žฅ๋Ÿ‰ ์‹œ๊ฐํ™”, ์•„์ด์ฝ˜ ํด๋ฆญ ์‹œ ์„ฑ๋ถ„ ์ •๋ณด display toggle(์˜์–‘์†Œ ์ƒ์„ธ์ •๋ณด)
    • ์ƒํ’ˆ ๋น„๊ตํ•จ : ์ฒดํฌ๋ฐ•์Šค ๋“ฑ๋ก๋œ ์˜์–‘์ œ ์ค‘ ์„ ํƒ ๊ฐ€๋Šฅ (2๊ฐœ ์„ ํƒ์‹œ ๋‚˜๋จธ์ง€ ๋น„ํ™œ์„ฑํ™”), ๋“ฑ๋ก๋œ ์˜์–‘์ œ ์ด๋ฏธ์ง€ ์˜์–‘์ œ ํ’ˆ๋ช…, ์ œ์กฐํšŒ์‚ฌ, ๋ณ„์  ํ‘œ๊ธฐ
    • ์ƒํ’ˆ ๋น„๊ต : ์˜์–‘์ œ ์ด๋ฏธ์ง€, ํ’ˆ๋ช…, ์ œ์กฐ๊ตญ, ํ‰์ , (GET ๋ฐฉ์‹ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ), ํฌํ•จ ์˜์–‘์†Œ ์ผ์ผ ์„ญ์ทจ๋Ÿ‰, ๊ถŒ์žฅ๋Ÿ‰ ํ‘œ๊ธฐ, ์„ญ์ทจ๋Œ€์ƒ ๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜ ๋ฏธ๋‹ฌ, ์ถฉ์กฑ, ์ดˆ๊ณผ์ƒํƒœ ๊ทธ๋ž˜ํ”„ ํ‘œ๊ธฐ, ํฌํ•จ๋Ÿ‰ ํ‘œ๊ธฐ (meterํƒœ๊ทธ)
  • ์ƒํ’ˆ ํ•ฉ์‚ฐ : ์ƒํ’ˆ ์ •๋ณดํ‘œ๊ธฐ, ๋“ฑ๋ก ์˜์–‘์ œ ์˜์–‘์†Œ ํ•จ๋Ÿ‰ ํ•ฉ์‚ฐ ๊ทธ๋ž˜ํ”„, ํ•จ๋Ÿ‰ ์ˆซ์ž ํ‘œ๊ธฐ
  • ๊ด€๋ฆฌ์ž : ํšŒ์›๊ด€๋ฆฌ, ์ƒํ’ˆ๊ด€๋ฆฌ, ์‹ ๊ณ ๊ฒŒ์‹œํŒ, ์ž์œ ๊ฒŒ์‹œํŒ, QnA ๊ฒŒ์‹œํŒ, ๊ณต์ง€์‚ฌํ•ญ ๊ฒŒ์‹œํŒ, ๊ฒŒ์‹œ๊ธ€ ์กฐํšŒ, ์ž‘์„ฑ, ์ˆ˜์ •, ์‚ญ์ œ, ์‹ ๊ณ , ๋Œ“๊ธ€ ์ž‘์„ฑ, ์ˆ˜์ •, ์‚ญ์ œ
    • ์ƒํ’ˆ ๋ชฉ๋ก : ๋“ฑ๋ก๋œ ์ƒํ’ˆ๋“ค์˜ ๋ชฉ๋ก์„ ์กฐํšŒ, ์ƒํ’ˆ๋ช…์„ ํด๋ฆญํ•˜๋ฉด ์ƒํ’ˆ ์ƒ์„ธ ํŽ˜์ด์ง€๋กœ ์ด๋™, ์ƒํ’ˆ ์‚ญ์ œ ๊ธฐ๋Šฅ
    • ์ƒํ’ˆ ๋“ฑ๋ก : ์ƒํ’ˆ ์ถ”๊ฐ€๊ธฐ๋Šฅ, ์ƒํ’ˆ์˜ ์ƒ์„ธ ์ •๋ณด๋“ค์„ ์ž…๋ ฅ(POST๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ)
    • ์ƒํ’ˆ ์ˆ˜์ •: ์ƒํ’ˆ์„ ์ˆ˜์ •ํ•˜๋Š” ํŽ˜์ด์ง€, ์ˆ˜์ • ์ „, ๊ธฐ์กด์˜ ์ •๋ณด๊ฐ€ ์กฐํšŒ, ์ƒˆ๋กญ๊ฒŒ ์ˆ˜์ •ํ•  ์ƒํ’ˆ์˜ ์ƒ์„ธ ์ •๋ณด๋“ค์„ ์ž…๋ ฅ, ๊ฐ input box์— ์ •๋ณด๋ฅผ ์ž…๋ ฅ(POST๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ)

๐Ÿ’ก ์„ค๊ณ„์˜ ์ฃผ์•ˆ์ 

  • ์ผ๋ฐ˜ํšŒ์›, ๋น„ํšŒ์›, ์‚ฌ์—…์žํšŒ์›, ๊ด€๋ฆฌ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜์—ฌ ๊ฐ๊ฐ์˜ ์ •๋ณด์™€ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•œ๋‹ค
  • ์ƒํ’ˆ์„ ์ง„์—ดํ•˜๊ณ  ์›ํ•˜๋Š” ์ƒํ’ˆ์„ ์„ ํƒํ•˜์—ฌ ๋น„๊ต, ํ•ฉ์‚ฐ์œผ๋กœ ๊ถŒ์žฅ๋Ÿ‰๋Œ€๋น„ ์˜์–‘์ •๋ณด๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.
  • ์˜๋ฃŒ๊ณ„ ์ข…์‚ฌ์ž๋งŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š” QnA ๋Œ“๊ธ€ ์‹œ์Šคํ…œ ๋ฐ ๋ชจ๋“  ์‚ฌ์šฉ์ž๊ฐ€ ์ž์œ ๋กญ๊ฒŒ ์˜์–‘์ œ ์ •๋ณด๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ž๊ฐ€์ง„๋‹จํ‘œ๋ฅผ ์ž‘์„ฑํ•˜์—ฌ ์ž์‹ ์—๊ฒŒ ํ•„์š”ํ•œ ์˜์–‘์ œ ์ถ”์ฒœ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ’ก ์‚ฌ์šฉ๊ธฐ์ˆ  ๋ฐ ๊ฐœ๋ฐœํ™˜๊ฒฝ

  • ์šด์˜์ฒด์ œ : Window10 64bit
  • Open Source & Library : BootStrap, ojdbc6, Jstl,standard, commons-io, commons, fileupload, cos
  • IDE : Eclipse, Oracle SQL Dveleoper 11g
  • Server: Apache Tomcat 9.0
  • Development Language : Java/Spring, HTML5 , CSS3 , JavaScript , jQuery, SQL , JSP ,servlet, Javdoc, OJDBC
  • Team Coop : Github, ERDCloud, KaKaoOven, GoogleDriver, Discord, Noction

๐Ÿ’ก ํŒ€ ๊ตฌ์„ฑ

  • ์ด๋ฆ„ : ์†ก๋ณ‘ํ›ˆ - ์—ญํ•  : ์ž๊ฐ€์ง„๋‹จ, ์—๋Ÿฌ ํŽ˜์ด์ง€ ์ฒ˜๋ฆฌ, Filter ์ฒ˜๋ฆฌ, ์ „๋ฐ˜์ ์ธ UI(CSS), ์˜ค๋ฅ˜ ํ™•์ธ ๋ฐ ํ•ด๊ฒฐ
  • ํŒ€์› 1 (ํŒ€์žฅ) - ์—ญํ•  : ํ”„๋กœ์ ํŠธ ์ผ์ • ๋ฐ ์ „์ฒด๊ด€๋ฆฌ, ํšŒ์›๊ฐ€์ž… ๋ฐ ํŒŒ์ผ ์ฒจ๋ถ€ ๊ธฐ๋Šฅ, ๋กœ๊ทธ์ธ, ํšŒ์›๊ฐ€์ž… UI
  • ํŒ€์› 2 - ์—ญํ•  : ์ž์œ ๊ฒŒ์‹œํŒ , ๊ณต์ง€์‚ฌํ•ญ, ๊ฒŒ์‹œ๊ธ€ ์‹ ๊ณ ๊ธฐ๋Šฅ, ์‹ ๊ณ ๊ฒŒ์‹œํŒ , ๊ด€๋ฆฌ์ž ๊ฒŒ์‹œํŒ
  • ํŒ€์› 3 - ์—ญํ•  : ๋น„๊ตํ•จํŽ˜์ด์ง€, ๋น„๊ตํ•จ ์‚ญ์ œ, ํ•ฉ์‚ฐ๊ธฐ๋Šฅ, ๋น„๊ต๊ธฐ๋Šฅ, ๊ด€๋ฆฌ์ž ์ƒํ’ˆ์ •๋ณด ์ˆ˜์ •ํŽ˜์ด์ง€
  • ํŒ€์› 4 - ์—ญํ•  : ์ƒํ’ˆ์ง„์—ด ํŽ˜์ด์ง€, ์ƒํ’ˆ์ƒ์„ธ ํŽ˜์ด์ง€, ๊ด€๋ฆฌ์ž ์ƒํ’ˆ๋ชฉ๋กํŽ˜์ด์ง€, ๊ด€๋ฆฌ์ž ์ƒํ’ˆ๋“ฑ๋กํŽ˜์ด์ง€, ๊ด€๋ฆฌ์ž ์ƒํ’ˆ์‚ญ์ œ๊ธฐ๋Šฅ
  • ํŒ€์› 5 - ์—ญํ•  : ๋กœ๊ทธ์ธ, ์•„์ด๋””์ฐพ๊ธฐ, ๋น„๋ฐ€๋ฒˆํ˜ธ์ฐพ๊ธฐ, ๊ด€๋ฆฌ์ž ํšŒ์›๊ด€๋ฆฌ๋ชฉ๋ก(์ˆ˜์ •,์‚ญ์ œ), ํšŒ์›์ƒ์„ธ๋ณด๊ธฐ(๋ชฉ๋ก,์‚ญ์ œ)
  • ํŒ€์› 6 - ์—ญํ•  : ๋Œ“๊ธ€, QnA๊ฒŒ์‹œํŒ, ๋งˆ์ดํŽ˜์ด์ง€, ๋งˆ์ดํŽ˜์ด์ง€ ์ˆ˜์ •

๐Ÿ’ก ๊ธฐ์—ฌ๋„

  • 20% (๊ตฌ์„ฑ์› 7๋ช…)

๐Ÿ’ก ์ž‘๋™์›๋ฆฌ

  • Servlet๊ธฐ๋ฐ˜์˜ Controller์—์„œ๋Š” ServiceํŒŒ์ผ๋กœ ์ด๋™ํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ฑฐ๋‚˜ web page view๋กœ ์ด๋™ํ•˜์—ฌ ํŽ˜์ด์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ์ž‘๋™์„ ํ•˜๊ณ 
  • ServiceํŒŒ์ผ์—์„œ๋Š” DaoํŒŒ์ผ๋กœ ์ด๋™ํ•˜์—ฌ DaoํŒŒ์ผ ์•ˆ์—์„œ DB์™€ ์—ฐ๊ฒฐ๋œ SQL๋ฌธ์„ ์ˆ˜ํ–‰ํ•˜๊ณ  eclilpse์™€ ์—ฐ๋™๋˜์–ด java์ฝ”๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • DTOํด๋ž˜์ŠคํŒŒ์ผ์—๋Š” ํ•„๋“œ์™€ getter/setter๋ฅผ ๋งŒ๋“ค์–ด์„œ ์„œ๋กœ ๋‹ค๋ฅธ ํŒŒ์ผ์—์„œ ํ•„๋“œ๋“ค ํ†ตํ•ด data์˜ ์ด๋™์ด ๊ฐ„ํŽธํ•ด์ง‘๋‹ˆ๋‹ค.
  • SQL๋ฌธ์„ ์ˆ˜ํ–‰ํ•œ ์ดํ›„์˜ ์ •๋ณด๋ฅผ ๊ฐ์ฒด์— ๋‹ด์•„์„œ view page๋กœ ์ „์†กํ•ด์ค๋‹ˆ๋‹ค.
  • view page์—์„œ๋Š” HTML, CSS, JSP, jstl, el, jQuery ๋“ฑ์„ ์ด์šฉํ•˜์—ฌ Controller์—์„œ ์ „๋‹ฌ๋ฐ›์€ data๋ฅผ ํ™”๋ฉด์—์„œ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.
  • Server์™€ Client๊ฐ„์˜ ์†Œํ†ต์ด ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.