2022.02.21μ κΈ°λ‘
βΆ μ€λ μ€ν κ°λ₯ν μΈλΆ λͺ©ν
=> κ³΅λΆ κ΄λ ¨
1) λλ€μ μ€νΈλ¦Ό
2) λλ΅ λͺ»ν μ§λ¬Έ λ΅ μ 리
3) μλ° λ¦¬ν©ν λ§
4) κΈμΌ λ°°μ΄ λ΄μ© 볡μ΅
=> νμ΄λ νλ‘μ νΈ κ΄λ ¨
1) νλ©΄ μ€κ³μ νμ
βΆ κ³΅λΆ λ΄μ©
EL ν¨μ
- ν¨μ : 맀κ°λ³μλ‘ κ°μ μ 곡 λ°μ μ²λ¦¬νκ³ λ°ν
- λ©μλ : νλλ₯Ό μ²λ¦¬νκΈ° μν¨
- ⇒ EL ν¨μλ‘ νΈμΆλλ λ©μλλ λ°λμ static λ©μλλ‘ μ μΈ
TLDνμΌ
function
- EL ν¨μλ₯Ό λ±λ‘νκΈ° μν μμ μ리먼νΈ
name
- EL ν¨μλͺ μ μ€μ νλ μ리먼νΈ
function-class
- EL ν¨μμ μν΄ νΈμΆλλ λ©μλκ° μ μΈλ ν΄λμ€λ₯Ό μ€μ νλ μ리먼νΈ
function-signature
- EL ν¨μμ μν΄ νΈμΆλλ λ©μλλ₯Ό μ€μ νλ μ리먼νΈ
short-name
- TLD νμΌμ μ΄λ¦μ μ€μ νκΈ° μν μ리먼νΈ
uri
- JSP λ¬Έμμμ TLD νμΌμ λΆλ¬μ€κΈ° μν μλ³μλ₯Ό μ€μ νκΈ° μν μ리먼νΈ
- ⇒ WASκ° μμλ λ λΆλ¬λ€μ μ λ μ€λ³΅λλ©΄ μλ¨
tag
- JSP λ¬Έμμμ μ¬μ©ν 컀μ€ν νκ·Έλ₯Ό μ€μ νκΈ° μν μμ μ리먼νΈ
name
- 컀μ€ν νκ·Έλͺ μ μ€μ νκΈ° μν μ리먼νΈ
tag-class
- 컀μ€ν νκ·Έλ₯Ό μ¬μ©ν κ²½μ° νΈμΆλ λ©μλμ μ μΈλ ν΄λμ€λ₯Ό μ€μ
body-content
- 컀μ€ν νκ·Έμ νκ·Έλ΄μ©μ μ€μ νκΈ° μν μ리먼νΈ
required
- 컀μ€ν νκ·Έμ μμ±μ λν νμ μ¬λΆλ₯Ό μ€μ νλ μ리먼νΈ
- ⇒ false : μ ν μμ±(κΈ°λ³Έ), true : νμ μμ±
rtexprvalue
- νκ·Έ μμ±κ°μΌλ‘ JSP Expression λλ ELμ μ¬μ© μ¬λΆλ₯Ό μ€μ νλ μ리먼νΈ
- ⇒ false : μ¬μ© λΆκ°λ₯(κΈ°λ³Έ), true : μ¬μ© κ°λ₯
⇒ ν¬μΈνΈλ taglib λλ ν°λΈλ‘ tld νμΌμ λΆλ¬μμ ν¨μλ₯Ό μ¬μ© κ°λ₯νλ€λ μ
EL Operator
- μ°μ , λ Όλ¦¬, κ΄κ³, empty μ°μ°μ. JSTLκ³Ό μΌμ λ μλ―Έκ° μμ.
- μΈ μΌμ΄ λ§μ΄ μμ..
empty μ°μ°μ
- EL ννμμΌλ‘ μ 곡λλ κ°(κ°μ²΄)μ΄ μλ κ²½μ° falseλ₯Ό μ 곡νκ³ ELννμμΌλ‘ μ 곡λλ κ°μ΄ μκ±°λ λΉμ΄ μλ κ²½μ° trueλ₯Ό μ 곡νλ μ°μ°μ
Custom Tag
- μ€ν¬λ¦½νΈ μμκ° λ§μμ§λ©΄ JSPμ½λκ° λ³΅μ‘ν΄μ§
- μ€ν¬λ¦½νλ¦Ώ λμ μ¬μ©νκΈ° μν΄ νλ‘κ·Έλλ¨Έκ° μ§μ λ§λ νκ·Έ
- μλ° λͺ λ Ήμ΄λ₯Ό μμ κΈ° μν΄μ μ¬μ©νλ€.
- ⇒ νκ·Έ ν΄λμ€ μμ± >> TLD νμΌμ 컀μ€ν νκ·Έ λ±λ‘ >> JSP λ¬Έμμμ 컀μ€ν νκ·Έ μ¬μ©
νκ·Έ ν΄λμ€
- JSP λ¬Έμμμ 컀μ€ν νκ·Έλ₯Ό μ¬μ©ν κ²½μ° νΈμΆλ λ©μλκ° μ μΈλ ν΄λμ€
- ⇒ TagSupport ν΄λμ€, BodyTagSupport ν΄λμ€, SimpleTagSupport ν΄λμ€ μ€ νλλ₯Ό μμλ°μ μμ±
- ⇒ 컀μ€ν νκ·Έ μ¬μ© μ νΈμΆλλ λ©μλλ λΆλͺ¨ν΄λμ€μ λ©μλλ₯Ό μ€λ²λΌμ΄λ μ μΈνμ¬ μμ±
PageContext.getOut()
- μλ΅κ²°κ³Όλ₯Ό μμ±νκΈ° μν μΆλ ₯μ€νΈλ¦Όμ λ°ννλ λ©μλ
- ⇒ μΆλ ₯μ€νΈλ¦Όμ λ©μλλ₯Ό νΈμΆνμ¬ ν΄λΌμ΄μΈνΈμκ² κ²°κ³Ό(html)λ₯Ό μ λ¬νμ¬ μλ΅
μμ±μ
- μΈμ€ν΄μ€ μμ±μ νλ μ΄κΈ°ν μμ → νλκ° μ μ₯
JSTL
- λ§μ΄λ€ μ¬μ©νλ 컀μ€ν νκ·Έλ€μ λͺ¨μλμ λΌμ΄λΈλ¬λ¦¬
Core
- EL μ§μ, νλ‘κ·Έλ¨μ νλ¦ μ μ΄, URL μ£Όμ κ΄λ¦¬λ±μ νκ·Έ μ 곡
1. set νκ·Έ
- μ€μ½ν κ°μ²΄μ μμ±κ°μ μ μ₯νκ±°λ λ³κ²½νκΈ° μν νκ·Έ
- μΈμ€ν΄μ€ νλκ° λ³κ²½ κ°λ₯
- target μμ± : μ€μ½ν κ°μ²΄μ μ μ₯λ μμ±κ°(μΈμ€ν΄μ€)μ μμ±κ°μΌλ‘ μ€μ
- property μμ± : νλκ°μ λ³κ²½ν μΈμ€ν΄μ€μ νλλͺ μ μμ±κ°μΌλ‘ μ€μ
var μμ±
- μ€μ½ν κ°μ²΄μ μμ±λͺ μ μμ±κ°μΌλ‘ μ€μ
value μμ±
- μ€μ½ν κ°μ²΄μ μ μ₯λ μμ±κ°(μΈμ€ν΄μ€)λ₯Ό μμ±κ°μΌλ‘ μ€μ
- ⇒ μμ±κ°μΌλ‘ EL μ€μ κ°λ₯
- ⇒ μμ±κ° κ°μ κ²½μ° μμ±κ° λ³κ²½
- ELμ μν΄ μ 곡λ μμ±κ°μ΄ μΈμ€ν΄μ€μΈ κ²½μ° toString() μλ νΈμΆ & κ°μ λ°ννλ λ©μλ νΈμΆ κ°λ₯
- ⇒ μΈμ€ν΄μ€μ toString λ©μλκ° μ€λ²λΌμ΄λλμ§ μμλ€λ©΄ Object ν΄λμ€μ toString() λ©μλ νΈμΆ
scope μμ±
- μ€μ½ν κ°μ²΄μ μ μ₯λ μμ±κ° μ¬μ© λ²μλ₯Ό μμ±κ°μΌλ‘ μ€μ
- ⇒ page(κΈ°λ³Έ), request, session, application
2. remove νκ·Έ
- μ€μ½ν κ°μ²΄μ μ μ₯λ μμ±κ°μ μ κ±°νλ νκ·Έ
3. out νκ·Έ
- μ€μ½ν κ°μ²΄μ μμ±κ°μ ν΄λΌμ΄μΈνΈμκ² μ λ¬νλ νκ·Έ
- ELμ μ¬μ©νμ¬ HTML νκ·Έκ° ν¬ν¨λ λ¬Έμμ΄μ ν΄λΌμ΄μΈνΈμκ² μ λ¬ν κ²½μ° νκ·Έκ° μ μ©λμ§λ§, out νκ·Έλ₯Ό μ¬μ©νμ¬ νκ·Έκ° ν¬ν¨λ λ¬Έμμ΄μ μ λ¬ν κ²½μ° νκ·Έλ λ¬Έμμ΄λ‘ μ μ©λμ΄ μΆλ ₯. → XSS 곡격μ λ°©μ΄νκΈ° μν΄ λμ¨ νκ·Έ
Core - νλ¦ μ μ΄ νκ·Έ
if νκ·Έ
- 쑰건μ λ°λΌ νκ·Έλ΄μ©μ μΆλ ₯μ μ ννλ νκ·Έ - else κΈ°λ₯ λ―Έμ‘΄μ¬
- test μμ± : false λλ true μ€ νλλ₯Ό μμ± κ°μΌλ‘ μ€μ
- ⇒ μμ±κ°μ΄ falseμΈ κ²½μ° νκ·Έ λ΄μ©μ μΆλ ₯νμ§ μκ³ trueμΈ κ²½μ° λ΄μ© μΆλ ₯μ μ ννλ μμ±
choose νκ·Έ
- 쑰건μ λ°λΌ νκ·Έλ΄μ© μΆλ ₯μ μ ννλ μμνκ·Έ
- ⇒ νμ νκ·Έλ₯Ό μ΄μ©νμ¬ νκ·Έ λ΄μ©μ μ ννμ¬ μΆλ ₯
- ⇒ νμ νκ·Έ : when νκ·Έ(1κ° μ΄μ), otherwise νκ·Έ(0κ° λλ 1κ°)
- ⇒ choose νκ·Έμ νμνκ·Έλ₯Ό μ μΈν μ½λκ° μ‘΄μ¬ν κ²½μ° μλ¬ λ°μ - JSP μ£Όμ μ μΈ
- when νκ·Έ : 쑰건μ λ°λΌ νκ·Έλ΄μ© μΆλ ₯μ μ ννλ νκ·Ό
- test μμ± : false λλ true μ€ νλλ₯Ό μμ± κ°μΌλ‘ μ€μ
- ⇒ μμ±κ°μ΄ falseμΈ κ²½μ° νκ·Έ λ΄μ©μ μΆλ ₯νμ§ μκ³ trueμΈ κ²½μ° λ΄μ© μΆλ ₯μ μ ννλ μμ±
- otherwise νκ·Έ : λͺ¨λ when νκ·Έμ μ‘°κ±΄μ΄ κ±°μ§μΈ κ²½μ° νκ·Έλ΄μ©μ μΆλ ₯νλ νκ·Έ
Formatter
- μ«μ, λ μ§, μκ° νμ λ³κ²½ λ° κ΅μ ν, λ€κ΅μ΄ μ§μλ±μ νκ·Έ μ 곡
Database
- ν μ΄λΈμ νμ λν μ½μ , λ³κ²½, μμ , κ²μ κΈ°λ₯μ νκ·Έ μ 곡
Xml
- XML λ¬Έμμ λν μ²λ¦¬ κΈ°λ₯μ νκ·Έ μ 곡
Functions
- λ¬Έμμ΄ μ²λ¦¬ κΈ°λ₯μ EL ν¨μ μ 곡
βΆ κ°μΈ 곡λΆ
Thread
λκΈ°ν
- λ©ν° μ€λ λ νκ²½μμ λμΌν λ©λͺ¨λ¦¬μ μ κ·Όνλ μμ μ ν λ κ°μ λΆμΌμΉκ° λνλ μ μλ€.
- μ΄λ₯Ό μν΄ λ©μλλ μμμΌλ‘ λκΈ°ν ν€μλλ₯Ό λΆμ¬μ£Όλ©΄ ν΄λΉ μ€λ λ μμ μ΄ λλκΈ° μ μ λ€λ₯Έ μ€λ λκ° μ κ·Όν μ μκ² λλ€.
Volatile
- λ©ν° μ½μ΄ νλ‘μΈμμμλ λ³λμ μΊμλ₯Ό κ°μ§κ³ μλ€
- μ½μ΄λ λ©λͺ¨λ¦¬μμ μ½μ΄μ¨ κ°μ μΊμμ μ μ₯νκ³ μΊμμμ κ°μ μ½μ΄μ μμ νλ€.
- κ·Έλ¬λ€ 보λ λμ€μ λ©λͺ¨λ¦¬μ λ³μ κ°μ΄ λ³κ²½λμλλ°λ μΊμμ μ μ₯λ κ°μ΄ κ°±μ λμ§ μμμ λ©λͺ¨λ¦¬μ μ μ₯λ κ°μ΄ λ€λ₯Έ κ²½μ°κ° λ°μ
- μ€λ λκ° λ©μΆμ§ μκ³ κ³μ μ€ν.
- volatile ν€μλλ₯Ό λΆμ΄λ©΄ μΊμκ° μλ λ©λͺ¨λ¦¬μμ μ½μ΄μ€κΈ° λλ¬Έμ μΊμμ λ©λͺ¨λ¦¬κ°μ κ°μ λΆμΌμΉκ° ν΄κ²°λλ€.
볡μ‘λ(Complexity)
- μκ³ λ¦¬μ¦μ μ±λ₯μ λνλ΄λ μ²λ
- μκ°(Time)볡μ‘λμ 곡κ°(Space)볡μ‘λλ‘ λλ μ μλ€.
- μκ° & κ³΅κ° λ³΅μ‘λλ κ±°λ κ΄κ³ (Trade-off) μ±λ¦½. ⇒ μνΈ λ°λΉλ‘μ κ΄κ³? → λ©λͺ¨μ μ΄μ κΈ°λ²
μκ° λ³΅μ‘λ
- λ¬Έμ λ₯Ό ν΄κ²°νλλ° κ±Έλ¦¬λ μκ°κ³Ό μ λ ₯μ ν¨μλ₯Ό κ°λ¦¬ν¨λ€.
- μκ³ λ¦¬μ¦μ μν΄ νμν μ°μ° νμ
- νΉμ ν ν¬κΈ°μ μ λ ₯μ λνμ¬ μκ³ λ¦¬μ¦μ΄ μΌλ§λ μ€λ 걸리λμ§λ₯Ό μλ―Έ
- λΉ μ€(Big-O) νκΈ°λ² : κ°μ₯ λΉ λ₯΄κ² μ¦κ°νλ νλ§μ κ³ λ €νλ νκΈ°, μ¦ ν¨μμ μνλ§ λνλ.
int []arr = {1,2,3,4};*//Nκ°μ λ°μ΄ν°*
int sum = 0;
for(int value : arr) sum += value;
⇒ μ μ½λλ μ°μ°νμκ° Nμ λΉλ‘ν¨. μ΄λ¬ν μ°μ°μ νμλ Nμ΄ μ¦κ°ν μλ‘ λν κ°μν¨.
μν₯λ ₯μ΄ ν° λΆλΆμ Nμ λΉλ‘νλ μ°μ°μ μννλ Forλ¬Έμ΄κ³ , μκ° λ³΅μ‘λλ₯Ό O(N)μ΄λΌκ³ νλ€.
κ³΅κ° λ³΅μ‘λ
- μκ³ λ¦¬μ¦μ μν΄ νμν λ©λͺ¨λ¦¬μ μ
- νΉμ ν ν¬κΈ°μ μ λ ₯μ λνμ¬ μΌλ§λ λ§μ λ©λͺ¨λ¦¬λ₯Ό μ°¨μ§νλμ§λ₯Ό μλ―Έ
- μμ λΉ μ€ νκΈ°λ² μ΄μ©νλ©°, λ©λͺ¨λ¦¬ μ¬μ©λ κΈ°μ€μ MB λ¨μλ‘ μ μλ¨.
⇒ μ½λ© ν μ€νΈ λ¬Έμ νμ΄λ λλΆλΆ λ°°μ΄(λλ 리μ€νΈ)μ μ¬μ©νλ€. κ³ μ μ μΈ νλ‘κ·Έλλ° μΈμ΄μμ μ μν μλ£νμΈ intλ₯Ό κΈ°μ€μΌλ‘ λ°°μ΄ ν¬κΈ°μ λ°λ₯Έ λ©λͺ¨λ¦¬ μ¬μ©λμ λ€μκ³Ό κ°λ€. (μ»΄νμΌλ¬μ λ°λΌ μ‘°κΈμ© λ¬λΌμ§ μ μμ)
- int a[1000]: 4KB
- int a[1000000]: 4MB
- int a[2000][2000]: 16MB
λλ€μ
- λλ€μμ λμ μΌλ‘ μλ°λ κ°μ²΄μ§ν₯μΈμ΄μΈ λμμ ν¨μν μΈμ΄κ° λμμ.
- λ©μλλ₯Ό νλμ μμΌλ‘ ννν κ². μ΅λͺ ν¨μλΌκ³ λ νν
- λλ€μμ λ©μλμ 맀κ°λ³μλ‘ μ λ¬ κ°λ₯νκ³ , λ©μλμ κ²°κ³Όλ‘ λ°νλ μλ μμ
- λ©μλλ₯Ό λ³μμ²λΌ λ€λ£¨λ κ²μ΄ κ°λ₯ν΄μ‘λ€
λ©μλμ ν¨μμ μ°¨μ΄
- λ©μλ : κ°μ²΄μ νμλ λμμ μλ―Έ, νΉμ ν΄λμ€μ λ°λμ μν΄μΌ νλ€λ μ μ½μ΄ μμ
- ν¨μ: μ μ½ μμ΄ νλμ λ 립μ μΈ κΈ°λ₯μ ν¨
ν¨μν μΈν°νμ΄μ€
- λλ€μμ μ΅λͺ ν΄λμ€μ κ°μ²΄μ λλ±ν¨.
- νλμ λ©μλκ° μ μΈλ μΈν°νμ΄μ€λ₯Ό μ μν΄μ λλ€μμ λ€λ£¨λ κ²μ μλ°μ κ·μΉμ μ΄κΈ°μ§ μμΌλ©΄μλ μμ°μ€λ¬μ
- μΈν°νμ΄μ€λ₯Ό ν΅ν΄ λλ€μμ λ€λ£¨κΈ°λ‘ κ²°μ λμμΌλ©°, μ΄λ¬ν μΈν°νμ΄μ€λ₯Ό ν¨μν μΈν°νμ΄μ€λ‘ λΆλ¦.
- μ€μ§ νλμ μΆμ λ©μλλ§ μ μλμ΄ μμ΄μΌ ν¨. λλ€μκ³Ό 1:1λ‘ μ°κ²° κ°λ₯ν΄μΌν¨. λ¨ static, defaultλ©μλλ μμΈ.
λλ€μμ νμ κ³Ό νλ³ν
- λλ€μμ μ€μ§ ν¨μν μΈν°νμ΄μ€λ‘λ§ νλ³νμ΄ κ°λ₯νλ€.
μΈλΆ λ³μλ₯Ό μ°Έμ‘°νλ λλ€μ
- λλ€μ λ΄μμ μ°Έμ‘°νλ μ§μλ³μλ JINALμ΄ λΆμ§ μμμ΄λ μμλ‘ κ°μ£Όλλ€.
- μΈλΆ μ§μλ³μμ κ°μ μ΄λ¦μ λλ€μ 맀κ°λ³μλ νμ©λμ§ μλλ€.
java.util.functionν¨ν€μ§
- λλΆλΆμ λ©μ£λλ νμ μ΄ λΉμ·νλ©° 맀κ°λ³μμ κ°μλ λΉμ·νλ€, μ λλ¦ λ©μλλ‘ μ μνλ©΄ λ¬Έμ κ° λμ§ μλλ€
- μΌλ°μ μΌλ‘ μμ£Ό μ°μ΄λ νμμ λ©μλλ₯Ό ν¨μν μΈν°νμ΄μ€λ‘ μ μν΄ λμ.
- μ΄ κ²μ νμ©νλ κ²μ΄ μ μ§λ³΄μλ μ¬μ¬μ©μ± μΈ‘λ©΄μμ μ’λ€.
βΆ νμ΄λ νλ‘μ νΈ
> νμ μμ
=> νλ©΄ μ€κ³μ νΈλ μ΄λ λΆλΆ λ° ui
=> μ κΈ° λ°°μ‘ κ±΄ μ²λ¦¬ λ°©λ²?
=> μ κΈ° PT λ¬Έμ λΆλΆ μ²λ¦¬ λ°©λ²?
=> λλ΅μ μΈ κ³ν μ립 μλ£
=> λ΄μΌλ 8μ νμ