Skip to content

YeonBini/java_next_step

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

13 Commits
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

java_next_step

Practice for Next_Step book

Chapter 2.

์ƒ๊ฐํ•ด๋ณผ๊ฑฐ๋ฆฌ

  1. ์‹ค์ œ๋กœ ์„œ๋น„์Šค๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ํ”„๋กœ๋•์…˜ ์ฝ”๋“œ์™€ ์ด ํ”„๋กœ๋•์…˜ ์ฝ”๋“œ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•œ main() ํ˜น์€ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋กœ ๋ถ„๋ฆฌ
  2. ํ”„๋กœ๋•์…˜ ์ฝ”๋“œ์—์„œ ์ ‘๊ทผ์ž(public, protected, private ๋“ฑ)์„ ์„ค์ •ํ•˜๋Š” ๊ธฐ์ค€์€ ๋ฌด์—‡?
  3. private method๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด์•ผํ•˜๋Š”๊ฐ€?
  4. ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ else๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋ง๋ผ๊ณ  ํ•œ๋‹ค. ์™œ?
  5. ์š”๊ตฌ์‚ฌํ•ญ ์ด์™ธ์—๋„ ์ถ”๊ฐ€์ ์œผ๋กœ ํ•„์š”ํ•œ ์š”๊ตฌ์‚ฌํ•ญ์— ๋Œ€ํ•ด์„œ ๊ณ„์† ๊ณ ๋ฏผ ํ•„์š”. ์ถ”๊ฐ€์ ์ธ ์˜ˆ์™ธ ์ƒํ™ฉ์ด ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ ๊ฒ€ํ†  ๊ธฐํƒ€. intellij์—์„œ ์ผ๋ฐ˜ java project junit ์„ค์ • ๋ฐฉ๋ฒ•์€? (ํ•˜๊ธด ํ–ˆ์ง€๋งŒ ๊ตฌ๋ฆฌ๊ฒŒ ํ•œ ๊ฑฐ ๊ฐ™์Œ)

Chapter 3.

์œ ์šฉํ•œ ์ž๋ฃŒ ๋ฐ ๋งํฌ๋“ค

  • ๋ฆฌ๋ˆ…์Šค ์ปค๋„ : [๋ฆฌ๋ˆ…์Šค ์ปค๋งจ๋“œ๋ผ์ธ ์™„๋ฒฝ ์ž…๋ฌธ์„œ] or https://youtu.be/JbH-xzD7IkE
  • ํฌ๋กฌ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ : http://goo.gl/Mq6hRd (๋งํฌ ๊นจ์ง)

Cookie ๊ด€๋ จ ๋‚ด์šฉ

  1. ์„œ๋ฒ„์—์„œ ํ•œ ๋ฒˆ๋งŒ ์ฟ ํ‚ค ์ •๋ณด๋ฅผ ๋ณด๋‚ด๋ฉด ๋ธŒ๋ผ์šฐ์ ธ์—์„œ ์ฟ ํ‚ค๋ฅผ ์œ ์ง€ํ•จ
  2. ์ฟ ํ‚ค ์ƒ์„ฑ ์ผ€์ด์Šค
    • ์ฒ˜์Œ ๋กœ๊ทธ์ธ ํ–ˆ์„ ๋•Œ ์ตœ์ดˆ์— logined=true ๋งŒ๋“ค์–ด์คŒ
    • ํ•œ ๋ฒˆ๋งŒ logined=true๋งŒ๋“ค์–ด์ค€ ์ดํ›„์—๋Š” ๋”ฐ๋กœ ์„ธํŒ…ํ•ด์ค„ ํ•„์š” ์—†์Œ
    • ๋กœ๊ทธ์•„์›ƒ ํ–ˆ์„ ๋•Œ logined=false๋กœ ๋งŒ๋“ค์–ด ์คŒ
  3. ์ฟ ํ‚ค ์ƒ์„ฑ ์‹œ /user ํ•˜์œ„์—์„œ ์ฟ ํ‚ค๋ฅผ ์ƒ์„ฑํ•˜๋ฉด /index.html์—์„œ๋Š” ์ƒ์„ฑ๋œ ์ฟ ํ‚ค๊ฐ€ ๋ณด์ด์ง€ ์•Š๋Š”๋‹ค.
    • Set-Cookie์—์„œ path๋ฅผ ์ง€์ •ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. (์˜ˆ : Set-Cookie: logined=true;path=/)

Chapter 5.

java ํŒŒ์ผ์—์„œ ํŒŒ์ผ ๊ฒฝ๋กœ ์„ค์ •

  • './'๋กœ ์„ค์ •ํ•˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์˜ root๋กœ ์ธ์‹์„ ํ•˜๋Š” ๊ฑด๊ฐ€?
    • ์ •์  ์ฝ˜ํ…์ธ (html, css, javascript)์˜ ๊ฒฝ์šฐ์—๋Š” ๋ฆฌ์†Œ์Šค์ด๊ธฐ ๋•Œ๋ฌธ์— .., ..., ../ ๋“ฑ์œผ๋กœ ์ƒ๋Œ€๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•˜์ง€๋งŒ, ๋™์  ์ฝ˜ํ…์ธ ์˜ ๊ฒฝ์šฐ(class ํŒŒ์ผ) ํ”„๋กœ์ ํŠธ ํด๋”๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๊ฒฝ๋กœ๊ฐ€ ์„ค์ •์ด ๋œ๋‹ค. (์˜ˆ: ./๋กœ ํ•˜๋ฉด ํ”„๋กœ์ ํŠธ ํด๋”์˜ 1depth์ด๋‹ค.)

java i/o package ์ •๋ฆฌ

  • ์ž๋ฐ”์—์„œ ๋ฐ์ดํ„ฐ๋Š” ์ŠคํŠธ๋ฆผ(Stream)์„ ํ†ตํ•ด ์ž…์ถœ๋ ฅ ๋œ๋‹ค.
  • ๋ฐ”์ดํŠธ ๊ธฐ๋ฐ˜ ์ŠคํŠธ๋ฆผ์€ ๊ทธ๋ฆผ, ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด, ๋ฌธ์ž ๋“ฑ ๋ชจ๋“  ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›๊ณ  ๋ณด๋‚ผ ์ˆ˜ ์žˆ์œผ๋‚˜, ๋ฌธ์ž ๊ธฐ๋ฐ˜ ์ŠคํŠธ๋ฆผ์€ ์˜ค๋กœ์ง€ ๋ฌธ์ž๋งŒ ๋ฐ›๊ณ  ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋„๋ก ํŠนํ™”๋˜์–ด ์žˆ๋‹ค.
java.io ํŒจํ‚ค์ง€์˜ ์ฃผ์š” ํด๋ž˜์Šค ์„ค๋ช…
File ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ์ •๋ณด๋ฅผ ์–ป๊ธฐ ์œ„ํ•œ ํด๋ž˜์Šค
Console ์ฝ˜์†”๋กœ๋ถ€ํ„ฐ ๋ฌธ์ž๋ฅผ ์ž…์ถœ๋ ฅํ•˜๊ธฐ ์œ„ํ•œ ํด๋ž˜์Šค
InputStream/OutputStream ๋ฐ”์ดํŠธ ๋‹จ์œ„ ์ž…์ถœ๋ ฅ์„ ์œ„ํ•œ ์ตœ์ƒ์œ„ ์ž…์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ
FileInputStream/FileOutputStream
DataInputStream/DataOutputStream
ObjectInputStream/ObjectOutputStream
PrintStream
BufferedInputStream/BufferedOutputStream
๋ฐ”์ดํŠธ ๋‹จ์œ„ ์ž…์ถœ๋ ฅ์„ ์œ„ํ•œ ํ•˜์œ„ ์ŠคํŠธ๋ฆผ
Reader/Writer ๋ฌธ์ž ๋‹จ์œ„ ์ž…์ถœ๋ ฅ์„ ์œ„ํ•œ ์ตœ์ƒ์œ„ ์ŠคํŠธ๋ฆผ ํด๋ž˜์Šค
FileReader/FileWriter
InputStreamReader/InputStreamWriter
PrintWriter
BufferedReader/BufferedWriter
๋ฌธ์ž ๋‹จ์œ„ ์ž…์ถœ๋ ฅ์„ ์œ„ํ•œ ํ•˜์œ„ ์ŠคํŠธ๋ฆผ ํด๋ž˜์Šค

์ƒ๊ฐํ•  ๊ฑฐ๋ฆฌ๋“ค

  • ๋…๋ฆฝ์ ์œผ๋กœ ์กด์žฌํ•˜๋Š” ์ƒ์ˆ˜ ๊ฐ’์€ ๊ตณ์ด enum์œผ๋กœ ์ถ”๊ฐ€ํ•  ํ•„์š”๋Š” ์—†์ง€๋งŒ, ๋‚จ์ž(M), ์—ฌ์ž(F) ๋˜๋Š” ๋™,์„œ,๋‚จ,๋ถ ๊ณผ ๊ฐ™์ด ์ƒ์ˆ˜๊ฐ’์ด ์—ฐ๊ด€์„ฑ์„ ๊ฐ€์ง€๋Š” ๊ฒฝ์šฐ enum์„ ์‚ฌ์šฉํ•˜๊ธฐ ์ ํ•ฉํ•˜๋‹ค. (์˜ˆ : GET, POST)
  • ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„๋ฅผ ์ฒ˜์Œ ์—ฐ์Šตํ•  ๋•Œ ์š”๊ตฌ์‚ฌํ•ญ์ด ๋ช…ํ™•ํ•˜์ง€ ์•Š์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๊ธฐ ๋ณด๋‹ค "์ง€๋ขฐ์ฐพ๊ธฐ", "์ฒด์Šค๊ฒŒ์ž„" ๋“ฑ ์ด๋ฏธ ์š”๊ตฌ์‚ฌํ•ญ์ด ๋ช…ํ™•ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ์—ฐ์Šตํ•˜๋Š” ๊ฒƒ์„ ์ถ”์ฒœ
  • OCP(Open-Closed Principle) ์›์น™ : ์š”๊ตฌ์‚ฌํ•ญ์˜ ๋ณ€๊ฒฝ์ด๋‚˜ ์ถ”๊ฐ€์‚ฌํ•ญ์ด ๋ฐœ์ƒํ•˜๋”๋ผ๋„ ๊ธฐ์กด ๊ตฌ์„ฑ์š”์†Œ๋Š” ์ˆ˜์ •์ด ์ผ์–ด๋‚˜์ง€ ๋ง์•„์•ผ ํ•˜๋ฉฐ, ๊ธฐ์กด ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ์‰ฝ๊ฒŒ ํ™•์žฅํ•ด์„œ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  • ์„œ๋ธ”๋ฆฟ์€ ์•ž์—์„œ ๊ตฌํ˜„ํ•œ ์›น์„œ๋ฒ„์˜ Controller, HttpRequest, HttpResponse๋ฅผ ์ถ”์ƒํ™”ํ•ด ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์ •์˜ํ•ด ๋†“์€ ํ‘œ์ค€. ์„œ๋ธ”๋ฆฟ์€ ์›น์„œ๋น„์Šค๋ฅผ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋กœ, ์›์น™์ ์œผ๋กœ๋Š” javax.servlet.Servlet ์ธํ„ฐํŽ˜์ด์Šค์˜ ๊ตฌํ˜„์ฒด. ์ผ๋ฐ˜์ ์ธ java ๋…๋ฆฝ ์‹คํ–‰ํ”„๋กœ๊ทธ๋žจ๊ณผ๋Š” ๋‹ฌ๋ฆฌ main ๋ฉ”์„œ๋“œ๊ฐ€ ์—†์œผ๋ฉฐ, ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ์— ๋“ฑ๋ก๋œ ํ›„ ์ปจํ…Œ์ด๋„ˆ์— ์˜ํ•ด ์ƒ์„ฑ, ํ˜ธ์ถœ, ์†Œ๋ฉธ์ด ์ผ์–ด๋‚œ๋‹ค. ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๋Š” ์ด๋Ÿฌํ•œ ์„œ๋ธ”๋ฆฟ์„ ๊ด€๋ฆฌํ•˜๋ฉฐ ๋„คํŠธ์›Œํฌ ํ†ต์‹ , ์„œ๋ธ”๋ฆฟ์˜ ์ƒ๋ช…์ฃผ๊ธฐ ๊ด€๋ฆฌ, ์Šค๋ ˆ๋“œ ๊ธฐ๋ฐ˜์˜ ๋ณ‘๋ ฌ์ฒ˜๋ฆฌ๋ฅผ ๋Œ€ํ–‰ํ•œ๋‹ค. ์ฆ‰, ์›น ํด๋ผ์ด์–ธํŠธ๋กœ ๋ถ€ํ„ฐ HTTP ์š”์ฒญ์ด ์ „๋‹ฌ๋˜๋ฉด ํ•ด๋‹น HTTP ์š”์ฒญ์„ ํ•ด์„ํ•˜์—ฌ ์ ์ •ํ•œ ์„œ๋ธ”๋ฆฟ์˜ service ๋ฉ”์„œ๋“œ๋ฅผ ServletRequet, ServletResponse ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ํ•จ๊ป˜ ํ˜ธ์ถœ.
  • ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๋Š” ์š”์ฒญ์ด ๋“ค์–ด์˜ฌ ๋•Œ ๋งˆ๋‹ค ์ƒˆ๋กœ์šด java thread๋ฅผ ๋งŒ๋“ ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์•Œ๊ณ  ์žˆ๋Š” ๋Œ€ํ‘œ์ ์ธ ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ Tomcat์ด๋‹ค. Tomcat๊ฐ™์€ was๊ฐ€ java ํŒŒ์ผ์„ ์ปดํŒŒ์ผํ•ด์„œ class ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ ค ์„œ๋ธ”๋ฆฟ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ ๋‹ค.
  • ์ปจํ…Œ์ด๋„ˆ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ƒ๋ช…์ฃผ๊ธฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. ์ปจํ…Œ์ด๋„ˆ์— ์˜ํ•ด ์ธ์Šคํ„ด์Šค๊ฐ€ ๊ด€๋ฆฌ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ดˆ๊ธฐํ™”, ์†Œ๋ฉธ๊ณผ ๊ฐ™์€ ์ž‘์—…์„ ์œ„ํ•œ ๋ฉ”์†Œ๋“œ๋ฅผ ์ธํ„ฐํŽ˜์ด์Šค ๊ทœ์•ฝ์œผ๋กœ ๋งŒ๋“ค์–ด ๋†“๊ณ  ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
  • github์˜ ํŠน์ • ๋ธŒ๋žœ์น˜๋ฅผ ๊ทธ๋Œ€๋กœ ๋กœ์ปฌ์— ์ƒ์„ฑํ•˜๊ธฐ

์›๊ฒฉ ์ €์žฅ์†Œ์˜ ๋ธŒ๋žœ์น˜ ๋กœ์ปฌ์— ์ƒ์„ฑ

git checkout -b step0-getting-started origin/step0-getting-started

Chapter 6.

  • UpdateUserServlet ์—์„œ user์ •๋ณด update ์‹œ database๋ฅผ ํ˜ธ์ถœํ•˜์ง€ ์•Š์•„๋„ ๋˜๋Š” ๊ฒƒ์€ Database์—์„œ addUser์‹œ User ๋ฉ”๋ชจ๋ฆฌ ์œ„์น˜๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ๋ฉ”๋ชจ๋ฆฌ ์œ„์น˜์˜ User ์ •๋ณด๋งŒ ๋ฐ”๊พธ์–ด์ฃผ๋ฉด ์ž๋™์ ์œผ๋กœ update๊ฐ€ ๋œ๋‹ค.
  • ์„ธ์…˜์ด ์ƒํƒœ ๋ฐ์ดํ„ฐ๋ฅผ ์›น ์„œ๋ฒ„์—์„œ ๊ด€๋ฆฌํ•œ๋‹ค๋Š” ์ ๋งŒ ๋‹ค๋ฅผ ๋ฟ HTTP์—์„œ ์ƒํƒœ ๊ฐ’์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ’์„ ์ „๋‹ฌํ•  ๋•Œ๋Š” ์ฟ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  • @WebServlet์—์„œ loadOnStartUp ์กฐ๊ฑด
    • ๋ณดํ†ต์˜ ์„œ๋ธ”๋ฆฟ์€ ํ•ด๋‹น ์„œ๋ธ”๋ฆฟ์— ์ตœ์ดˆ ์š”์ฒญ์ด ๋“ค์–ด์˜ฌ ๋•Œ์—๋งŒ ํ•ด๋‹น ์ธ์Šคํ„ด์Šคํ™” ์ดˆ๊ธฐ ์„ค์ •์„ ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, ์ด๋Š” ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— Context์˜ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํ†ฐ์บฃ์— ์˜ํ•ด ์ธ์‹๋˜๋Š” ์‹œ์ ์— ์„œ๋ธ”๋ฆฟ์ด ์ดˆ๊ธฐํ™” ๋˜๋„๋ก ์„ค์ •ํ•˜๋Š” ๊ฒƒ
    • ์Œ์ˆ˜์ผ ๋•Œ๋Š” ํ†ฐ์บฃ ์‹คํ–‰ ์‹œ ์ž๋™์œผ๋กœ ์„œ๋ธ”๋ฆฟ ํ˜ธ์ถœ๋˜์ง€ ์•Š์œผ๋ฉฐ, ์–‘์ˆ˜์ผ ๋•Œ 0์— ๊ฐ€๊นŒ์šธ์ˆ˜๋ก ๋จผ์ € ์ดˆ๊ธฐํ™”๋จ. ๊ฐ™์€ ์ˆซ์ž๊ฐ€ mapping๋˜์—ˆ์„ ๊ฒฝ์šฐ ๋จผ์ € ์ž‘์„ฑ๋œ ์„œ๋ธ”๋ฆฟ๋ถ€ํ„ฐ ์ดˆ๊ธฐํ™”๋จ
  • SerialVersionUID ์ƒ์„ฑ ์ด์œ ๋Š”?
    • Serializable์„ ์ƒ์†๋ฐ›์€ ๊ฐ์ฒด์ด๊ธฐ ๋•Œ๋ฌธ์—(DispatcherServelt, Exception)
    • ์„œ๋ธ”๋ฆฟ ๊ธฐ๋ฐ˜์˜ WAS(ํ†ฐ์บฃ, ์›น๋กœ์ง ๋“ฑ)๋“ค์€ ๋Œ€๋ถ€๋ถ„ ์„ธ์…˜์˜ ์ž๋ฐ” ์ง๋ ฌํ™”๋ฅผ ์ง€์›ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.๋ฌผ๋ก  ๋‹จ์ˆœํžˆ ์„ธ์…˜์„ ์„œ๋ธ”๋ฆฟ ๋ฉ”๋ชจ๋ฆฌ ์œ„์—์„œ ์šด์šฉํ•œ๋‹ค๋ฉด ์ง๋ ฌํ™”๋ฅผ ํ•„์š”๋กœ ํ•˜์ง€ ์•Š์ง€๋งŒ, ํŒŒ์ผ๋กœ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์„ธ์…˜ ํด๋Ÿฌ์Šคํ„ฐ๋ง, DB๋ฅผ ์ €์žฅํ•˜๋Š” ์˜ต์…˜ ๋“ฑ์„ ์„ ํƒํ•˜๊ฒŒ ๋˜๋ฉด ์„ธ์…˜ ์ž์ฒด๊ฐ€ ์ง๋ ฌํ™”๊ฐ€ ๋˜์–ด ์ €์žฅ๋˜์–ด ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค.
    • Exception ์ •์˜ ์‹œ SerialVersionUID๊ฐ€ ์ค‘๋ณต๋˜์–ด๋„ ๊ดœ์ฐฎ์€๊ฑด๊ฐ€??
  • tomcat์—์„œ๋Š” localhost:8080๊ฒฝ๋กœ๋กœ ๋“ค์–ด์™”์„ ๋•Œ ๊ธฐ๋ณธ์ ์œผ๋กœ index.jsp, index.html ํŒŒ์ผ์„ ๋จผ์ € ์ฐพ๋Š”๋‹ค.
    • index.jsp ํŒŒ์ผ์„ home.jspํŒŒ์ผ๋กœ ๋ณ€๊ฒฝํ•˜์˜€์Œ.
  • dispatcherServlet์—์„œ urlmapping์„ "/" ๋กœ ํ•ด์ฃผ๋Š” ๊ฒƒ์€ jsp ํŒŒ์ผ์€ ๊ธฐ๋ณธ ํ†ฐ์บฃ ์„ค์ •์—์„œ ์ฐพ๊ฒŒํ•˜๋ฉฐ, ๋‚˜๋จธ์ง€ ๋™์ ์ธ ์˜์—ญ์— ๋Œ€ํ•ด์„œ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ๊ธฐ ์œ„ํ•จ์ด๋‹ค.

shell script

    wget http://apache.mirror.cdnetworks.com/tomcat/tomcat-8/v8.5.47/bin/apache-tomcat-8.5.47.tar.gz
    gunzip apache-tomcat-8.5.47.tar.gz
    # -x : ์••์ถ•ํ•ด์ œ, -v : ์ง„ํ–‰์œจ, -f : ํŒŒ์ผ 
    tar -xvf apache-tomcat-8.5.47.tar
    ln -s apache-tomcat-8.5.47/ tomcat
    git checkout -b origin/step1-user-completed-no-database
    rm -rf /home/yeonbn/tomcat/webapps/ROOT
    cp -r jwp-basic /home/yeonbn/tomcat/webapps/ROOT

Chapter7

  • ContextLoaderListener
    • ํ†ฐ์บฃ ์„œ๋ฒ„๊ฐ€ ์‹œ์ž‘ํ•  ๋•Œ contextInitialized() ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์ดˆ๊ธฐํ™” ์ž‘์—… ์‹คํ–‰
    • ContextLoaderListener๋Š” ServeletContextListener ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ @WebListener ์• ๋…ธํ…Œ์ด์…˜์ด ์„ค์ •๋˜์–ด ์žˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ๊ณผ์ •์—์„œ contextInitialized() ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ด ์ดˆ๊ธฐํ™” ์ž‘์—…์„ ์ง„ํ–‰ํ•œ๋‹ค.
    • ์„œ๋ธ”๋ฆฟ ์ดˆ๊ธฐํ™”๊ฐ€ ํ•ด๋‹น ์„œ๋ธ”๋ฆฟ๊ณผ ๊ด€๋ จํ•œ ์ดˆ๊ธฐํ™”๋ฅผ ๋‹ด๋‹นํ•œ๋‹ค๋ฉด ServletContextListener ์ดˆ๊ธฐํ™”๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ „์ฒด์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ์ดˆ๊ธฐํ™”๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • PreparedStatement์—์„œ setValue ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ ์‹œ ๋ฆฌํ„ด ๊ฐ’ ์—†์ด ์„ธํŒ…๋งŒ ํ•ด์ฃผ์–ด๋„ PreparedStatement์— ๋ฐ˜์˜์ด ์™œ ๋˜๋Š”๊ฑฐ์ง€?
  • PreparedStatementMapper, RowMapper ์ธํ„ฐํŽ˜์ด์Šค ์ƒ์„ฑ
    • ๋ฉ”์†Œ๋“œ ํ•˜๋‚˜๋งŒ ๊ฐ€์ง€๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์„ฑํ•œ ํ›„ ํ•„์š”์— ๋”ฐ๋ผ ๋ฉ”์†Œ๋“œ์˜ ์ธ์ž๋กœ ์ „๋‹ฌํ•ด ์•ž ๋‹จ๊ณ„์—์„œ ๋ฐœ์ƒํ•œ ๋ฌธ์ œ์ ์„ ํ•ด๊ฒฐํ–ˆ๋‹ค. ์ฆ‰, ๋ณ€ํ™” ์‹œ์ ์ด ๋‹ค๋ฅธ ๋ถ€๋ถ„์„ ์„œ๋กœ ๋‹ค๋ฅธ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๋ถ„๋ฆฌํ•จ์œผ๋กœ์จ ๊ณตํ†ต ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•œ ์œ ์—ฐํ•จ์„ ๋†’์ผ ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค. ์ด ์˜ˆ์ œ์—์„œ ์‚ฌ์šฉํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ฝœ๋ฐฑ(callback) ์ธํ„ฐํŽ˜์ด์Šค๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.
    • ์ฝœ๋ฐฑ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ํ•จ์ˆ˜ํ˜• ์–ธ์–ด์—์„œ ํ•จ์ˆ˜๋ฅผ ๋ฉ”์†Œ๋“œ์˜ ์ธ์ž๋กœ ์ „๋‹ฌํ•จ์œผ๋กœ์จ ์œ ์—ฐํ•จ์„ ์–ป๋Š” ๊ฒƒ๊ณผ ๊ฐ™๋‹ค. ์ž๋ฐ”๊ฐ€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋ฐ–์— ์—†๋Š” ์ด์œ ๋Š” ๊ธฐ๋ณธ๋‹จ์œ„๊ฐ€ ํ•จ์ˆ˜๊ฐ€ ์•„๋‹Œ ํด๋ž˜์Šค์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  • Runtime Exception, Compile Exception
  • try-with-resource ๊ตฌ๋ฌธ์— ์‚ฌ์šฉํ•  ํด๋ž˜์Šค๋Š” java.io.AutoClosable์„ ์ƒ์†ํ•˜๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค.
    • Connection, PreparedStatement, ResultSet
  • ์ œ๋„ค๋ฆญ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฌํŒฉํ† ๋ง ํ•˜๋ฉด ๋ฐ์ดํ„ฐ ์กฐํšŒ ์‹œ ๊ตณ์ด ์บ์ŠคํŒ…์„ ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.
  • ๋žŒ๋‹ค๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ฉ”์†Œ๋“œ๊ฐ€ ํ•˜๋‚˜๋งŒ ์กด์žฌํ•ด์•ผ ํ•œ๋‹ค. ๋˜ํ•œ ๋žŒ๋‹ค ํ‘œํ˜„์‹์œผ๋กœ ์‚ฌ์šฉํ•  ์ธํ„ฐํŽ˜์ด์Šค๋ผ๊ณ  ์ง€์ •ํ•˜๋ ค๋ฉด ์ธํ„ฐํŽ˜์ด์Šค์— @FunctionalInterface ์• ๋…ธํ…Œ์ด์…˜์„ ์ถ”๊ฐ€ํ•ด์•ผํ•œ๋‹ค.
  • filter์™€ interceptor์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€
    • filter
    • interceptor : ๋กœ๊น…

Chapter8

  • model hashcode์™€ equals๋ฅผ ์ƒ์†ํ•ด์•ผํ•˜๋Š” ์ด์œ ์— ๋Œ€ํ•ด์„œ โ†’https://minwan1.github.io/2018/07/03/2018-07-03-equals,hashcode/
  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ this๋Š” ํ•ด๋‹น ํ•จ์ˆ˜๋ฅผ ๋ˆ„๊ฐ€ ํ˜ธ์ถœํ•˜๋А๋ƒ์— ๋”ฐ๋ผ this ๊ฐ€ ๋ณ€๊ฒฝ๋œ๋‹ค....... ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ this์— ๋Œ€ํ•ด ๋” ๊นŠ์ด ์žˆ๊ฒŒ ํ•™์Šตํ•˜๋ ค๋ฉด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฌธ์„œ์—์„œ Scope๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ถ€๋ถ„์„ ํ•™์Šตํ•˜๋ฉด ๋œ๋‹ค. ์ด ๋ถ€๋ถ„์„ ํ•™์Šตํ•˜๋‹ค๋ณด๋ฉด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ apply(), call(), bind() ํ•จ์ˆ˜๋„ ๋“ฑ์žฅํ•˜๋Š”๋ฐ ์ด ์„ธ ํ•จ์ˆ˜์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด์„œ๋„ ํ•™์Šตํ•ด์•ผ ํ•œ๋‹ค.
  • ModelAndView๋ฅผ ๋งŒ๋“ค์–ด์„œ controller์™€ view์—์„œ ๋งŒ๋“ค์—ˆ๋˜ model๋ฅผ ๋งŒ๋“ค๊ณ , View๋Š” ์ฃผ์ž…์„ ๋ฐ›๋Š”๋‹ค.
  • db trigger๋กœ ๋‹ต๋ณ€ ๊ฐฏ์ˆ˜๋ฅผ ๊ธฐ๋กํ•  ์ˆ˜๋Š” ์—†์„๊นŒ?

About

Practice for next step book

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages