μν λ±λ‘ - add.jsp
β’
νμ΄ν μμ
β’
νΌ μμ
β¦
컨ν
μ΄λ
β¦
μ
λ ₯
βͺ
νμΌ
βͺ
ν
μ€νΈ
βͺ
λΌλμ€
β¦
λ²νΌ
νμ΄ν μμ
<div class="px-4 py-5 my-5 text-center">
<h1 class="display-5 fw-bold text-body-emphasis">μν λ±λ‘</h1>
<div class="col-lg-6 mx-auto">
<p class="lead mb-4">Shop μΌνλͺ° μ
λλ€.</p>
</div>
</div>
HTML
볡μ¬
β’
<div class="px-4 py-5 my-5 text-center">:
β¦
px-4: μμμ μ’μ° ν¨λ©μ μΆκ°ν©λλ€.
β¦
py-5: μμμ μν ν¨λ©μ μΆκ°ν©λλ€.
β¦
my-5: μμμ μν λ§μ§μ μΆκ°ν©λλ€.
β¦
text-center: ν
μ€νΈλ₯Ό μ€μ μ λ ¬ν©λλ€.
β’
<h1 class="display-5 fw-bold text-body-emphasis">μν λ±λ‘</h1>:
β¦
display-5: ν° ν¬κΈ°μ ν
μ€νΈ μ€νμΌμ μ μ©ν©λλ€.
β¦
fw-bold: ν
μ€νΈλ₯Ό κ΅΅κ² λ§λλλ€.
β¦
text-body-emphasis: ν
μ€νΈμ κ°μ‘° μ€νμΌμ μ μ©ν©λλ€.
β¦
μν λ±λ‘: μ λͺ© ν
μ€νΈμ
λλ€.
β’
<div class="col-lg-6 mx-auto">:
β¦
col-lg-6: ν° νλ©΄μμ λλΉλ₯Ό 6 컬λΌμΌλ‘ μ€μ ν©λλ€.
β¦
mx-auto: μ’μ° λ§μ§μ μλμΌλ‘ μ€μ νμ¬ μ€μμ λ°°μΉν©λλ€.
β’
<p class="lead mb-4">Shop μΌνλͺ° μ
λλ€.</p>:
β¦
lead: μ€μν ν
μ€νΈλ₯Ό κ°μ‘°νλ μ€νμΌμ μ μ©ν©λλ€.
β¦
mb-4: μμμ νλ¨ λ§μ§μ μΆκ°ν©λλ€.
β¦
Shop μΌνλͺ° μ
λλ€.: μ€λͺ
ν
μ€νΈμ
λλ€.
νΌ μμ
β’
컨ν
μ΄λ
β’
μ
λ ₯
β¦
νμΌ
β¦
ν
μ€νΈ
β¦
λΌλμ€
β’
λ²νΌ
컨ν μ΄λ
<!-- μν λ±λ‘ μ
λ ₯ νλ©΄ -->
<div class="container shop">
<!-- μ
λ ₯ μμ -->
</div>
HTML
볡μ¬
μ΄Β divΒ μμλΒ containerμΒ shopμ΄λΌλ λ κ°μ ν΄λμ€λ₯Ό κ°μ§κ³ μμ΅λλ€. μ΄ ν΄λμ€λ€μ CSSμμ μ€νμΌμ μ§μ νλ λ° μ¬μ©λ©λλ€.
html class μμ±μλ λμ΄μ°κΈ°λ‘ ꡬλΆνμ¬ μ¬λ¬ ν΄λμ€ μμ±κ°μ μ§μ ν μ μμ΅λλ€.
container μμ±κ°μ bootstrap CSS νλ μμν¬μ μ μλ ν΄λμ€ μμ±κ°μΌλ‘ μλ νμ΄μ§μμ λ μμΈν μ€λͺ
μ λ³Ό μ μμ΅λλ€.
container ν΄λμ€ νΉμ§
β’
κ³ μ λλΉ:Β containerΒ ν΄λμ€λ λ€μν νλ©΄ ν¬κΈ°μ λ°λΌ κ³ μ λ μ΅λ λλΉλ₯Ό κ°μ§λλ€.
β’
μ€μ μ λ ¬:Β containerΒ ν΄λμ€λ κΈ°λ³Έμ μΌλ‘ μ’μ° λ§μ§μ μλμΌλ‘ μ€μ νμ¬ μ½ν
μΈ λ₯Ό μ€μμ λ°°μΉν©λλ€.
β’
λ°μν: νλ©΄ ν¬κΈ°μ λ°λΌ λλΉκ° μλμΌλ‘ μ‘°μ λ©λλ€.
Bootstrap 5μΒ containerΒ ν΄λμ€λ λ€μκ³Ό κ°μ μ΅λ λλΉλ₯Ό κ°μ§λλ€:
β’
μ΅μ λλΉ 576px μ΄ν: 100% λλΉ
β’
μ΅μ λλΉ 576px μ΄μ: 540px
β’
μ΅μ λλΉ 768px μ΄μ: 720px
β’
μ΅μ λλΉ 992px μ΄μ: 960px
β’
μ΅μ λλΉ 1200px μ΄μ: 1140px
β’
μ΅μ λλΉ 1400px μ΄μ: 1320px
μ΄λ κ² λ―Έλ¦¬ κ°λ‘ μ¬μ΄μ¦κ° μ ν΄μ Έ μκΈ° λλ¬Έμ, μνλ λμμΈ κ·κ²©μ κ°λ‘μ¬μ΄μ¦λ₯Ό μ νκ³ μΆλ€λ©΄, μΆκ°λ‘ ν΄λμ€ μμ±μ μ§μ νκ³ style.css μμ ν¬κΈ°λ₯Ό μ§μ ν΄μ£Όλ©΄ λ©λλ€.
.container.shop { max-width: 720px !important; }
CSS
볡μ¬
μμ κ°μ΄ μ’
μ μ νμλ‘ μλ μμλ₯Ό μ νν μ μμ΅λλ€.
<div class="container shop"></div>
HTML
볡μ¬
μ¬κΈ°μ max-width λ₯Ό μ§μ νμ¬ μνλ κ°λ‘ μ¬μ΄μ¦λ₯Ό μ μ©ν©λλ€.
μ λ ₯
β’
νμΌ
β’
ν
μ€νΈ
β’
λΌλμ€
β’
λ²νΌ
μ
λ ₯ μμ νκ·Έ form λ₯Ό μμ±ν©λλ€.
<form name="product" action="./add_pro.jsp" onsubmit="return checkProduct()" method="post" enctype="multipart/form-data">
</form>
HTML
볡μ¬
β’
name="product":
β¦
νΌμ μ΄λ¦μ μ§μ ν©λλ€. μλ°μ€ν¬λ¦½νΈλ λ€λ₯Έ μ€ν¬λ¦½νΈμμ νΌμ μ°Έμ‘°ν λ μ¬μ©λ©λλ€.
β’
action="./add_pro.jsp":
β¦
νΌμ΄ μ μΆλ λ λ°μ΄ν°λ₯Ό μ²λ¦¬ν μλ² μΈ‘ μ€ν¬λ¦½νΈμ URLμ μ§μ ν©λλ€. μ¬κΈ°μλΒ add_pro.jspΒ νμΌλ‘ λ°μ΄ν°λ₯Ό μ μ‘ν©λλ€.
β’
onsubmit="return checkProduct()":
β¦
νΌμ΄ μ μΆλκΈ° μ μ μ€νλ μλ°μ€ν¬λ¦½νΈ ν¨μλ₯Ό μ§μ ν©λλ€.Β checkProduct()Β ν¨μκ°Β trueλ₯Ό λ°ννλ©΄ νΌμ΄ μ μΆλκ³ ,Β falseλ₯Ό λ°ννλ©΄ νΌ μ μΆμ΄ μ€λ¨λ©λλ€. μ΄λ₯Ό ν΅ν΄ νΌ λ°μ΄ν°μ μ ν¨μ±μ κ²μ¬ν μ μμ΅λλ€.
β’
method="post":
β¦
νΌ λ°μ΄ν°λ₯Ό μλ²λ‘ μ μ‘ν λ μ¬μ©ν HTTP λ©μλλ₯Ό μ§μ ν©λλ€. μ¬κΈ°μλΒ POSTΒ λ©μλλ₯Ό μ¬μ©νμ¬ λ°μ΄ν°λ₯Ό μ μ‘ν©λλ€.Β POSTΒ λ©μλλ λ°μ΄ν°λ₯Ό URLμ ν¬ν¨νμ§ μκ³ λ³Έλ¬Έμ ν¬ν¨νμ¬ μ μ‘ν©λλ€.
β’
enctype="multipart/form-data":
β¦
νΌ λ°μ΄ν°λ₯Ό μΈμ½λ©νλ λ°©μμ μ§μ ν©λλ€. νμΌ μ
λ‘λλ₯Ό ν¬ν¨ν νΌ λ°μ΄ν°λ₯Ό μ μ‘ν λ μ¬μ©λ©λλ€. μ΄ μμ±μ΄ μμΌλ©΄ νμΌ μ
λ‘λκ° μ λλ‘ μλνμ§ μμ΅λλ€.
enctype="multipart/form-data"
μμ±μ΄ νμν κ²½μ°λ form νκ·Έ μλμ <input type=βfileβ> νμΌ μ²¨λΆ μ
λ ₯ νκ·Έλ₯Ό μ¬μ©ν λμ
λλ€.
λΌλ²¨κ³Ό μ
λ ₯ μμμ΄ μ΄μ°λ¬μ§ UI λ₯Ό μμ±ν©λλ€.
<div class="input-group mb-3 row">
<label class="input-group-text col-md-2">λΌλ²¨ μ΄λ¦</label>
<input type="text" class="form-control col-md-10" name="νλΌλ―Έν° μ΄λ¦">
</div>
HTML
볡μ¬
β’
<div class="input-group mb-3 row">:
β¦
input-group: μ
λ ₯ κ·Έλ£Ήμ μμ±νμ¬ μ¬λ¬ μ
λ ₯ μμλ₯Ό νλμ κ·Έλ£ΉμΌλ‘ λ¬Άμ΅λλ€.
β¦
mb-3: νλ¨ λ§μ§μ μΆκ°νμ¬ μμ κ°μ κ°κ²©μ λ§λλλ€.
β¦
row: Bootstrapμ 그리λ μμ€ν
μ μ¬μ©νμ¬ νμ μμ±ν©λλ€.
β’
<label class="input-group-text col-md-2" id="">λΌλ²¨ μ΄λ¦</label>:
β¦
input-group-text: μ
λ ₯ κ·Έλ£Ή λ΄μμ ν
μ€νΈλ₯Ό νμνλ λ μ΄λΈμ μμ±ν©λλ€.
β¦
col-md-2: μ€κ° ν¬κΈ° μ΄μμ νλ©΄μμ λ μ΄λΈμ λλΉλ₯Ό 2 컬λΌμΌλ‘ μ€μ ν©λλ€.
νμΌ
<input type="file" class="form-control col-md-10" name="file">
HTML
볡μ¬
β’
type="file": νμΌ μ
λ ₯ νλλ₯Ό μμ±ν©λλ€. μ¬μ©μκ° νμΌμ μ νν μ μμ΅λλ€.
β’
form-control: Bootstrapμ μ
λ ₯ νλ μ€νμΌμ μ μ©νμ¬ μΌκ΄λ λμμΈμ μ 곡ν©λλ€.
β’
col-md-10: μ€κ° ν¬κΈ° μ΄μμ νλ©΄μμ μ
λ ₯ νλμ λλΉλ₯Ό 10 컬λΌμΌλ‘ μ€μ ν©λλ€.
β’
name="file": μλ²λ‘ μ μ‘λ λ νμΌ μ
λ ₯ νλμ μ΄λ¦μ μ§μ ν©λλ€.
ν μ€νΈ
<div class="input-group mb-3 row">
<label class="input-group-text col-md-2">μνλͺ
</label>
<input type="text" class="form-control col-md-10" name="name">
</div>
HTML
볡μ¬
λΌλμ€
<div class="input-group mb-3 row">
<div class="col-md-2 p-0">
<label class="input-group-text" id="">μν</label>
</div>
<div class="col-md-10 d-flex align-items-center">
<div class="radio-box d-flex">
<div class="radio-item mx-5">
<input type="radio" class="form-check-input" name="condition" value="NEW" id="condition-new">
<label for="condition-new">μ κ· μ ν</label>
</div>
<div class="radio-item mx-5">
<input type="radio" class="form-check-input " name="condition" value="OLD" id="condition-old">
<label for="condition-old">μ€κ³ μ ν</label>
</div>
<div class="radio-item mx-5">
<input type="radio" class="form-check-input " name="condition" value="RE" id="condition-re">
<label for="condition-re">μ¬μ μ ν</label>
</div>
</div>
</div>
</div>
HTML
볡μ¬
β’
<div class="input-group mb-3 row">:
β¦
input-group: μ
λ ₯ κ·Έλ£Ήμ μμ±νμ¬ μ¬λ¬ μ
λ ₯ μμλ₯Ό νλμ κ·Έλ£ΉμΌλ‘ λ¬Άμ΅λλ€.
β¦
mb-3: νλ¨ λ§μ§μ μΆκ°νμ¬ μμ κ°μ κ°κ²©μ λ§λλλ€.
β¦
row: Bootstrapμ 그리λ μμ€ν
μ μ¬μ©νμ¬ νμ μμ±ν©λλ€.
β’
<div class="col-md-2 p-0">:
β¦
col-md-2: μ€κ° ν¬κΈ° μ΄μμ νλ©΄μμ λλΉλ₯Ό 2 컬λΌμΌλ‘ μ€μ ν©λλ€.
β¦
p-0: λͺ¨λ ν¨λ©μ μ κ±°ν©λλ€.
β’
<label class="input-group-text" id="">μν</label>:
β¦
input-group-text: μ
λ ₯ κ·Έλ£Ή λ΄μμ ν
μ€νΈλ₯Ό νμνλ λ μ΄λΈμ μμ±ν©λλ€.
β¦
μν: λ μ΄λΈμ νμλλ ν
μ€νΈμ
λλ€.
β’
<div class="col-md-10 d-flex align-items-center">:
β¦
col-md-10: μ€κ° ν¬κΈ° μ΄μμ νλ©΄μμ λλΉλ₯Ό 10 컬λΌμΌλ‘ μ€μ ν©λλ€.
β¦
d-flex: Flexbox λ μ΄μμμ μ¬μ©νμ¬ μμ μμλ₯Ό λ°°μΉν©λλ€.
β¦
align-items-center: μμ μμλ₯Ό μμ§ μ€μμ μ λ ¬ν©λλ€.
β’
<div class="radio-box d-flex">:
β¦
d-flex: Flexbox λ μ΄μμμ μ¬μ©νμ¬ μμ μμλ₯Ό λ°°μΉν©λλ€.
β’
<div class="radio-item mx-5">:
β¦
mx-5: μ’μ° λ§μ§μ μΆκ°νμ¬ μμ κ°μ κ°κ²©μ λ§λλλ€.
β’
<input type="radio" class="form-check-input" name="condition" value="NEW" id="condition-new">:
β¦
type="radio": λΌλμ€ λ²νΌ μ
λ ₯ νλλ₯Ό μμ±ν©λλ€.
β¦
class="form-check-input": Bootstrapμ λΌλμ€ λ²νΌ μ€νμΌμ μ μ©ν©λλ€.
β¦
name="condition": λΌλμ€ λ²νΌ κ·Έλ£Ήμ μ΄λ¦μ μ§μ ν©λλ€. λμΌν μ΄λ¦μ κ°μ§ λΌλμ€ λ²νΌμ νλλ§ μ νν μ μμ΅λλ€.
β¦
value="NEW": λΌλμ€ λ²νΌμ κ°μ "NEW"λ‘ μ€μ ν©λλ€.
β¦
id="condition-new": λΌλμ€ λ²νΌμ IDλ₯Ό "condition-new"λ‘ μ€μ ν©λλ€.
β’
<label for="condition-new">μ κ· μ ν</label>:
β¦
for="condition-new": λΌλμ€ λ²νΌμ IDμ μΌμΉμμΌ λΌλ²¨μ ν΄λ¦νλ©΄ ν΄λΉ λΌλμ€ λ²νΌμ΄ μ νλλλ‘ ν©λλ€.
β¦
μ κ· μ ν: λΌλ²¨μ νμλλ ν
μ€νΈμ
λλ€.
λ²νΌ
bootstrap λ²νΌμ λν μμΈν μ€λͺ
μ μλ νμ΄μ§μμ νμΈν μ μμ΅λλ€.
μν λ±λ‘ νλ©΄μμ μμ κ°μ΄ λ²νΌμ μμͺ½ λμ λ°°μΉνμ¬ λ§λ€μ΄μΌ ν©λλ€.
μ΄ λλ FLEX λ μ΄μμμ μ¬μ©νλ©΄ μ½κ² μ μ©ν μ μμ΅λλ€.
CSS μ FLEX λ μ΄μμμ λν μμΈν μ€λͺ
μ μμ νμ΄μ§μμ νμΈν μ μμ΅λλ€.
CSS μ FLEX λ μ΄μμμ bootstrap μ ν΅ν΄μ μ½κ² μ μ©νλ €λ©΄, μ νμ΄μ§μ μ€λͺ
μ μ°Έμ‘°νλ©΄ μ’κ² μ΅λλ€.
Bootstarp μΌλ‘ λ²νΌμμͺ½ λμ λ°°μΉνκΈ°
1.
d-flex ν΄λμ€λ‘ flex 컨ν
μ΄λ μ§μ νκΈ°
2.
μ£ΌμΆμ μ λ ¬ κΈ°μ€μ justify-content-between μΌλ‘ μ€μ νκΈ°
3.
λ²νΌ μ μ©νκΈ°
d-flex ν΄λμ€λ‘ flex 컨ν μ΄λ μ§μ νκΈ°
<div class="d-flex justify-content-between mt-5 mb-5">
</div>
HTML
볡μ¬
β’
d-flex: μ΄Β divΒ μμλ₯Ό Flex 컨ν
μ΄λλ‘ μ€μ ν©λλ€. Flex 컨ν
μ΄λλ μμ μμλ€μ ν λλ μ΄ λ°©ν₯μΌλ‘ λ°°μΉν μ μμ΅λλ€.
β’
μ£ΌμΆμ μ λ ¬ κΈ°μ€μ justify-content-between μΌλ‘ μ€μ νκΈ°
β’
justify-content-between: μμ μμλ€μ μ£Ό μΆ(κ°λ‘μΆ) μ λμ λ°°μΉνκ³ , κ·Έ μ¬μ΄μ λμΌν κ°κ²©μ λ‘λλ€.
β’
mt-5: μλ¨ λ§μ§μ μΆκ°νμ¬ μμ κ°μ κ°κ²©μ λ§λλλ€.
β’
mb-5: νλ¨ λ§μ§μ μΆκ°νμ¬ μμ κ°μ κ°κ²©μ λ§λλλ€.
λ²νΌ μ μ©νκΈ°
β’
[λͺ©λ‘] λ²νΌ : λͺ©λ‘ λ²νΌμ μν λͺ©λ‘ νμ΄μ§λ‘ μ΄λνλ λ§ν¬μ
λλ€.
β’
[λ±λ‘] λ²νΌ : λ±λ‘ λ²νΌμ form μμ²μ μ μΆνλ λ²νΌμ
λλ€.
<a href="./products.jsp" class="btn btn-lg btn-secondary">λͺ©λ‘</a>
<input type="submit" class="btn btn-lg btn-primary" value="λ±λ‘" />
HTML
볡μ¬
λ λ²νΌμ λν΄μ bootstrap μ btn ν΄λμ€λ₯Ό μ μ©νμ¬ λ²νΌ λͺ¨μμ λ§λ€μ΄ μ€λλ€.
<div class="d-flex justify-content-between mt-5 mb-5">
<a href="./products.jsp" class="btn btn-lg btn-secondary">λͺ©λ‘</a>
<input type="submit" class="btn btn-lg btn-primary" value="λ±λ‘" />
</div>
HTML
볡μ¬
μμ κ°μ΄ FLEX 컨ν
μ΄λ λ΄μ μμ΄ν
λ€μ, 컨ν
μ΄λμμ μ§μ ν μ£ΌμΆ, κ΅μ°¨μΆμ μ λ ¬λ°©μμ λ°λΌμ λ°°μΉλ©λλ€.
μ¬κΈ°μλ, justify-content-between λ₯Ό μ μ©νμκΈ° λλ¬Έμ μλ λ λ²νΌμ΄ μμͺ½ λμ λ°°μΉλ©λλ€.
μ΄ bootstrap ν΄λμ€λ μ€μ CSS μ μλμ κ°μ μ€νμΌ μμ±μΌλ‘ μ μ©λ©λλ€.
justify-content : space-between;
CSS
볡μ¬