๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Legacy

2022.02.22์˜ ๊ธฐ๋ก

by GroovyArea 2022. 2. 22.

โ–ถ ์˜ค๋Š˜ ์‹คํ˜„ ๊ฐ€๋Šฅํ•œ ์„ธ๋ถ€ ๋ชฉํ‘œ

=>  ๊ณต๋ถ€ ๊ด€๋ จ

1) ์ŠคํŠธ๋ฆผ

2) ์ž๋ฐ” ๋ฆฌํŒฉํ† ๋ง

3) ๊ธˆ์ผ ๋ฐฐ์šด ๋‚ด์šฉ ๋ณต์Šต

4) ์Šคํ”„๋ง ๊ฐ์ฒด์ง€ํ–ฅ ์ฑ… 1๋‹จ์› 

 

=> ํŒŒ์ด๋„ ํ”„๋กœ์ ํŠธ ๊ด€๋ จ

1) ํ™”๋ฉด ์„ค๊ณ„์„œ ํšŒ์˜ (ํŠธ๋ ˆ์ด๋„ˆ ๊ด€๋ฆฌ ๋ถ€๋ถ„)


โ–ถ ๋ฌธ์ œ ์ •๋ฆฌ

1. ์ต๋ช… ๊ฐ์ฒด์˜ ๊ฐœ๋… ์ •์˜๊ฐ€ ํ™•์‹ค์น˜ ์•Š์•„์„œ ๋žŒ๋‹ค์‹์˜ ์ดํ•ด๊ฐ€ ์–ด๋ ค์› ๋‹ค.

=> ์ต๋ช… ๊ฐ์ฒด(ํด๋ž˜์Šค)์˜ ๊ฐœ๋… ํ™•์‹คํžˆ ์ •๋ฆฌ

=> ์ผํšŒ์„ฑ์˜ ์ด๋ฒคํŠธ์ด๋ฏ€๋กœ ๊ฐ์ฒด์— ๋”ฐ๋กœ ์ •์˜ํ•˜๋Š” ๊ฒƒ์ž„.


โ–ถ ๊ณต๋ถ€ ๋‚ด์šฉ

JSTL (Java Standard Tag Library)

foreach ํƒœ๊ทธ

  • ํƒœ๊ทธ๋‚ด์šฉ์„ ๋ฐ˜๋ณต์ ์œผ๋กœ ํฌํ•จํ•˜์—ฌ ์ถœ๋ ฅํ•˜๊ธฐ ์œ„ํ•œ ํƒœ๊ทธ
  • var ์†์„ฑ : ์Šค์ฝ”ํ”„ ๊ฐ์ฒด์— ์ €์žฅ๋œ ์†์„ฑ๊ฐ’
  • begin ์†์„ฑ : ์Šค์ฝ”ํ”„ ๊ฐ์ฒด์— ์ €์žฅ๋  ์‹œ์ž‘๊ฐ’(Integer)์„ ์†์„ฑ๊ฐ’์œผ๋กœ ์„ค์ •
  • end ์†์„ฑ : ์Šค์ฝ”ํ”„ ๊ฐ์ฒด์— ์ €์žฅ๋  ์ข…๋ฃŒ๊ฐ’(Integer)์„ ์†์„ฑ๊ฐ’์œผ๋กœ ์„ค์ •
  • step ์†์„ฑ: ์ฆ๊ฐ€๊ฐ’(Integer)์„ ์†์„ฑ๊ฐ’์œผ๋กœ ์„ค์ •

⇒ foreach ํƒœ๊ทธ๋Š” ๋ฐฐ์—ด ๋˜๋Š” ์ปฌ๋ ‰์…˜์˜ ์š”์†Œ ๊ฐ’์„ ๋ฐ˜๋ณต์ ์œผ๋กœ ์ œ๊ณต๋ฐ›์•„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ธฐ๋Šฅ ์ œ๊ณต

  • var ์†์„ฑ : ์š”์†Œ ๊ฐ’์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ์Šค์ฝ”ํ”„ ๊ฐ์ฒด์˜ ์†์„ฑ๋ช…
  • items ์†์„ฑ : ๋ฐ˜๋ณต ์ฒ˜๋ฆฌํ•  ๋ฐฐ์—ด ๋˜๋Š” ์ปฌ๋ ‰์…˜์„ ์†์„ฑ๊ฐ’์œผ๋กœ ์„ค์ •

fortokens ํƒœ๊ทธ

  • ์Šค์ฝ”ํ”„ ๊ฐ์ฒด์— ์ €์žฅ๋œ ์†์„ฑ๊ฐ’์„ ํŠน์ • ๋ฌธ์ž์—ด๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ๋ฐ˜๋ณต ์ฒ˜๋ฆฌํ•˜๋Š” ํƒœ๊ทธ
  • items ์†์„ฑ : ๋ถ„๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์Šค์ฝ”ํ”„ ๊ฐ์ฒด์˜ ์†์„ฑ๊ฐ’(String)์„ ์†์„ฑ๊ฐ’์œผ๋กœ ์„ค์ •
  • delims ์†์„ฑ : ๋ถ„๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๊ตฌ๋ถ„๊ฐ’(String)์„ ์†์„ฑ๊ฐ’์œผ๋กœ ์„ค์ •
  • var ์†์„ฑ : ๋ถ„๋ฆฌ๋œ ๊ฐ’์„ ๋ฐ˜๋ณต์ ์œผ๋กœ ์ œ๊ณต๋ฐ›๊ธฐ ์œ„ํ•œ ์†์„ฑ๋ช…์„ ์†์„ฑ๊ฐ’์œผ๋กœ ์„ค์ •

import ํƒœ๊ทธ

  • ๋‹ค๋ฅธ ์›นํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ์‘๋‹ต๋ฐ›์•„ ํฌํ•จํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ํƒœ๊ทธ
  • url ์†์„ฑ : ์‘๋‹ต ๊ฒฐ๊ณผ๋ฅผ ํฌํ•จ์‹œํ‚ฌ ์›นํ”„๋กœ๊ทธ๋žจ์˜ URL ์ฃผ์†Œ๋ฅผ ์†์„ฑ๊ฐ’์œผ๋กœ ์„ค์ •
  • ⇒ include ์•ก์…˜ ํƒœ๊ทธ์™€ ์œ ์‚ฌํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณต
  • include ํƒœ๊ทธ๋Š” ํ˜„์žฌ ์„œ๋ฒ„์˜ ์›นํ”„๋กœ๊ทธ๋žจ๋งŒ์„ ์š”์ฒญํ•˜์—ฌ ์‹คํ–‰๊ฒฐ๊ณผ๋ฅผ ์‘๋‹ต๋ฐ›์•„ ํฌํ•จํ•˜์ง€๋งŒ import ํƒœ๊ทธ๋Š” ๋‹ค๋ฅธ ์„œ๋ฒ„์˜ ์›นํ”„๋กœ๊ทธ๋žจ์„ ์š”์ฒญํ•˜์—ฌ ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ์‘๋‹ต๋ฐ›์•„ ํฌํ•จ ๊ฐ€๋Šฅ
  • ⇒ HTML์˜ iframe ํƒœ๊ทธ์™€ ์œ ์‚ฌํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณต
  • URL ๊ด€๋ฆฌ ํƒœ๊ทธ์—๋Š” param ํƒœ๊ทธ๋ฅผ ํ•˜์œ„ํƒœ๊ทธ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ’ ์ „๋‹ฌ ๊ฐ€๋Šฅ

param ํƒœ๊ทธ

  • ์š”์ฒญ ์›นํ”„๋กœ๊ทธ๋žจ์—๊ฒŒ ๊ฐ’์„ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•œ ํƒœ๊ทธ
  • ⇒ URL ๊ด€๋ฆฌ ํƒœ๊ทธ์˜ ์ข…์† ํƒœ๊ทธ
  • ⇒ URL ๊ด€๋ฆฌ ํƒœ๊ทธ์— param ํƒœ๊ทธ๋ฅผ ์ œ์™ธํ•œ ์ฝ”๋“œ๊ฐ€ ์กด์žฌํ•  ๊ฒฝ์šฐ ์—๋Ÿฌ ๋ฐœ์ƒ - JSP ์ฃผ์„ ์˜ˆ์™ธ

redirect ํƒœ๊ทธ

  • ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ URL ์ฃผ์†Œ๋ฅผ ์ „๋‹ฌํ•˜์—ฌ ์žฌ์š”์ฒญ ํ•˜๋„๋ก ์‘๋‹ตํ•˜๋Š” ํƒœ๊ทธ
  • url ์†์„ฑ : ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์žฌ์š”์ฒญํ•  ์›นํ”„๋กœ๊ทธ๋žจ์˜ URL ์ฃผ์†Œ๋ฅผ ์†์„ฑ๊ฐ’์œผ๋กœ ์„ค์ •

Core - URL ๊ด€๋ฆฌ ํƒœ๊ทธ

  • ์„œ๋ฒ„์— ์ €์žฅ๋œ ๋ฆฌ์†Œ์Šค ํŒŒ์ผ(๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด ํŒŒ์ผ, CSS ํŒŒ์ผ, JS ํŒŒ์ผ ๋“ฑ)์„ ์ƒ๋Œ€๊ฒฝ๋กœ๋กœ ํ‘œํ˜„ํ•˜์—ฌ ์ œ๊ณต
  • ์ƒ๋Œ€๊ฒฝ๋กœ : ํ˜„์žฌ ์š”์ฒญ ์›นํ”„๋กœ๊ทธ๋žจ์˜ ๊ฒฝ๋กœ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ฆฌ์†Œ์Šค ํŒŒ์ผ์˜ ๊ฒฝ๋กœ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•
  • ์š”์ฒญ ์›นํ”„๋กœ๊ทธ๋žจ(Controller)๊ณผ ์‘๋‹ต ์›นํ”„๋กœ๊ทธ๋žจ(View)์˜ ๊ฒฝ๋กœ๊ฐ€ ๋‹ค๋ฅธ ๊ฒฝ์šฐ 404 ์—๋Ÿฌ์ฝ”๋“œ ๋ฐœ์ƒ
  • ⇒ ์„œ๋ฒ„์— ์ €์žฅ๋œ ๋ฆฌ์†Œ์Šค ํŒŒ์ผ์€ ์ ˆ๋Œ€๊ฒฝ๋กœ๋กœ ํ‘œํ˜„ํ•˜์—ฌ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅ
  • ์ ˆ๋Œ€ ๊ฒฝ๋กœ : ์ตœ์ƒ์œ„ ๋””๋ ‰ํ† ๋ฆฌ(์„œ๋ฒ„ ๋””๋ ‰ํ† ๋ฆฌ)๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ฆฌ์†Œ์Šค ํŒŒ์ผ์˜ ๊ฒฝ๋กœ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•
  • ๋ฆฌ์†Œ์Šค ํŒŒ์ผ์ด ๋™์ผํ•œ ์„œ๋ฒ„์— ์กด์žฌํ•  ๊ฒฝ์šฐ ์ ‘์† ์„œ๋ฒ„ ์ƒ๋žต ๊ฐ€๋Šฅ
  • ⇒ ์ปจํ…์ŠคํŠธ๋ช…์ด ๋ณ€๊ฒฝ๋˜๋Š” ์ปจํ…์ŠคํŠธ ๊ฒฝ๋กœ๋„ ๋ณ€๊ฒฝ๋˜๋ฏ€๋กœ 404 ์—๋Ÿฌ์ฝ”๋“œ ๋ฐœ์ƒ ๊ฐ€๋Šฅ
  • request.getContextPath() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์ปจํ…์ŠคํŠธ ๊ฒฝ๋กœ๋ฅผ ๋ฐ˜ํ™˜๋ฐ›์•„ ๋ฆฌ์†Œ์Šค ํŒŒ์ผ์˜ ์ ˆ๋Œ€ ๊ฒฝ๋กœ ์„ค์ •
  • EL ํ‘œํ˜„์‹์—์„œ pageContext ๋‚ด์žฅ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปจํ…์ŠคํŠธ ๊ฒฝ๋กœ๋ฅผ ์ œ๊ณต ๋ฐ›์•„ ๋ฆฌ์†Œ์Šค ํŒŒ์ผ์˜ ์ ˆ๋Œ€ ๊ฒฝ๋กœ ํ‘œํ˜„

url ํƒœ๊ทธ (์ž์ฃผ ์‚ฌ์šฉ๋˜๋ฏ€๋กœ ์ž˜ ์•Œ์•„๋‘์ž)

  • ์ปจํ…์ŠคํŠธ ๊ฒฝ๋กœ๊ฐ€ ํฌํ•จ๋œ ๋ฆฌ์†Œ์Šค ํŒŒ์ผ์˜ ์ ˆ๋Œ€๊ฒฝ๋กœ๋ฅผ ์ œ๊ณตํ•˜๋Š” ํƒœ๊ทธ
  • value ์†์„ฑ : ์ปจํ…์ŠคํŠธ ๊ฒฝ๋กœ๋ฅผ ์ œ์™ธํ•œ ๋ฆฌ์†Œ์Šค ํŒŒ์ผ์˜ ์ ˆ๋Œ€๊ฒฝ๋กœ๋ฅผ ์†์„ฑ๊ฐ’์œผ๋กœ ์„ค์ •

ํ•„ํ„ฐ ํด๋ž˜์Šค Filter Class

  • ํŠน์ • ์›นํ”„๋กœ๊ทธ๋žจ ์š”์ฒญ์— ๋Œ€ํ•ด ๋™์ž‘ ์ „ ์‹คํ–‰๋  ๋ช…๋ น๊ณผ ๋™์ž‘ ํ›„ ์‘๋‹ต ์ „ ์‹คํ–‰ ๋  ๋ช…๋ น์„ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•œ ํด๋ž˜์Šค
  • ⇒ ์›น ํ”„๋กœ๊ทธ๋žจ ๋™์ž‘ ์ „ ์‹คํ–‰๋  ๋ช…๋ น : request ๋ฉ”์„ธ์ง€(HttpServletRequest Intance)์˜ ์ •๋ณด๋ฅผ ๋ณ€๊ฒฝ
  • ⇒ ์›น ํ”„๋กœ๊ทธ๋žจ ๋™์ž‘ ํ›„ ์‹คํ–‰๋  ๋ช…๋ น : response ๋ฉ”์„ธ์ง€(HttpServletResponse Intance)์˜ ์ •๋ณด๋ฅผ ๋ณ€๊ฒฝ
  • ํ•„ํ„ฐ ํด๋ž˜์Šค๋Š” ๋ฐ˜๋“œ์‹œ Filter ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์† ๋ฐ›์•„ ์ž‘์„ฑ
  • ⇒ ํ•„ํ„ฐ ํด๋ž˜์Šค๋Š” @WebFilter ์–ด๋…ธํ…Œ์ด์…˜ ๋˜๋Š” web.xml ํŒŒ์ผ์˜ filter ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•„ํ„ฐ๋กœ ๋™์ž‘๋˜๋„๋ก ์„ค์ •

FilterChain.doFilter(ServletRequest request, ServletResponse response)

  • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญํ•œ ์›นํ”„๋กœ๊ทธ๋žจ์„ ์—ฐ๊ฒฐํ•˜์—ฌ ์‹คํ–‰๋˜๋„๋ก ์„ค์ •ํ•˜๋Š” ๋ฉ”์„œ๋“œ

Formatter - ๋‚ ์งœ์™€ ์‹œ๊ฐ„ ๋ณ€ํ™˜ ํƒœ๊ทธ

formatDate ํƒœ๊ทธ

  • ์Šค์ฝ”ํ”„ ๊ฐ์ฒด์— ์ €์žฅ๋œ Date ์ธ์Šคํ„ด์Šค์˜ ๋‚ ์งœ์™€ ์‹œ๊ฐ„์„ ์›ํ•˜๋Š” ํŒจํ„ด์˜ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ œ๊ณตํ•˜๋Š” ํƒœ๊ทธ - SimpleDateFormat ํด๋ž˜์Šค์™€ ์œ ์‚ฌ
  • value ์†์„ฑ : Date ์ธ์Šคํ„ด์Šค๋ฅผ ์†์„ฑ๊ฐ’์œผ๋กœ ์„ค์ •
  • type ์†์„ฑ : date(๋‚ ์งœ), time(์‹œ๊ฐ„), both(๋‚ ์งœ์™€ ์‹œ๊ฐ„) ์ค‘ ํ•˜๋‚˜๋ฅผ ์†์„ฑ๊ฐ’์œผ๋กœ ์„ค์ •
  • ⇒ ์†์„ฑ๊ฐ’์ด [date]์ธ ๊ฒฝ์šฐ ๊ธฐ๋ณธ์ ์œผ๋กœ [yyyy.M.d] ํŒจํ„ด์˜ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜๋˜์–ด ์ œ๊ณต
  • dateStyle ์†์„ฑ : full ๋˜๋Š” short ์ค‘ ํ•˜๋‚˜๋ฅผ ์†์„ฑ๊ฐ’์œผ๋กœ ์„ค์ •
  • ⇒ ์†์„ฑ๊ฐ’์ด [full]์ธ ๊ฒฝ์šฐ ๊ธฐ๋ณธ์ ์œผ๋กœ [yyyy๋…„ M์›” d์ผ E์š”์ผ] ํŒจํ„ด์˜ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜๋˜์–ด ์ œ๊ณต
  • ⇒ ์†์„ฑ๊ฐ’์ด [short]์ธ ๊ฒฝ์šฐ ๊ธฐ๋ณธ์ ์œผ๋กœ [yy.M.d] ํŒจํ„ด์˜ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜๋˜์–ด ์ œ๊ณต
  • ⇒ ์†์„ฑ๊ฐ’์ด [time]์ธ ๊ฒฝ์šฐ ๊ธฐ๋ณธ์ ์œผ๋กœ [a h.mm.ss] ํŒจํ„ด์˜ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜๋˜์–ด ์ œ๊ณต

formatNumberํƒœ๊ทธ

  • ์Šค์ฝ”ํ”„ ๊ฐ์ฒด์— ์ €์žฅ๋œ ์ˆซ์ž๊ฐ’์„ ์›ํ•˜๋Š” ํŒจํ„ด์˜ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ œ๊ณตํ•˜๋Š” ํƒœ๊ทธ
  • → DecomalFormat ํด๋ž˜์Šค
  • value ์†์„ฑ : ์ˆซ์ž๊ฐ’์ด ์ €์žฅ๋œ ์ธ์Šคํ„ด์Šค๋ฅผ ์†์„ฑ๊ฐ’์œผ๋กœ ์„ค์ •
  • type ์†์„ฑ : number ๋˜๋Š” current ์ค‘ ํ•˜๋‚˜๋ฅผ ์†์„ฑ๊ฐ’์œผ๋กœ ์„ค์ •
  • ⇒ ์†์„ฑ๊ฐ’์ด [number] : ์ˆซ์ž 3์ž๋ฆฌ๋งˆ๋‹ค ,๊ฐ€ ์‚ฝ์ž…๋œ ํ˜•์‹์˜ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜๋˜์–ด ์ œ๊ณต
  • ⇒ ์†์„ฑ๊ฐ’์ด [currency] : ์•ž์— ํ™”ํ๊ธฐํ˜ธ๊ฐ€ ์‚ฝ์ž…๋˜๊ณ  ์ˆซ์ž 3์ž๋ฆฌ๋งˆ๋‹ค ,๊ฐ€ ์‚ฝ์ž…๋œ ํ˜•์‹์˜ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ ์ œ๊ณต
  • pattern ์†์„ฑ : ์ˆซ์ž๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ํŒจํ„ด๋ฌธ์ž๋ฅผ ์†์„ฑ๊ฐ’์œผ๋กœ ์„ค์ •

Functions - EL ํ•จ์ˆ˜


web.xml

filter

  • ํ•„ํ„ฐ ํด๋ž˜์Šค๋ฅผ ํ•„ํ„ฐ๋กœ ์„ค์ •ํ•˜๋Š” ์—˜๋ฆฌ๋จผํŠธ
  • ⇒ servlet ์—˜๋ฆฌ๋จผํŠธ ์„ ์–ธ ์ „์— ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅ

filter-mapping

  • ํ•„ํ„ฐ๊ฐ€ ๋™์ž‘๋˜๊ธฐ ์œ„ํ•œ URL ์ฃผ์†Œ๋ฅผ ์„ค์ •ํ•˜๋Š” ์—˜๋ฆฌ๋จผํŠธ
  • url-pattern์— /* ์„ ํ•˜๋ฉด ํด๋ผ์ด์–ธํŠธ์˜ ๋ชจ๋“  ์š”์ฒญ์— ๋Œ€ํ•œ ํ•„ํ„ฐ๊ฐ€ ๋™์ž‘๋˜๋„๋ก ์„ค์ •

init-param

  • ์‹คํ–‰ ํด๋ž˜์Šค์—๊ฒŒ ๊ฐ’์„ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•œ ์—˜๋ฆฌ๋จผํŠธ

MyBatis ํ”„๋ ˆ์ž„์›Œํฌ

  • DAO๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๊ฒƒ.
  • ํ”„๋ ˆ์ž„์›Œํฌ : ์ž‘์„ฑ๋œ ์ฝ”๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์•Œ์•„์„œ ๋งŒ๋“ค์–ด ์คŒ.
  • log ํ”„๋กœ๊ทธ๋žจ : ๊ธฐ๋กํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ, ๋กœ๊ทธ ํŒŒ์ผ๋กœ ๋กœ๊ทธ ์„œ๋ฒ„์— ์ €์žฅ
  • erp ๊ด€๋ฆฌ ํ”„๋กœ๊ทธ๋žจ์˜ ๊ฒฝ์šฐ ๋ชจ๋“  ๊ฒƒ์„ ๊ธฐ๋กํ•ด์•ผํ•œ๋‹ค. ๋ฌธ์ œ ๋ฐœ์ƒ ์‹œ ์—ญ์ถ”์  ๊ฐ€๋Šฅ.
  • slf4j : ์‹ค์ œ ๊ธฐ๋กํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
  • lib์— ์žˆ๋Š” lib๋“ค์€ ์˜์กด๊ด€๊ณ„์ด๋‹ค.

[๋ชจ๋“  ํ”„๋กœ๊ทธ๋žจ์€ ๊ธฐ๋กํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค]

๋กœ๊น…

  • ๋งˆ์ด๋ฐ”ํ‹ฐ์Šค๋Š” ๋‚ด๋ถ€ ๋กœ๊ทธ ํŒฉํ† ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ๊น… ์ •๋ณด๋ฅผ ์ œ๊ณต.
  • ๋‚ด๋ถ€ ๋กœ๊ทธ ํŒฉํ† ๋ฆฌ๋Š” ๋กœ๊น… ์ •๋ณด๋ฅผ ๋‹ค๋ฅธ ๋กœ๊ทธ ๊ตฌํ˜„์ฒด ์ค‘ ํ•˜๋‚˜์— ์ „๋‹ฌํ•œ๋‹ค.

→ ๋ฌด์Šจ ๋กœ๊ทธ ํŒŒ์ผ์„ ์“ธ ์ง€ xmlํŒŒ์ผ์—์„œ ๋งคํ•‘ํ•ด์ค˜์•ผ ํ•จ.


โ–ถ ๊ฐœ์ธ ๊ณต๋ถ€

Object ํด๋ž˜์Šค์˜ ๋™์ผ์„ฑ & ๋™๋“ฑ์„ฑ

  • ๋™์ผ์„ฑ (Identival) : ๋‘๊ฐœ์˜ ๊ฐ์ฒด๊ฐ€ ์™„์ „ํžˆ ๊ฐ™์€์ง€, == ๋น„๊ต
  • ⇒ ๊ฐ์ฒด๊ฐ€ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋Š” ์ฃผ์†Œ ๊ฐ’์„ ๋น„๊ต, ๊ทธ๋ž˜์„œ ์†์„ฑ๊ณผ ํƒ€์ž…์ด ๊ฐ™์•„๋„ ์ฐธ์กฐ๊ฐ’์ด ๋‹ค๋ฅด๋ฉด ๋‹ค๋ฅธ ๊ฐ์ฒด๋กœ ๊ตฌ๋ถ„ํ•จ.
  • ๋™๋“ฑ์„ฑ (Equivalent) : ๋™์ผํ•œ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š”์ง€ equals() ๋น„๊ต
  • ⇒ ์ฆ‰, ๊ฐ์ฒด์˜ ๋ฉค๋ฒ„ ํ•„๋“œ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ’๋“ค์ด ์„œ๋กœ ๊ฐ™๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•จ. ๋‘ ๊ฐ์ฒด๊ฐ€ ๋…ผ๋ฆฌ์ ์œผ๋กœ ๊ฐ™์€์ง€๋ฅผ ๋น„๊ตํ•˜๋Š” ์…ˆ

์ฐธ๊ณ ๋กœ String์€ ๋™์ผ์„ฑ(==) ๋น„๊ต๋ฅผ ํ•ด๋„ true. String์˜ ํŠน์„ฑ๋•Œ๋ฌธ์ด๋‹ค.

JVM์—์„œ๋Š” String์„ ์กฐ๊ธˆ ํŠน๋ณ„ํžˆ ๊ด€๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ฐ์ฒด์ด์ง€๋งŒ new์—ฐ์‚ฐ์ž๊ฐ€ ์•„๋‹ˆ๋ผ ๋ฆฌํ„ฐ๋Ÿด("")์„ ์ด์šฉํ•ด์„œ String ์„ ์ƒ์„ฑ ํ•  ์ˆ˜์žˆ๋‹ค. ์ด๋•Œ JVM์€ ๊ฐ์ฒด์˜ ์˜์—ญ์ธ heap ์˜์—ญ์ด ์•„๋‹ˆ๋ผ, constant pool ์˜์—ญ์œผ๋กœ ์ฐพ์•„๊ฐ„๋‹ค. ๊ทธ๋ฆฌ๊ณ  constant pool ์˜์—ญ์— ์ด์ „์— ๊ฐ™์€ ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” String ๊ฐ์ฒด๊ฐ€ ์žˆ๋‹ค๋ฉด, ๊ทธ ๊ฐ์ฒด์˜ ์ฃผ์†Œ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜์—ฌ ์ฐธ์กฐํ•˜๋„๋ก ํ•œ๋‹ค.


HashMap & HashSet์˜ ์ฐจ์ด?

1. ์ •์˜

HashMap์€ Map ์ธํ„ฐํŽ˜์ด์Šค์˜ ๊ตฌํ˜„์ฒด๋กœ,

HashTable๊ณผ ์œ ์‚ฌํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ๋‹ค.

HashSet์€ Set ์ธํ„ฐํŽ˜์ด์Šค์˜ ๊ตฌํ˜„์ฒด๋กœ,

๋‚ด๋ถ€์ ์œผ๋กœ HashMap์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์—

์—ญ์‹œ๋‚˜ HashTable๊ณผ ์œ ์‚ฌํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ๋‹ค.

2. ๋ฐ์ดํ„ฐ ์ €์žฅ ํ˜•ํƒœ

HashMap์€ Key-Value ์Œ ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ๋‹ค.

Key์™€ Value์˜ mapping์„ ์œ ์ง€ํ•˜๊ณ  ์žˆ๋‹ค.

HashSet์€ ๊ฐ์ฒด ๊ทธ ์ž์ฒด๋ฅผ ์ €์žฅํ•œ๋‹ค.

์œ„์—์„œ HashMap์„ ๋‚ด๋ถ€์ ์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ–ˆ๋Š”๋ฐ,

Key ๊ฐ’์œผ๋กœ๋Š” ์‚ฝ์ž…๋˜๋Š” ๊ฐ์ฒด ๊ทธ ์ž์ฒด๋ฅผ,

Value ๊ฐ’์œผ๋กœ๋Š” HashSet ๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์—์„œ

๋ฏธ๋ฆฌ ์„ ์–ธํ•ด๋‘” dummy ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

3. ์ค‘๋ณต ํ—ˆ์šฉ ์—ฌ๋ถ€

HashMap์€ ์ค‘๋ณต Key ๊ฐ’์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์ง€๋งŒ,

์ค‘๋ณต Value ๊ฐ’์€ ํ—ˆ์šฉํ•œ๋‹ค.

ex. {'a': 1, 'b': 1, 'c': 2}

HashSet์€ ๊ฐ์ฒด ์ž์ฒด๋ฅผ ๋ฐ์ดํ„ฐ๋กœ ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์—

์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.

ex. {'a', 'b', 'c'}

4. NULL ํ—ˆ์šฉ ์—ฌ๋ถ€

HashMap์€ ๋‹จ ํ•˜๋‚˜์˜ NULL ๊ฐ’์„ Key ๊ฐ’์œผ๋กœ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ณ ,

(์ค‘๋ณต Key ๊ฐ’์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—)

์—ฌ๋Ÿฌ NULL ๊ฐ’์„ Value ๊ฐ’์œผ๋กœ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.

HashSet์€ ๋‹จ ํ•˜๋‚˜์˜ NULL ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.

5. ๋ฐ์ดํ„ฐ ์‚ฝ์ž… ๋ฐฉ๋ฒ•

HashMap์€ put() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•˜๋Š”๋ฐ,

Key-Value ์Œ ๋ฐ์ดํ„ฐ์˜ ํ˜•ํƒœ๋ฅผ ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์—

์‚ฝ์ž… ์—ฐ์‚ฐ ๋™์•ˆ ๋‹จ ํ•˜๋‚˜์˜ ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค.

HashSet์€ add() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•˜๋Š”๋ฐ,

๊ฐ์ฒด ๊ทธ ์ž์ฒด๋ฅผ ์ €์žฅํ•˜๊ณ 

๋‚ด๋ถ€์ ์œผ๋กœ HashMap์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์—,

์‚ฝ์ž…๋˜๋Š” ๊ฐ์ฒด(Key๊ฐ’)์™€ dummy ๊ฐ์ฒด(Value ๊ฐ’),

์ด ๋‘ ๊ฐœ์˜ ๊ฐ์ฒด๊ฐ€ ์‚ฝ์ž… ์—ฐ์‚ฐ ๋™์•ˆ ์ƒ์„ฑ๋œ๋‹ค.

์„ฑ๋Šฅ

์ด์ „ ๊ธ€์—์„œ๋„ ์–ธ๊ธ‰ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ,

HashMap์ด HashSet๋ณด๋‹ค ๋น ๋ฅด๋‹ค.

์ด์œ ๋Š” HashSet์— ๋Œ€ํ•ด ์ž‘์„ฑํ•œ ์ด์ „ ๊ธ€์„ ์ฐธ๊ณ ํ•˜์ž.

๊ทธ๋ž˜์„œ ๋ฐ์ดํ„ฐ์˜ ์œ ์ผํ•จ(Uniqueness)์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด

ํ•ญ์ƒ HashMap์ด HashSet๋ณด๋‹ค ์„ ํ˜ธ๋œ๋‹ค.


โ–ถ ํŒŒ์ด๋„ ํ”„๋กœ์ ํŠธ

> ํ™”๋ฉด ๋ชฉ๋ก ์งˆ๋ฌธ ์ •๋ฆฌ

> ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ์ •๋ฆฌ ์ค‘

> ๋‚ด์ผ ๋””์ฝ” ํšŒ์˜

๋ฐ˜์‘ํ˜•

'Legacy' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

2022.02.24 ์˜ ๊ธฐ๋ก  (0) 2022.02.24
2022.02.23์˜ ๊ธฐ๋ก  (0) 2022.02.23
2022.02.21์˜ ๊ธฐ๋ก  (0) 2022.02.21
2022.02.20์˜ ๊ธฐ๋ก  (0) 2022.02.20
2022.02.19์˜ ๊ธฐ๋ก  (0) 2022.02.19