JSP(Jakarta Server Pages)
-
π‘ JSPλ 무μμΈκ°μ?
- JSPλ Jakarta Server Pagesμ μ½μμ΄λ©°, HTML μ½λ μμ μλ° μ½λλ₯Ό μ½μ
νμ¬ μΉ μλ²μμ λμ μΌλ‘ μΉ νμ΄μ§λ₯Ό μμ±ν ν μ΄λ₯Ό μΉ λΈλΌμ°μ λ‘ μ λ¬νλ μλ² μ¬μ΄λ μ€ν¬λ¦½νΈ μΈμ΄μ
λλ€. μ΄λ₯Ό ν΅ν΄ μΉ νμ΄μ§λ₯Ό μ¬μ©μ μμ²μ λ§κ² λμ μΌλ‘ μμ±ν μ μμ΅λλ€.
- JSPλ Java EE(Enterprise Edition) μ€ν μ€ νλλ‘, μΉ μ ν리μΌμ΄μ
μλ²μμ μλν©λλ€.
-
βοΈ JSPμ μ€ν ꡬ쑰λ₯Ό νν€μΉλ€
- JSPλ μ€νλ λ μλ° μλΈλ¦ΏμΌλ‘ λ³νλμ΄ μ€νλ©λλ€. μ¦, JSPλ μλΈλ¦Ώκ³Ό λ§€μ° μ μ¬ν λ°©μμΌλ‘ μλνλ€κ³ ν μ μμ΅λλ€. μλΈλ¦Ώμ μλ°λ‘ μμ±λ μλ² μ ν리μΌμ΄μ
μ λ§νλ©°, JSPλ μ΄μ λ¬λ¦¬ HTML νμ€μ λ§μΆ° μμ±λκΈ° λλ¬Έμ μΉ λμμΈ μμ
μ λ νΈλ¦¬ν©λλ€.
-
π JSPμ νμκ³Ό λ°μ μ¬
- JSPλ 1999λ
μ¬ λ§μ΄ν¬λ‘μμ€ν
μ¦μ μν΄ μ²μ λ°°ν¬λμμ΅λλ€. μ΄ν, μΉ κΈ°μ μ΄ λ°μ νλ©΄μ JSPλ λ°μ ν΄μμΌλ©°, λ€λ₯Έ μλ² μ¬μ΄λ κΈ°μ λ€μΈ PHP, ASP, ASP.NETκ³Ό μ μ¬ν ꡬ쑰λ₯Ό κ°μ§κ³ μμ΅λλ€.
-
π JSPμ μ₯μ : μ μ νν΄μΌ ν κΉ?
- JSTL(Jakarta Standard Tag Library) λ± JSP νκ·Έ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νλ©΄ μλ° μ½λ μμ΄ νκ·Έλ§μΌλ‘ λμ μΈ μΉ νμ΄μ§λ₯Ό μμ±ν μ μμ΄, κ°λ° μμ°μ±μ λμΌ μ μμ΅λλ€.
- λν, Apache Strutsλ Jakarta νλ‘μ νΈμ μΌλΆλ‘ JSPλ λ λ§μ κΈ°λ₯λ€μ μ§μνλ©°, ν¨μ¨μ μΌλ‘ μΉ μ ν리μΌμ΄μ
μ ꡬμ±ν μ μμ΅λλ€.
π JSP λμ νλ¦: μμ²μμ μλ΅κΉμ§μ μ¬μ
-
π ν΄λΌμ΄μΈνΈ(μΉ λΈλΌμ°μ ): μμ²μ μμμ :
- μ¬μ©μκ° μΉ λΈλΌμ°μ λ₯Ό ν΅ν΄ JSP νμ΄μ§λ₯Ό μμ²ν©λλ€. μ΄ μμ²μ μλ²λ‘ μ λ¬λ©λλ€. μ¬κΈ°μ ν΄λΌμ΄μΈνΈλ λ³΄ν΅ λΈλΌμ°μ λ‘, μΉ νμ΄μ§μ λν μμ²(request)μ μλ²μ 보λ
λλ€.
-
π₯οΈ μλ²(μΉ μ ν리μΌμ΄μ
μλ²): μμ² μ²λ¦¬μ μ€μ¬:
- μλ²λ μ¬μ©μκ° μμ²ν JSP νμ΄μ§λ₯Ό μ²λ¦¬νκ² λ©λλ€. μ΄ κ³Όμ μμ JSP νμΌμ μλΈλ¦ΏμΌλ‘ λ³νλ©λλ€.
-
π§ JSP νμ΄μ§ λ³ν κ³Όμ : μλΈλ¦ΏμΌλ‘μ λ³μ :
- μ΅μ΄ JSP μμ² μ: μ¬μ©μκ° μ²μ JSP νμ΄μ§λ₯Ό μμ²ν λ, λλ JSP νμΌμ΄ λ³κ²½λ κ²½μ°, μλ²λ ν΄λΉ JSP νμΌμ μλΈλ¦ΏμΌλ‘ λ³νν©λλ€. μ΄ κ³Όμ μ λ€μκ³Ό κ°μ΄ μΈ λ¨κ³λ‘ μ§νλ©λλ€:
- JSP νμΌμ μλΈλ¦Ώ μλ° νμΌλ‘ λ³ν: μλ²λ JSP νμΌμ μλ° μλΈλ¦Ώ νμΌλ‘ λ³νν©λλ€. μ΄ λ³ν κ³Όμ μ μλμΌλ‘ μ²λ¦¬λ©λλ€.
- μλΈλ¦Ώ ν΄λμ€ μ»΄νμΌ: λ³νλ μλΈλ¦Ώ μλ° νμΌμ μλ° ν΄λμ€ νμΌλ‘ μ»΄νμΌλ©λλ€.
- μλΈλ¦Ώ ν΄λμ€ λ©λͺ¨λ¦¬ μ μ¬: μ»΄νμΌλ μλΈλ¦Ώ ν΄λμ€λ μλ² λ©λͺ¨λ¦¬μ μ μ¬λ©λλ€. μ΄λ₯Ό ν΅ν΄ μ΄ν μμ²μ λν΄ λΉ λ₯΄κ² μ²λ¦¬ν μ μμ΅λλ€.
-
π JSP νμ΄μ§ μ²λ¦¬ λ¨κ³: λ°μ΄ν°λΆν° μλ΅κΉμ§:
- μλ²κ° JSPλ₯Ό μλΈλ¦ΏμΌλ‘ λ³νν ν, ν΄λΉ μλΈλ¦Ώμ μ€ννμ¬ λ€μκ³Ό κ°μ λ¨κ³λ‘ μμ²μ μ²λ¦¬ν©λλ€:
- λ°μ΄ν° κ°μ Έμ€κΈ° (data get): μλ²λ νμν λ°μ΄ν°λ₯Ό κ°μ Έμ΅λλ€. μ΄ λ°μ΄ν°λ λ³΄ν΅ λ°μ΄ν°λ² μ΄μ€λ λ€λ₯Έ λ‘μ§μ ν΅ν΄ μ²λ¦¬λ μ 보μ
λλ€.
- λ‘μ§ λ° λΉμ¦λμ€ μ²λ¦¬ (Logic - Business): μλ²λ κ°μ Έμ¨ λ°μ΄ν°λ₯Ό κΈ°λ°μΌλ‘ λΉμ¦λμ€ λ‘μ§μ μ²λ¦¬νκ³ , λ°μ΄ν°λ² μ΄μ€ μ°λ λ±μ μμ
μ μνν©λλ€.
- μλ΅ νμ΄μ§ μμ± (response page): μ΅μ’
μ μΌλ‘ JSPλ μ²λ¦¬λ λ°μ΄ν°λ₯Ό ν¬ν¨ν HTML νμ΄μ§λ₯Ό μμ±νμ¬ ν΄λΌμ΄μΈνΈμκ² λ°νν©λλ€.
-
π Servlet λ³ν νμΌ νμΈ: λ³νμ κ²°κ³Όλ¬Ό νμ:
- JSPκ° μλΈλ¦ΏμΌλ‘ λ³νλ ν, ν΄λΉ λ³ν νμΌμ νμΈν μ μλ κ²½λ‘λ μ 곡λμ΄ μμ΅λλ€. μ΄λ μλ²κ° JSPλ₯Ό μλΈλ¦ΏμΌλ‘ λ³νν νμΌμ΄ μ μ₯λ μμΉλ₯Ό κ°λ¦¬ν΅λλ€. μμλ‘
%workspace%
λλ ν 리 μμ νΉμ μμΉμ νμΌμ΄ μ μ₯λ©λλ€.
π JSP Scriptlet: μ½λλ‘ μΉμ μμ§μ΄λ€!
1. π’ μ μΈλ¬Έ(Declaration)μ΄λ? JSPμμμ λ³μμ λ©μλ μ μΈνκΈ°
- μ μΈλ¬Έμ JSP νμ΄μ§μμ λ©€λ² λ³μλ λ©μλλ₯Ό μ μΈνλ μμμ
λλ€. JSPμμ μλ° μ½λλ₯Ό μ§μ μ½μ
νμ¬ λ©€λ² λ³μλ₯Ό μ μΈνκ±°λ, λ©μλλ₯Ό μ μν μ μμ΅λλ€.
- JSP νμ΄μ§ λ΄μμ μ μΈλ λ³μλ λ©μλλ ν΄λΉ νμ΄μ§ μ λ°μμ μ¬μ©ν μ μμ΅λλ€.
2. π νμ: μ μΈλ¬Έμ μ΄λ κ² μμ±ν©λλ€
- μ μΈλ¬Έμ
<%! %>
νκ·Έλ‘ κ°μΈμ μ¬μ©ν©λλ€.
<%! %>
: μ΄ νκ·Έ μμ μλ° μ½λλ‘ λ©€λ² λ³μ λλ λ©μλλ₯Ό μ μν©λλ€.
3. π‘ μμ: μ μΈλ¬Έμ μ€μ μ¬μ© λ°©λ²
<%!
int counter;
public void incrementCounter() {
counter++;
}
%>
2. π» μ€ν¬λ¦½λ¦Ώ(Scriptlet)μ΄λ? JSPμμ μλ° μ½λλ₯Ό μ½μ
νμ
- μ€ν¬λ¦½λ¦Ώμ JSP νμ΄μ§ λ΄μμ μλ° μ½λλ₯Ό μ½μ
ν μ μλ μμμΌλ‘, ν΄λΌμ΄μΈνΈ μμ² μλ§λ€ μλ²μμ μ²λ¦¬λλ μλ° μ½λλ₯Ό μ½μ
νλ λ° μ¬μ©λ©λλ€.
- JSPκ° μλΈλ¦ΏμΌλ‘ λ³νλ λ, ν΄λΉ μλ° μ½λλ μλΈλ¦Ώμ
service()
λ©μλ λ΄μ ν¬ν¨λμ΄ μ€νλ©λλ€.
2. π νμ: μ€ν¬λ¦½λ¦Ώμ μ΄λ κ² μμ±ν©λλ€
- μ€ν¬λ¦½λ¦Ώμ
<% %>
νκ·Έλ‘ μλ° μ½λλ₯Ό κ°μΈμ μ¬μ©ν©λλ€.
<% μλ° μ½λ %>
: μ΄ νκ·Έ μμ μλ° μ½λλ₯Ό μμ±νλ©΄ ν΄λΉ μ½λκ° μ€νλ©λλ€.
3. π‘ μμ: μ€ν¬λ¦½λ¦Ώμ μ€μ μ¬μ© λ°©λ²
<%
int sum = 0;
for(int i=1; i<=100; i++) {
sum += i;
}
out.println("1λΆν° 100κΉμ§μ ν©μ: " + sum);
%>
3. π¨οΈ ννμ(Expression)μ΄λ? κ²°κ³Όλ₯Ό μΆλ ₯ν΄λ³΄μ
- ννμμ JSP νμ΄μ§μμ μλ° λ³μλ κ°μ HTMLλ‘ μΆλ ₯ν λ μ¬μ©λ©λλ€.
- μ£Όλ‘ λ°μ΄ν°λ₯Ό ν΄λΌμ΄μΈνΈμ μΉ λΈλΌμ°μ μ μΆλ ₯νλ λ° μ¬μ©λλ©°, μλ° μ½λλ₯Ό HTML μλ΅μΌλ‘ μ½κ² λ³νν μ μμ΅λλ€.
2. π νμ: ννμμ μ΄λ κ² μμ±ν©λλ€
- ννμμ
<%= %>
νκ·Έλ‘ μλ° μ½λλ₯Ό κ°μΈμ μ¬μ©ν©λλ€.
<%= ννν κ° λλ λ³μ %>
: μ΄ νκ·Έ μμ μλ° μ½λλ₯Ό μμ±νλ©΄, ν΄λΉ μ½λμ κ²°κ³Όκ°μ HTMLλ‘ μΆλ ₯ν©λλ€.
- μΈλ―Έμ½λ‘ (;)μ μ¬μ©νμ§ μμ΅λλ€.
3. π‘ μμ: ννμμ μ€μ μ¬μ© λ°©λ²
μλ
<%= name %>!!!
<%= name %>
: name
μ΄λΌλ μλ° λ³μλ₯Ό μΆλ ₯ν©λλ€. λ§μ½ name
λ³μμ "νκΈΈλ"
μ΄λΌλ κ°μ΄ λ€μ΄μλ€λ©΄, ν΄λΉ μ½λλ "μλ
νκΈΈλ!!!"
μΌλ‘ λ³νλμ΄ ν΄λΌμ΄μΈνΈμκ² μ λ¬λ©λλ€.
- μ΄ μμλ μλ° λ³μλ₯Ό μ§μ HTML νμ΄μ§μμ νμνλ κ°λ¨ν μλ‘, λ°μ΄ν° μΆλ ₯μ μ½κ² ν μ μμ΅λλ€.
4. β οΈ μ£Όμμ¬ν: ννμ μ¬μ© μ μμλ μ
- μΈλ―Έμ½λ‘ (;) μ¬μ© κΈμ§: ννμ μμμλ μλ° μ½λ λ€μ μΈλ―Έμ½λ‘ μ μ¬μ©νμ§ μμ΅λλ€. λ§μ½ μΈλ―Έμ½λ‘ μ μ¬μ©νκ² λλ©΄ λ¬Έλ² μ€λ₯κ° λ°μν©λλ€.
<%= %>
μ out.print()
λΉκ΅: ννμ <%= %>
μ λ΄λΆμ μΌλ‘ out.print()
μ κ°μ μν μ ν©λλ€. μ¦, <%= λ³μ %>
λ <% out.print(λ³μ); %>
μ λμΌν κΈ°λ₯μ ν©λλ€.
5. π§ μμ©: ννμμΌλ‘ λ λ§μ κ² ν΄λ³΄κΈ°
- μ£Όμμ μ½λ λ΄μμ μ€λͺ
μ΄λ λ©λͺ¨λ₯Ό λ¨κΈ°λ λΆλΆμΌλ‘, JSP νμ΄μ§μμ μ½λ μ€νμ μν₯μ μ£Όμ§ μμ΅λλ€.
- JSPμμμ μ£Όμμ HTML μ£Όμκ³Όλ λ€λ₯΄κ² μλ² μΈ‘μμλ§ μ²λ¦¬λλ©°, ν΄λΌμ΄μΈνΈμκ² μ λ¬λμ§ μμ΅λλ€. μ¦, JSP μ£Όμμ λΈλΌμ°μ μ νμλμ§ μμ΅λλ€.
2. π νμ: μ£Όμμ μ΄λ κ² μμ±ν©λλ€
- JSP μ£Όμ:
<%-- --%>
λ‘ κ°μΈμ μ¬μ©ν©λλ€.
<%-- μ£Όμ λ΄μ© --%>
: μ΄ νκ·Έ μμ μμ±λ μ£Όμμ JSP νμ΄μ§μμ μ€νλμ§ μμΌλ©°, ν΄λΌμ΄μΈνΈμκ² μ λ¬λμ§ μμ΅λλ€.
3. π‘ μμ: μ£Όμμ μ€μ μ¬μ© λ°©λ²
<%-- μ΄ λΆλΆμ JSP μ£Όμμ
λλ€. ν΄λΌμ΄μΈνΈμκ² λ³΄μ΄μ§ μμ΅λλ€. --%>
<html>
<body>
<p>HTML μ£Όμμ ν΄λΌμ΄μΈνΈκ° λ³Ό μ μμ΅λλ€.</p>
</body>
</html>
- JSP μ£Όμ μμ:
<%-- μ΄ λΆλΆμ JSP μ£Όμμ
λλ€. --%>
: μ΄ μ£Όμμ μλ²μμλ§ μ²λ¦¬λλ©°, ν΄λΌμ΄μΈνΈμ μΉ λΈλΌμ°μ μλ νμλμ§ μμ΅λλ€.
- HTML μ£Όμ μμ:
<!-- μ΄ λΆλΆμ HTML μ£Όμμ
λλ€. -->
: μ΄ μ£Όμμ HTML νμ΄μ§μ ν¬ν¨λμ΄ ν΄λΌμ΄μΈνΈκ° μμ€ μ½λλ₯Ό ν΅ν΄ μ£Όμμ λ³Ό μ μμ΅λλ€.
4. β JSP μ£Όμ vs HTML μ£Όμ: 무μμ΄ λ€λ₯ΌκΉ?
- JSP μ£Όμ (
<%-- --%>
): μ΄ μ£Όμμ μλ² μΈ‘μμλ§ ν΄μλλ©°, HTML νμΌλ‘ λ³νλ λλ ν¬ν¨λμ§ μμ΅λλ€. λ°λΌμ ν΄λΌμ΄μΈνΈλ JSP μ£Όμμ λ³Ό μ μμ΅λλ€.
- HTML μ£Όμ (
<!-- -->
): μ΄ μ£Όμμ JSPκ° μ²λ¦¬λ νμλ HTML νμΌμ λ¨μ μμΌλ―λ‘, ν΄λΌμ΄μΈνΈκ° μΉ λΈλΌμ°μ μ μμ€ μ½λ 보기 κΈ°λ₯μ ν΅ν΄ λ³Ό μ μμ΅λλ€.
5. π§ μμ©: μ£Όμμ νμ©ν μ½λ κ΄λ¦¬
- JSPμμ μ½λλ₯Ό μ€λͺ
νκ±°λ λ©λͺ¨λ₯Ό λ¨κΈΈ λλ JSP μ£Όμμ μ¬μ©νμ¬ μ½λκ° μ€νλμ§ μλλ‘ ν μ μμ΅λλ€. λν, μΉ νμ΄μ§μ μΌλΆλ₯Ό ν΄λΌμ΄μΈνΈμκ² λ³΄μ΄μ§ μκ² μ¨κΈ°λ €λ©΄ HTML μ£Όμμ μ¬μ©ν μ μμ΅λλ€.
π¦ JSP Directives: νμ΄μ§λ₯Ό μ§μνλΌ!
JSP μ§μμ΄λ JSP νμ΄μ§μμ 컨ν
μ΄λμκ² νΉμ μ 보λ₯Ό μ 곡νμ¬ νμ΄μ§λ₯Ό μ²λ¦¬νλ λ°©μμ΄λ νΉμ νμΌμ ν¬ν¨νλ λ°©λ² λ±μ μ§μνλ λ° μ¬μ©λ©λλ€. JSPμλ μΈ κ°μ§ μ£Όμ μ§μμ΄κ° μμ΅λλ€: page μ§μμ΄, include μ§μμ΄, tag library μ§μμ΄. κ° μ§μμ΄λ₯Ό μμΈν μ€λͺ
νκ² μ΅λλ€.
1. π page Directive (νμ΄μ§ μ§μμ΄): νμ΄μ§ μ€μ μ ν΅μ¬
π§ μ€λͺ
: page μ§μμ΄λ 무μμΈκ°?:
page
μ§μμ΄λ JSP νμ΄μ§κ° μ΄λ»κ² μ²λ¦¬λ μ§μ λν μ μ μ€μ μ μ 곡ν©λλ€. μ£Όλ‘ λ¬Έμμ μΈμ½λ©, λ²νΌ ν¬κΈ°, μλ¬ νμ΄μ§ λ±μ μ€μ νλ λ° μ¬μ©λ©λλ€.
- μλ₯Ό λ€μ΄, JSP νμ΄μ§κ° UTF-8λ‘ μΈμ½λ©λλλ‘ μ€μ νκ±°λ, μμΈκ° λ°μνμ λ νΉμ μλ¬ νμ΄μ§λ‘ μ΄λνλλ‘ μ§μν μ μμ΅λλ€.
π νμ: page μ§μμ΄λ μ΄λ κ² μμ±ν©λλ€:
<%@ page attr1="val1" attr2="val2" ... %>
π‘ μμ: page μ§μμ΄μ μ€μ μ¬μ© λ°©λ²:
<%@ page contentType="text/html; charset=UTF-8" errorPage="error.jsp" %>
- contentType: λ¬Έμμ MIME νμ
κ³Ό μΊλ¦ν° μΈμ½λ©μ μ§μ ν©λλ€. μ¬κΈ°μλ
text/html
κ³Ό UTF-8
μ μ¬μ©νκ³ μμ΅λλ€.
- errorPage: μλ¬κ° λ°μνμ λ μ΄λν νμ΄μ§λ₯Ό μ§μ ν©λλ€. μμμμλ
error.jsp
λ‘ μ΄λνκ² λ©λλ€.
2. π include Directive (μΈν΄λ£¨λ μ§μμ΄): μ¬μ¬μ©μ μμ
π§ μ€λͺ
: include μ§μμ΄λ 무μμΈκ°?:
include
μ§μμ΄λ λ€λ₯Έ JSP νμΌμ νμ¬ JSP νμΌμ ν¬ν¨ν λ μ¬μ©λ©λλ€. λ°λ³΅μ μΌλ‘ μ¬μ©λλ μ½λ(μ: ν€λ, νΈν°)λ₯Ό λ³λμ νμΌλ‘ λ§λ€μ΄ μ¬λ¬ νμ΄μ§μμ μ¬μ¬μ©ν μ μμ΅λλ€.
- ν΄λΉ μ§μμ΄λ μ μ μΈ ν¬ν¨μ μλ―Ένλ©°, JSP νμΌμ΄ μ»΄νμΌλ λ ν¬ν¨ νμΌμ λ΄μ©μ΄ μ½μ
λ©λλ€.
π νμ: include μ§μμ΄λ μ΄λ κ² μμ±ν©λλ€:
<%@ include file="fileκ²½λ‘" %>
π‘ μμ: include μ§μμ΄μ μ€μ μ¬μ© λ°©λ²:
<%@ include file="/template/header.jsp" %>
- file: ν¬ν¨ν νμΌμ κ²½λ‘λ₯Ό μ§μ ν©λλ€. μ΄ μμμμλ
/template/header.jsp
νμΌμ ν¬ν¨νμ¬ νμ΄μ§ μλ¨μ λμΌν ν€λλ₯Ό λ°λ³΅μ μΌλ‘ μ¬μ©ν μ μμ΅λλ€.
3. π tag library Directive (νκ·Έ λΌμ΄λΈλ¬λ¦¬ μ§μμ΄): 컀μ€ν
νκ·Έ νμ©νκΈ°
π§ μ€λͺ
: taglib μ§μμ΄λ 무μμΈκ°?:
taglib
μ§μμ΄λ JSTL(JSP Standard Tag Library)μ΄λ μ¬μ©μ μ μ νκ·Έ(Custom Tag)λ₯Ό JSP νμ΄μ§μμ μ¬μ©ν λ μ μΈν©λλ€.
- 컀μ€ν
νκ·Έλ₯Ό μ¬μ©νλ©΄ JSP νμ΄μ§ λ΄μμ μλ° μ½λλ₯Ό μ€μ΄κ³ , νκ·Έλ₯Ό ν΅ν΄ 볡μ‘ν λ‘μ§μ λ¨μνκ² μ²λ¦¬ν μ μμ΅λλ€.
π νμ: taglib μ§μμ΄λ μ΄λ κ² μμ±ν©λλ€:
<%@ taglib prefix="c" uri="νκ·Έ λΌμ΄λΈλ¬λ¦¬ κ²½λ‘" %>
π‘ μμ: taglib μ§μμ΄μ μ€μ μ¬μ© λ°©λ²:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
- prefix: νκ·Έ λΌμ΄λΈλ¬λ¦¬μμ μ¬μ©ν μ λμ¬λ₯Ό μ μν©λλ€. μ¬κΈ°μλ
c
λΌλ μ λμ¬λ₯Ό μ¬μ©νμ¬ JSTLμ μ½μ΄(core) νκ·Έλ₯Ό μ¬μ©νκ² λ€λ μλ―Έμ
λλ€.
- uri: νκ·Έ λΌμ΄λΈλ¬λ¦¬μ μμΉλ₯Ό μ§μ ν©λλ€. μ μμλ JSTL μ½μ΄ νκ·Έ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νκΈ° μν μ μΈμ
λλ€.
π§ Page μ§μμ΄: νμ΄μ§ μ€μ μΈλΆμ¬ν
page μ§μμ΄λ JSP νμ΄μ§κ° μ΄λ»κ² μ²λ¦¬λμ΄μΌ ν μ§λ₯Ό μ μνλ μμ±λ€μ μ 곡ν©λλ€. κ° μμ±μ κΈ°λ³Έκ°κ³Ό μ€λͺ
μ μμΈν μ€λͺ
ν΄λλ¦¬κ² μ΅λλ€.
π page μ§μμ΄ μ£Όμ μμ±: μμλμ΄μΌ ν κ²λ€
π£οΈ language: μ¬μ©ν μΈμ΄ μ§μ
- κΈ°λ³Έκ°:
java
- μ€λͺ
: JSP μ€ν¬λ¦½νΈμμ μ¬μ©ν μΈμ΄λ₯Ό μ§μ ν©λλ€. κΈ°λ³Έμ μΌλ‘ μλ°λ₯Ό μ¬μ©νκΈ° λλ¬Έμ νΉλ³ν λ³κ²½ν νμκ° μμ΅λλ€.
βΉοΈ info: νμ΄μ§μ λν μ 보 μ 곡
- κΈ°λ³Έκ°: μμ
- μ€λͺ
: νμ¬ JSP νμ΄μ§μ λν μ€λͺ
μ μ 곡ν©λλ€. κ°λ°μκ° νμ΄μ§μ λν λ©ν μ 보λ₯Ό μΆκ°ν λ μ¬μ©λ©λλ€.
π° contentType: λ¬Έμμ μ½ν
μΈ νμ
μ€μ
- κΈ°λ³Έκ°:
text/html;charset=ISO-8859-1
- μ€λͺ
: λΈλΌμ°μ λ‘ μ μ‘λλ μλ΅μ MIME νμ
κ³Ό λ¬Έμ μΈμ½λ©μ μ§μ ν©λλ€. κΈ°λ³Έμ μΌλ‘ HTML λ¬Έμμ
ISO-8859-1
λ¬Έμ μ§ν©μ μ¬μ©νμ§λ§, μΌλ°μ μΌλ‘ UTF-8λ‘ μ€μ νλ κ²½μ°κ° λ§μ΅λλ€.
π€ pageEncoding: νμ΄μ§μ μΈμ½λ© μ§μ
- κΈ°λ³Έκ°:
ISO-8859-1
- μ€λͺ
: JSP νμ΄μ§μ λ¬Έμ μΈμ½λ©μ μ§μ ν©λλ€. μ΄ μ€μ μ ν΅ν΄ JSP νμ΄μ§κ° νΉμ λ¬Έμ μΈμ½λ©μΌλ‘ μ μ₯λκ³ μ²λ¦¬λ©λλ€.
π¦ import: νμν ν΄λμ€ κ°μ Έμ€κΈ°
- κΈ°λ³Έκ°: μμ
- μ€λͺ
: JSP νμ΄μ§μμ μ¬μ©ν Java ν¨ν€μ§λ ν΄λμ€λ₯Ό μ§μ ν©λλ€.
import
λ Javaμ import
λ¬Έκ³Ό λμΌν μν μ νλ©°, μλ₯Ό λ€μ΄ μμ£Ό μ¬μ©νλ java.util.List
κ°μ ν΄λμ€λ₯Ό κ°μ Έμ¬ λ μ¬μ©λ©λλ€.
π₯ session: μΈμ
μ¬μ© μ¬λΆ μ€μ
- κΈ°λ³Έκ°:
true
- μ€λͺ
: JSP νμ΄μ§μμ μΈμ
κ°μ²΄λ₯Ό μ¬μ©ν μ§ μ¬λΆλ₯Ό μ€μ ν©λλ€. κΈ°λ³Έμ μΌλ‘ μΈμ
μ νμ±νλμ΄ μμΌλ©°,
false
λ‘ μ€μ νλ©΄ μΈμ
μ λΉνμ±νν μ μμ΅λλ€.
π« errorPage: μλ¬ λ°μ μ μ΄λν νμ΄μ§ μ§μ
- κΈ°λ³Έκ°: μμ
- μ€λͺ
: μλ¬κ° λ°μνμ λ λμ μ²λ¦¬ν JSP νμ΄μ§λ₯Ό μ§μ ν©λλ€. μλ₯Ό λ€μ΄,
error.jsp
λ₯Ό μ§μ νλ©΄ JSP νμ΄μ§μμ μμΈκ° λ°μν κ²½μ° error.jsp
λ‘ μλμΌλ‘ ν¬μλ©λ©λλ€.
β isErrorPage: μλ¬ νμ΄μ§ μ¬λΆ μ€μ
- κΈ°λ³Έκ°:
false
- μ€λͺ
: νμ¬ JSP νμ΄μ§κ° μλ¬ νΈλ€λ§μ λ΄λΉνλ νμ΄μ§μΈμ§ μ¬λΆλ₯Ό μ§μ ν©λλ€.
true
λ‘ μ€μ λλ©΄ ν΄λΉ νμ΄μ§μμ μμΈ κ°μ²΄λ₯Ό μ¬μ©ν μ μμ΅λλ€.
πΎ buffer: λ²νΌ ν¬κΈ° μ€μ
- κΈ°λ³Έκ°:
8KB
- μ€λͺ
: JSP νμ΄μ§κ° ν΄λΌμ΄μΈνΈμκ² μλ΅μ μ μ‘νκΈ° μ μ 보κ΄ν λ²νΌμ ν¬κΈ°λ₯Ό μ§μ ν©λλ€. κΈ°λ³Έμ μΌλ‘ 8KBμ λ²νΌλ₯Ό μ¬μ©νλ©°, μλ΅μ΄ λ²νΌμ μ μ₯λ ν μ μ‘λ©λλ€.
π autoflush: λ²νΌ μλ λΉμ°κΈ° μ€μ
- κΈ°λ³Έκ°:
true
- μ€λͺ
: λ²νΌκ° κ°λ μ°Όμ λ, μλμΌλ‘ λ΄μ©μ ν΄λΌμ΄μΈνΈμκ² μ μ‘ν μ§ μ¬λΆλ₯Ό μ€μ ν©λλ€.
true
μΌ κ²½μ° λ²νΌκ° κ°λ μ°¨λ©΄ μλμΌλ‘ λΉμμ§λλ€.
π isThreadsafe: λ©ν° μ°λ λ μμ μ± μ€μ
- κΈ°λ³Έκ°:
true
- μ€λͺ
: JSP νμ΄μ§κ° λ©ν° μ°λ λμμ μμ νκ² λμνλμ§ μ¬λΆλ₯Ό μ€μ ν©λλ€. κΈ°λ³Έμ μΌλ‘
true
λ‘ μ€μ λμ΄ μμΌλ©°, false
λ‘ μ€μ νλ©΄ JSP νμ΄μ§λ SingleThread λͺ¨λΈλ‘ λμνμ¬ νλμ μ°λ λμμλ§ μλΉμ€λ©λλ€.
π extends: μμλ°μ ν΄λμ€ μ§μ
- κΈ°λ³Έκ°:
javax.servlet.jsp.HttpJspPage
- μ€λͺ
: νμ¬ JSP νμ΄μ§κ° μμλ°λ ν΄λμ€λ₯Ό μ§μ ν©λλ€. κΈ°λ³Έμ μΌλ‘ JSP νμ΄μ§λ
HttpJspPage
ν΄λμ€λ₯Ό μμλ°μ΅λλ€. μ΄ μμ±μ μ¬μ©νλ©΄ JSP νμ΄μ§κ° λ€λ₯Έ ν΄λμ€λ₯Ό μμλ°λλ‘ λ³κ²½ν μ μμ΅λλ€.
π JSP κΈ°λ³Έ λ΄μ₯ κ°μ²΄: νμ λꡬ λͺ¨μ
π¨ request: ν΄λΌμ΄μΈνΈμ μμ² μ 보
- Type:
jakarta.servlet.http.HttpServletRequest
- μ€λͺ
: ν΄λΌμ΄μΈνΈλ‘λΆν°μ μμ²μ μ²λ¦¬νλ κ°μ²΄μ
λλ€. μ£Όλ‘ HTML νΌ μμμ κ°μ΄λ μ¬μ©μ μ
λ ₯ λ°μ΄ν°λ₯Ό μ½μ΄μ¬ λ μ¬μ©λ©λλ€. λν, HTTP μμ² λ©μλ(GET, POST λ±)μ κ΄λ ¨λ μ 보λ₯Ό μ»μ μ μμ΅λλ€.
π€ response: μλ²μ μλ΅ μ²λ¦¬
- Type:
jakarta.servlet.http.HttpServletResponse
- μ€λͺ
: ν΄λΌμ΄μΈνΈμκ² μλ΅μ 보λ΄κΈ° μν κ°μ²΄μ
λλ€. JSP νμ΄μ§μμ λμ μΌλ‘ μμ±λ λ°μ΄ν°λ₯Ό ν΄λΌμ΄μΈνΈμκ² μ μ‘ν λ μ¬μ©ν©λλ€. μλ΅ ν€λ μ€μ , μΏ ν€ μ μ‘, 리λλ μ
μ²λ¦¬ λ± λ€μν κΈ°λ₯μ μ 곡ν©λλ€.
π pageContext: νμ΄μ§ 컨ν
μ€νΈ μ 보
- Type:
jakarta.servlet.jsp.PageContext
- μ€λͺ
: JSPμμ κΈ°λ³Έμ μΌλ‘ μ 곡λλ λͺ¨λ κ°μ²΄μ μ κ·Όν μ μκ² ν΄μ£Όλ μμ κ°μ²΄μ
λλ€. λν,
forward
λ° include
κΈ°λ₯μ νμ©ν λ μ¬μ©λ©λλ€. νμ΄μ§ 컨ν
μ€νΈλ νμ΄μ§μ λͺ¨λ μ 보λ₯Ό ν¬ν¨νλ 컨ν
μ΄λ μν μ ν©λλ€.
π₯ session: μ¬μ©μ μΈμ
κ΄λ¦¬
- Type:
jakarta.servlet.http.HttpSession
- μ€λͺ
: ν΄λΌμ΄μΈνΈμ μλ² κ°μ μΈμ
μ 보λ₯Ό κ΄λ¦¬νλ κ°μ²΄μ
λλ€. μΈμ
κ°μ²΄λ₯Ό ν΅ν΄ μ¬μ©μμ μνλ₯Ό μ μ§νκ³ , ν΄λΌμ΄μΈνΈμ λ‘κ·ΈμΈ μν, μ₯λ°κ΅¬λ μ 보 λ±μ μ μ₯ν μ μμ΅λλ€. page μ§μμ΄μμ
session="false"
λ‘ μ€μ νλ©΄ μΈμ
κ°μ²΄λ μμ±λμ§ μμ΅λλ€.
π application: μ ν리μΌμ΄μ
λ²μ κ°μ²΄
- Type:
jakarta.servlet.ServletContext
- μ€λͺ
: JSP νμ΄μ§κ° μν μΉ μ ν리μΌμ΄μ
μ 체μ λν μ 보λ₯Ό 곡μ ν μ μλ κ°μ²΄μ
λλ€. μ ν리μΌμ΄μ
λ²μμ μνλ λ°μ΄ν°λ₯Ό μ μ₯νκ±°λ λ€λ₯Έ μλΈλ¦Ώκ³Ό μ 보λ₯Ό 곡μ ν λ μ μ©ν©λλ€.
π¨οΈ out: μΆλ ₯ μ€νΈλ¦Ό μ²λ¦¬
- Type:
jakarta.servlet.jsp.JspWriter
- μ€λͺ
: JSP νμ΄μ§μμ μμ±λ λ°μ΄ν°λ₯Ό ν΄λΌμ΄μΈνΈμκ² μ μ‘νλ λ° μ¬μ©λ©λλ€. μ£Όλ‘ HTML, ν
μ€νΈ μΆλ ₯μ μ¬μ©λλ©°,
out.println()
μ ν΅ν΄ λ°μ΄ν°λ₯Ό μΆλ ₯ν©λλ€. ν΄λΌμ΄μΈνΈμκ² μ λ¬ν μΆλ ₯ μ€νΈλ¦Όμ μ²λ¦¬ν©λλ€.
βοΈ config: μλΈλ¦Ώ μ€μ μ 보
- Type:
jakarta.servlet.ServletConfig
- μ€λͺ
: JSP νμ΄μ§μ λν μ΄κΈ°ν νλΌλ―Έν°μ κ°μ μ€μ μ 보λ₯Ό ν¬ν¨νλ κ°μ²΄μ
λλ€. μλΈλ¦Ώ 컨ν
μ΄λλ‘λΆν° JSPκ° μ€νλ λ μ΄κΈ°νλ μ μλ νκ²½μ€μ μ μ 곡λ°μ΅λλ€.
π page: νμ¬ νμ΄μ§ κ°μ²΄
- Type:
java.lang.Object
- μ€λͺ
: νμ¬ JSP νμ΄μ§μ λν μ°Έμ‘° λ³μμ
λλ€. JSPκ° λ³νλ μλΈλ¦Ώμ
this
μ ν΄λΉνλ©°, μλ° μ½λμμ νμ΄μ§ μ체λ₯Ό μ°Έμ‘°ν λ μ¬μ©λ©λλ€.
β exception: μμΈ μ²λ¦¬ κ°μ²΄
- Type:
java.lang.Exception
- μ€λͺ
: JSP νμ΄μ§μμ λ°μν μμΈλ₯Ό μ²λ¦¬νλ κ°μ²΄μ
λλ€. isErrorPage="true"λ‘ μ€μ λ JSP νμ΄μ§μμλ§ μ¬μ©ν μ μμΌλ©°, μμΈκ° λ°μνμ λ κ·Έ μμΈ κ°μ²΄λ₯Ό μ°Έμ‘°νμ¬ μμΈ μ²λ¦¬λ₯Ό ν μ μμ΅λλ€.
π JSP κΈ°λ³Έ κ°μ²΄μ μμ(scope): λ°μ΄ν°μ μλͺ
μ£ΌκΈ°
JSPμμ κΈ°λ³Έ κ°μ²΄λ νΉμ ν μ ν¨ λ²μ λ΄μμ μ¬μ©λ©λλ€. μ΄ μ ν¨ λ²μλ₯Ό scopeλΌκ³ νλ©°, JSPμμ κ°μ²΄λ₯Ό μ μ₯ν μ μλ λ€ κ°μ§ μ£Όμ μμμ΄ μμ΅λλ€. μ΄ μμλ€μ κ°κ°μ λͺ©μ μ λ°λΌ κ°μ²΄κ° μ‘΄μ¬νλ μκ°κ³Ό λ²μλ₯Ό μ μν©λλ€. κ° μμμ μ€λͺ
νκ² μ΅λλ€.
1. π page μμ: νμ΄μ§ λ΄μμλ§ μ ν¨
- μ€λͺ
:
- νλμ JSP νμ΄μ§λ₯Ό μ²λ¦¬ν λ μ¬μ©λλ μμμ
λλ€. μ¦, ν΄λΌμ΄μΈνΈμ μμ²μ΄ λ°μνλ©΄ κ·Έ μμ²μ μ²λ¦¬νλ λμ ν΄λΉ JSP νμ΄μ§ λ΄μμλ§ μ ν¨ν κ°μ²΄λ₯Ό μ μ₯νλ 곡κ°μ
λλ€.
- νλμ JSP νμ΄μ§κ° νΈμΆλ λλ§λ€ μλ‘μ΄ page κ°μ²΄κ° μμ±λλ©°, κ·Έ νμ΄μ§κ° λλλ©΄ κ°μ²΄λ μλ©Έλ©λλ€.
- νμ΄μ§ μμμ λ²μ΄λλ©΄ κ°μ²΄λ μ¬λΌμ§κ² λ©λλ€. μ¦, λ€λ₯Έ JSP νμ΄μ§μμλ μ΄ κ°μ²΄λ₯Ό μ¬μ©ν μ μμ΅λλ€.
- μ£Όλ‘ μ»€μ€ν
νκ·Έμμ μλ‘μ΄ λ³μλ₯Ό μΆκ°νκ±°λ, JSP νμ΄μ§ λ΄μμλ§ μ¬μ©ν λ³μλ₯Ό μ μΈν λ μ¬μ©λ©λλ€.
- νΉμ§:
- λ¨ νλμ page κ°μ²΄λ§μ΄ ν΄λΉ νμ΄μ§μμ μ ν¨νλ©°, νμ΄μ§ λ΄μμλ§ λ°μ΄ν°λ₯Ό μ μ§ν©λλ€.
- νμ΄μ§λ₯Ό λμ΄μλ λ°μ΄ν° μ μ‘μ λΆκ°λ₯ν©λλ€.
2. π¨ request μμ: μμ² λ¨μλ‘ μ ν¨
- μ€λͺ
:
- νλμ HTTP μμ²μ μ²λ¦¬ν λ μ¬μ©λλ μμμ
λλ€. ν΄λΌμ΄μΈνΈκ° μλ²μ μμ²μ λ³΄λΌ λλ§λ€ μλ‘μ΄
request
κ°μ²΄κ° μμ±λλ©°, μμ²μ΄ λλ λκΉμ§ μ ν¨ν©λλ€.
- μμ²μ΄ μλ£λμ΄ ν΄λΌμ΄μΈνΈμκ² μλ΅μ μ μ‘νλ©΄, request κ°μ²΄λ μλ©Έλ©λλ€.
- μ£Όλ‘ νΌ λ°μ΄ν°λ 쿼리μ€νΈλ§κ³Ό κ°μ΄ ν΄λΌμ΄μΈνΈκ° μ
λ ₯ν λ°μ΄ν°λ₯Ό μ²λ¦¬νλ λ° μ¬μ©λ©λλ€.
- νΉμ§:
- κ° μμ²λ§λ€ μλ‘μ΄ request κ°μ²΄κ° μμ±λ©λλ€.
- κ°μ μμ² λ΄μμ λ€λ₯Έ JSPλ μλΈλ¦ΏμΌλ‘ λ°μ΄ν°λ₯Ό μ μ‘ν λ μ μ©ν©λλ€.
- μλ΅μ΄ λλλ©΄ κ°μ²΄λ μ¬λΌμ§λ―λ‘, ν λ²μ μμ²μ λν΄μλ§ λ°μ΄ν°κ° μ ν¨ν©λλ€.
3. π₯ session μμ: μ¬μ©μ μΈμ
λμ μ ν¨
- μ€λͺ
:
- μ¬μ©μμ μλ² κ°μ μΈμ
μ 보λ₯Ό μ μ§νλ μμμ
λλ€. μΈμ
κ°μ²΄λ κ°μ μ¬μ©μ(λΈλΌμ°μ )κ° μλ²μ μ°κ²°λμ΄ μλ λμ μ§μλ©λλ€.
- λ‘κ·ΈμΈ μ 보λ μ¬μ©μ μ€μ λ± μΈμ
μ μ§κ° νμν λ°μ΄ν°λ₯Ό μ μ₯νλ λ° μ¬μ©λ©λλ€.
- ν΄λΌμ΄μΈνΈκ° μΉ λΈλΌμ°μ λ₯Ό λ«κ±°λ, μΈμ
μ΄ λ§λ£λ λκΉμ§ session κ°μ²΄λ μ μ§λ©λλ€. λμΌν μ¬μ©μκ° μμ²νλ λͺ¨λ νμ΄μ§λ κ°μ session κ°μ²΄λ₯Ό 곡μ νκ² λ©λλ€.
- νΉμ§:
- ν λ² μΈμ
μ΄ μμ±λλ©΄ ν΄λΌμ΄μΈνΈκ° μΉ λΈλΌμ°μ λ₯Ό λ«κ±°λ μΈμ
μ΄ λ§λ£λ λκΉμ§ κ°μ²΄κ° μ μ§λ©λλ€.
- κ°μ μ¬μ©μκ° μμ²νλ νμ΄μ§ κ°μ λ°μ΄ν°λ₯Ό μ μ§ν μ μμ΄ μ¬μ©μλ³ λ°μ΄ν° κ΄λ¦¬κ° κ°λ₯ν©λλ€.
4. π application μμ: μ ν리μΌμ΄μ
μ 체μμ μ ν¨
- μ€λͺ
:
- μΉ μ ν리μΌμ΄μ
μ 체μμ 곡μ λλ μμμ
λλ€. μΉ μ ν리μΌμ΄μ
μ΄ μμλλ©΄
application
κ°μ²΄κ° μμ±λλ©°, μλ²κ° μ’
λ£λ λκΉμ§ μ μ§λ©λλ€.
- κ°μ μΉ μ ν리μΌμ΄μ
λ΄μ λͺ¨λ JSP νμ΄μ§μ μλΈλ¦Ώμμ application κ°μ²΄λ₯Ό 곡μ ν©λλ€.
- μ£Όλ‘ μ ν리μΌμ΄μ
μ λ°μμ μ¬μ©λλ κ³΅μ© λ°μ΄ν°λ₯Ό μ μ₯νλ λ° μ¬μ©λ©λλ€.
- νΉμ§:
- μ ν리μΌμ΄μ
λ¨μλ‘ λ°μ΄ν°λ₯Ό μ μ§ν©λλ€. μ¦, λͺ¨λ ν΄λΌμ΄μΈνΈμ λͺ¨λ μΈμ
μμ 곡μ λ©λλ€.
- μλ²κ° μ¬μμλκΈ° μ κΉμ§ κ°μ²΄λ κ³μν΄μ μ μ§λ©λλ€.
π οΈ JSP κΈ°λ³Έ κ°μ²΄μ μμ λ©μλ: λ°μ΄ν° κ΄λ¦¬ λ°©λ²
1. setAttribute(String name, Object value)
2. getAttribute(String name)
3. getAttributeNames()
4. removeAttribute(String name)
π WEB νμ΄μ§ μ΄λ: forwardμ sendRedirect
1. π forward(request, response) : μλ² λ΄λΆμμ νμ΄μ§ μ΄λ
μ€λͺ
:
- forwardλ ν΄λΌμ΄μΈνΈμ μμ²μ κ°μ μλ² λ΄μμ λ€λ₯Έ μμ(νμ΄μ§, μλΈλ¦Ώ λ±)μΌλ‘ μ λ¬νλ λ°©μμ
λλ€. μλ² μΈ‘μμ μ²λ¦¬λλ λ°©μμ΄λ―λ‘ ν΄λΌμ΄μΈνΈλ μ€μ λ‘ νμ΄μ§κ° μ΄λνλμ§ μ μ μμ΅λλ€.
π οΈ μ¬μ© λ°©λ²: forwardλ μ΄λ κ² μ¬μ©ν©λλ€
RequestDispatcher dispatcher = request.getRequestDispatcher(path);
dispatcher.forward(request, response);
- RequestDispatcher κ°μ²΄λ₯Ό μ¬μ©νμ¬ μ§μ ν κ²½λ‘λ‘ μμ²μ μ λ¬ν©λλ€. μ΄λ ν΄λΌμ΄μΈνΈλ URLμ΄ λ³κ²½λμ§ μμ΅λλ€.
π μ΄λ λ²μ: κ°μ μλ² λ΄μμλ§
- λμΌ μλ²(project) λ΄ κ²½λ‘μμλ§ μ΄λν μ μμ΅λλ€. λ€λ₯Έ μλ²λ μΈλΆ URLλ‘ μ΄λν μ μμ΅λλ€.
π URL νμμ€: λ³κ²½λμ§ μμ
- ν΄λΌμ΄μΈνΈμ URLμ΄ λ³κ²½λμ§ μμΌλ©°, μ¬μ©μλ νμ¬ μ΄λλ νμ΄μ§μ URLμ νμΈν μ μμ΅λλ€. μ€μ μ΄λλ νμ΄μ§μ μ£Όμλ₯Ό μ μ μμ΅λλ€.
π¦ κ°μ²΄: κΈ°μ‘΄ requestμ response μ μ§
- κΈ°μ‘΄μ requestμ response κ°μ²΄κ° κ·Έλλ‘ μ λ¬λ©λλ€. μ¦, μλμ μμ² κ°μ²΄μ λ΄κΈ΄ λ°μ΄ν°λ₯Ό κ·Έλλ‘ μ λ¬ν μ μμ΅λλ€.
β‘ μλ: λΉ λ¦
- ν΄λΌμ΄μΈνΈκ° λ€μ μμ²μ 보λ΄μ§ μκΈ° λλ¬Έμ sendRedirectμ λΉν΄ λΉ λ¦
λλ€. μλ²μμ μ²λ¦¬λλ―λ‘ μΆκ°μ μΈ HTTP μμ²μ΄ λ°μνμ§ μμ΅λλ€.
πΎ λ°μ΄ν° μ μ§: request λ²μ λ°μ΄ν° μ λ¬ κ°λ₯
- request κ°μ²΄μ
setAttribute(name, value)
λ₯Ό μ¬μ©νμ¬ λ°μ΄ν°λ₯Ό μ λ¬ν μ μμ΅λλ€. forward λ°©μμμλ request λ²μμ λ°μ΄ν°κ° μ ν¨νκ² μ λ¬λ©λλ€.
2. π sendRedirect: ν΄λΌμ΄μΈνΈμκ² μ μμ² μ§μ
μ€λͺ
:
- sendRedirectλ ν΄λΌμ΄μΈνΈμκ² μλ‘μ΄ URLλ‘ μ΄λνλΌλ μλ΅μ 보λ΄μ΄ λΈλΌμ°μ κ° μ§μ μλ‘μ΄ μμ²μ νλλ‘ νλ λ°©μμ
λλ€. ν΄λΌμ΄μΈνΈ μΈ‘μμ URLμ΄ λ³κ²½λλ©°, μΈλΆ μλ²λ URLλ‘λ μ΄λμ΄ κ°λ₯ν©λλ€.
π οΈ μ¬μ© λ°©λ²: sendRedirectλ μ΄λ κ² μ¬μ©ν©λλ€
response.sendRedirect(location);
- ν΄λΌμ΄μΈνΈμκ² μλ‘μ΄ URLλ‘ μμ²μ 보λ΄λλ‘ μ§μνλ λ°©μμ
λλ€. μ΄λ ν΄λΌμ΄μΈνΈμ λΈλΌμ°μ κ° μλ‘μ΄ URLλ‘ μ΄λνκ² λ©λλ€.
π μ΄λ λ²μ: μΈλΆ μλ²λ κ°λ₯
- λμΌ μλ²λΏλ§ μλλΌ, λ€λ₯Έ μλ² λλ μΈλΆ URLλ‘λ μ΄λν μ μμ΅λλ€. μλ₯Ό λ€μ΄, ꡬκΈμ΄λ λ€λ₯Έ μΉμ¬μ΄νΈλ‘λ 리λλ μ
μ΄ κ°λ₯ν©λλ€.
π URL νμμ€: λ³κ²½λ¨
- μ΄λνλ νμ΄μ§μ URLλ‘ λ³κ²½λ©λλ€. ν΄λΌμ΄μΈνΈλ μ΄λλ νμ΄μ§μ μλ‘μ΄ URLμ νμΈν μ μμ΅λλ€.
π¦ κ°μ²΄: μλ‘μ΄ requestμ response μμ±
- κΈ°μ‘΄μ requestμ response κ°μ²΄λ μλ©Έλλ©°, μλ‘μ΄ requestμ response κ°μ²΄κ° μμ±λ©λλ€. λ°λΌμ κΈ°μ‘΄ μμ²μμμ λ°μ΄ν°λ μ μ§λμ§ μμ΅λλ€.
π’ μλ: λλ¦Ό
- ν΄λΌμ΄μΈνΈκ° μλ‘μ΄ HTTP μμ²μ λ€μ 보λ΄μΌ νλ―λ‘ forwardμ λΉν΄ λ립λλ€. λΈλΌμ°μ κ° μλ‘μ΄ νμ΄μ§λ₯Ό μμ²νκΈ° λλ¬Έμ λ€νΈμν¬ νΈλν½μ΄ ν λ² λ λ°μν©λλ€.
β λ°μ΄ν° μ μ§: request λ°μ΄ν° μ μ§ λΆκ°
- request κ°μ²΄μ λ°μ΄ν°λ₯Ό μ μ₯ν μ μμ΅λλ€. λ°μ΄ν°λ₯Ό μ μ§νλ €λ©΄ sessionμ΄λ cookieλ₯Ό μ¬μ©ν΄μΌ ν©λλ€. request λ²μμ λ°μ΄ν°λ sendRedirectμμ μ λ¬λμ§ μκΈ° λλ¬Έμ
λλ€.
π μ 리: forwardμ sendRedirect λΉκ΅
κ΅¬λΆ | forward(request, response) | sendRedirect(location) |
---|
μ¬μ© λ°©λ² | RequestDispatcher dispatcher = ... | response.sendRedirect(location) |
μ΄λ λ²μ | λμΌ μλ² λ΄μμλ§ μ΄λ κ°λ₯ | λμΌ μλ² λ° μΈλΆ μλ² λͺ¨λ κ°λ₯ |
location bar (URL νμ) | κΈ°μ‘΄ URL μ μ§, μ΄λλ νμ΄μ§μ μ£Όμλ νμΈ λΆκ° | μλ‘μ΄ URLλ‘ λ³κ²½ |
κ°μ²΄ | κΈ°μ‘΄ requestμ responseκ° κ·Έλλ‘ μ λ¬λ¨ | μλ‘μ΄ requestμ responseκ° μμ±λ¨ |
μλ | λΉ λ¦ | λλ¦Ό |
λ°μ΄ν° μ μ§ | requestμ λ°μ΄ν° μ μ§ κ°λ₯ | requestμ λ°μ΄ν°λ μ μ§ λΆκ°, sessionμ΄λ cookie μ¬μ© νμ |
forwardλ κ°μ μλ² λ΄μμ λ°μ΄ν°λ₯Ό μ μ§νλ©΄μ λΉ λ₯΄κ² νμ΄μ§λ₯Ό μ΄λν λ μ¬μ©λκ³ , sendRedirectλ ν΄λΌμ΄μΈνΈκ° URLμ λ³κ²½νλ©° μλ‘μ΄ μμ²μ 보λ΄μΌ ν λ, νΉμ λ€λ₯Έ μλ²λ μΈλΆ URLλ‘ μ΄λν΄μΌ ν λ μ¬μ©λ©λλ€. κ° λ°©μμ νΉμ±μ μ΄ν΄νκ³ μν©μ λ§κ² μ¬μ©νλ κ²μ΄ μ€μν©λλ€.
π― νλ‘ νΈ μ»¨νΈλ‘€λ¬ ν¨ν΄(Front Controller Pattern): μμ²μ μ€μ μ§μ€ μ²λ¦¬
νλ‘ νΈ μ»¨νΈλ‘€λ¬ ν¨ν΄(Front Controller Pattern)μ μΉ μ ν리μΌμ΄μ
μμ λͺ¨λ μμ²μ νλμ μλΈλ¦ΏμΌλ‘ ν΅ν©νμ¬ μ²λ¦¬νλ λμμΈ ν¨ν΄μ
λλ€. μ΄ ν¨ν΄μ μ¬μ©νλ©΄ μ¬λ¬ κ°μ μλΈλ¦Ώμ κ°λ³μ μΌλ‘ κ΄λ¦¬νλ λμ , λ¨μΌ μ§μ
μ μμ λͺ¨λ μμ²μ λ°μμ νμν λ‘μ§μΌλ‘ λΆλ°°νλ λ°©μμΌλ‘ μλν©λλ€.
π‘ 1. νλ‘ νΈ μ»¨νΈλ‘€λ¬ ν¨ν΄μ΄λ?
- νλ‘ νΈ μ»¨νΈλ‘€λ¬ ν¨ν΄μ μΉ μ ν리μΌμ΄μ
μμ λͺ¨λ ν΄λΌμ΄μΈνΈ μμ²μ λ¨μΌ μ§μ
μ (μ£Όλ‘ νλμ μλΈλ¦Ώ)μ ν΅ν΄ μ²λ¦¬νλ λ°©μμ
λλ€.
- μ΄ ν¨ν΄μμλ ν΄λΌμ΄μΈνΈ μμ²μ λ¨Όμ ν κ³³μΌλ‘ λͺ¨μ ν, κ·Έ μμ²μ λ°λΌ ν΄λΉ κΈ°λ₯μ μ²λ¦¬ν 컨νΈλ‘€λ¬λ JSP νμ΄μ§λ‘ ν¬μλ©νκ±°λ νμν λΉμ¦λμ€ λ‘μ§μ μνν©λλ€.
- μ΄ ν¨ν΄μ μ¬μ©νλ©΄ μ½λ μ€λ³΅μ μ€μ΄κ³ μ ν리μΌμ΄μ
μ μ μ§ λ³΄μμ±μ λμΌ μ μμ§λ§, ν μλΈλ¦Ώμ λ무 λ§μ μ½λκ° μ§μ€λμ΄ λ³΅μ‘ν΄μ§ μ μμ΅λλ€.
π 2. λμ λ°©μ: μμ²μμ μλ΅κΉμ§
- ν΄λΌμ΄μΈνΈ μμ²μ΄ μλ²λ‘ λ€μ΄μ΅λλ€.
- νλ‘ νΈ μ»¨νΈλ‘€λ¬(Front Controller), μ¦ νλμ μλΈλ¦Ώμ΄ λͺ¨λ μμ²μ μ²λ¦¬ν©λλ€.
- μ΄ μλΈλ¦Ώμ μμ²μ νλΌλ―Έν° κ°(action λ±)μ λΆμνμ¬, μ΄λ€ λΉμ¦λμ€ λ‘μ§μ μνν μ§ κ²°μ ν©λλ€.
- μμ²μ λ°λΌ μ μ ν μλΉμ€, λΉμ¦λμ€ λ‘μ§μ νΈμΆνκ±°λ, JSP νμ΄μ§λ‘ ν¬μλ©ν©λλ€.
- κ²°κ³Όλ₯Ό ν΄λΌμ΄μΈνΈμκ² μλ΅ν©λλ€.
π’ 3. νλΌλ―Έν°λ‘ μμ² λΆκΈ° μ²λ¦¬νκΈ°
-
νλΌλ―Έν°(action): ν΄λΌμ΄μΈνΈκ° μ μ‘νλ action
νλΌλ―Έν°λ₯Ό ν΅ν΄ λ€μν μμ²μ νλμ μλΈλ¦ΏμΌλ‘ μ²λ¦¬ν©λλ€. μλ₯Ό λ€μ΄, νλΌλ―Έν°μ λ°λΌ λ‘κ·ΈμΈ, νμκ°μ
, κ²μκΈ μμ± λ± μλ‘ λ€λ₯Έ μμ
μ λΆκΈ° μ²λ¦¬ν μ μμ΅λλ€.
String action = request.getParameter("action");
if ("login".equals(action)) {
} else if ("register".equals(action)) {
} else if ("post".equals(action)) {
}
-
κ° μ‘μ
λ³λ‘ μ²λ¦¬ λ‘μ§μ λΆκΈ°: νλ‘ νΈ μ»¨νΈλ‘€λ¬λ μ΄ action
νλΌλ―Έν°λ₯Ό κΈ°μ€μΌλ‘, μμ²λ μμ
μ λ§λ μλΉμ€λ JSP νμ΄μ§λ‘ μμ²μ ν¬μλ©ν©λλ€. μλ₯Ό λ€μ΄:
action=login
μΌ κ²½μ° λ‘κ·ΈμΈ λ‘μ§μ μν
action=register
μΌ κ²½μ° νμκ°μ
λ‘μ§μ μν
π 4. μ₯μ : μ€μ κ΄λ¦¬μ μ΄μ
- μ€μ μ§μ€ κ΄λ¦¬: λͺ¨λ μμ²μ νλμ μλΈλ¦Ώμμ μ²λ¦¬νλ―λ‘ λ‘κΉ
, 보μ, μΈμ¦ λ±μ κ³΅ν΅ μμ
μ λ¨μΌ μ§μ μμ μ²λ¦¬ν μ μμ΅λλ€.
- μ½λ μ€λ³΅ κ°μ: μμ²λ§λ€ κ°λ³ μλΈλ¦Ώμ λ§λλ λμ , νλμ μλΈλ¦Ώμμ μ²λ¦¬νκΈ° λλ¬Έμ μ€λ³΅λ μ½λ μμ±μ΄ μ€μ΄λλλ€.
- μ μ§ λ³΄μμ± ν₯μ: λΉμ¦λμ€ λ‘μ§μ λ³κ²½μ΄ μκΈ°λλΌλ λ¨μΌ μλΈλ¦Ώμμ μμ νλ©΄ λλ―λ‘ μ μ§ λ³΄μ μμ
μ΄ κ°μνλ©λλ€.
β οΈ 5. λ¨μ : 볡μ‘μ± μ¦κ° κ°λ₯μ±
- μλΈλ¦Ώ μ½λκ° λ³΅μ‘ν΄μ§: μ¬λ¬ μμ
μ νλμ μλΈλ¦Ώμμ λͺ¨λ μ²λ¦¬νκΈ° λλ¬Έμ μ½λκ° κΈΈμ΄μ§κ³ 볡μ‘ν΄μ§ μ μμ΅λλ€.
- νμ₯μ± λΆμ‘±: μμ²μ΄ λ§μμ§μλ‘
if-else
λλ switch
λ¬Έμ΄ κΈΈμ΄μ Έμ, μ½λλ₯Ό κ΄λ¦¬νκΈ° μ΄λ €μμ§ μ μμ΅λλ€. μ΄λ₯Ό ν΄κ²°νκΈ° μν΄ Command ν¨ν΄κ³Ό κ°μ μΆκ°μ μΈ ν¨ν΄μ λμ
ν΄ λΉμ¦λμ€ λ‘μ§μ λ³λλ‘ λΆλ¦¬ν μ μμ΅λλ€.
π₯οΈ 6. JSPμμ μ°κ³: νλ‘ νΈ μ»¨νΈλ‘€λ¬μ JSP
- νλ‘ νΈ μ»¨νΈλ‘€λ¬λ λΉμ¦λμ€ λ‘μ§μ μ²λ¦¬ν ν, κ²°κ³Όλ₯Ό JSP νμ΄μ§λ‘ ν¬μλ©νμ¬ ν΄λΌμ΄μΈνΈμκ² μΆλ ₯ν μ μμ΅λλ€.
- μλ₯Ό λ€μ΄,
action=login
μΌλ‘ λ‘κ·ΈμΈ μ²λ¦¬κ° λλ ν, κ²°κ³Όμ λ°λΌ loginSuccess.jsp
λ loginFailure.jsp
λ‘ μ΄λνκ² λ©λλ€.
- JSPλ μ£Όλ‘ λ·°(View) μν μ νμ¬, νλ‘ νΈ μ»¨νΈλ‘€λ¬μμ μ²λ¦¬λ κ²°κ³Όλ₯Ό μ¬μ©μκ° λ³Ό μ μκ² ν©λλ€.
π 7. κ°μ λ°©μ: ν¨ν΄μ λ¨μ 극볡νκΈ°
- νλ‘ νΈ μ»¨νΈλ‘€λ¬ ν¨ν΄μ λ¨μ μ 보μνκΈ° μν΄ Command ν¨ν΄μ΄λ Handler ν¨ν΄μ ν¨κ» μ¬μ©ν©λλ€.
- κ°
action
μ κ°λ³ ν΄λμ€λ‘ λΆλ¦¬νμ¬ μ±
μμ λΆλ΄μν΄μΌλ‘μ¨, νλ‘ νΈ μ»¨νΈλ‘€λ¬μ 볡μ‘μ±μ μ€μΌ μ μμ΅λλ€.
π¬ JSPμ HTMLμ μ€ν μμ λ° μλ μ리
JSPλ μλ²μμ μλ° μ½λκ° λ¨Όμ μ€νλκ³ , κ·Έ κ²°κ³Όκ° HTMLλ‘ λ³νλμ΄ ν΄λΌμ΄μΈνΈ(λΈλΌμ°μ )μκ² μ λ¬λλ€λ μ μ λͺ
νν μ΄ν΄ν΄μΌ ν©λλ€. μ΄λ₯Ό ꡬ체μ μΌλ‘ μ€λͺ
νκ² μ΅λλ€.
π 1. μλ²μμ μλ° μ½λκ° λ¨Όμ μ€νλλ€
- JSP νμ΄μ§λ μλ²μμ μλ° μ½λμ HTMLμ΄ κ²°ν©λ ννλ‘ λμν©λλ€. JSP νμΌμ λΈλΌμ°μ μμ μ§μ μ€νλμ§ μκ³ , μλ²μμ μλ° μλΈλ¦Ώ(Servlet)μΌλ‘ λ³νλ ν μ€νλ©λλ€.
- μ΄λ JSP νμ΄μ§μ ν¬ν¨λ μλ° μ½λλ λ¨Όμ μλ²μμ μ€νλλ©°, κ·Έ κ²°κ³Όλ‘ HTML νμ΄μ§κ° μμ±λ©λλ€.
- ν΄λΌμ΄μΈνΈ(μ¬μ©μ)λ λΈλΌμ°μ λ₯Ό ν΅ν΄ μλ²κ° λ°νν μ΅μ’
HTML μ½λλ§μ λ³΄κ² λ©λλ€. λ°λΌμ μλ° μ½λκ° HTML λ¬Έλ²μ μν₯μ μ€ μ μμ΅λλ€. μλ° μ½λ μ€ν νμ κ²°κ³Όλ§ HTMLλ‘ λ°μλ λΏμ
λλ€.
π 2. μλ° μ½λμ μ€ν μμ
π« 3. HTML λ¬Έλ²μΌλ‘ μλ° μ½λ μ€νμ λ§μ μ μλ€
-
HTMLμ ν΄λΌμ΄μΈνΈ μΈ‘μμ μ²λ¦¬λλ λ§ν¬μ
μΈμ΄μ
λλ€. λ°λ©΄μ, μλ° μ½λλ μλ²μμ μ²λ¦¬λ©λλ€.
-
HTMLμ λ¨μν ν
μ€νΈλ‘ μμ±λ λ§ν¬μ
μ΄κΈ° λλ¬Έμ, μλ² μΈ‘μμ μ€νλλ μλ° μ½λλ₯Ό μ μ΄ν μ μλ λ₯λ ₯μ΄ μμ΅λλ€. μ¦, HTML μ£Όμμ μ¬μ©ν΄μ μλ° μ½λλ₯Ό λΉνμ±ννκ±°λ μ€νμ λ§λ κ²μ λΆκ°λ₯ν©λλ€.
μλ₯Ό λ€μ΄, λ€μ μ½λλ HTML μ£ΌμμΌλ‘ κ°μΈμ§ μλ° μ½λμ
λλ€:
- μ΄ κ²½μ°μλ μλ° μ½λλ μ¬μ ν μλ²μμ μ€νλ©λλ€. HTML μ£Όμμ λΈλΌμ°μ μμ ν΄λΉ μ½λλ₯Ό νλ©΄μ νμνμ§ μμ λΏμ΄μ§, μλ²μμ μλ° μ½λμ μ€νμ λ§μ μ μμ΅λλ€.
π 4. μλ° μ½λ μ€νμ λ§μΌλ €λ©΄ JSP μ£Όμμ μ¬μ©ν΄μΌ νλ€
-
JSP νμ΄μ§μμ μλ² μΈ‘μμ μλ° μ½λμ μ€νμ λ§κ³ μΆμ λλ JSP μ£Όμμ μ¬μ©ν΄μΌ ν©λλ€. JSP μ£Όμμ μλ° μ½λκ° μλ²μμ μ€νλμ§ μλλ‘ μ²λ¦¬ν μ μμ΅λλ€.
JSP μ£Όμμ λ€μκ³Ό κ°μ ννμ
λλ€:
<%-- μ΄ λΆλΆμ JSP μ£Όμμ
λλ€. μλ° μ½λλ₯Ό μ€ννμ§ μμ΅λλ€. --%>
μ΄ λ°©μμΌλ‘ μ£Όμμ μ²λ¦¬νλ©΄, ν΄λΉ μλ° μ½λλ μλ²μμ μ»΄νμΌ λ° μ€νλμ§ μμΌλ©°, ν΄λΌμ΄μΈνΈμκ²λ μ λ¬λμ§ μμ΅λλ€. μ΄μ λ¬λ¦¬ HTML μ£Όμμ λΈλΌμ°μ μκ² ν΄λΉ λΆλΆμ νλ©΄μ μΆλ ₯νμ§ λ§λΌκ³ μμ²ν λΏ, μλ² μΈ‘μ μλ° μ½λ μ€νμλ μν₯μ λ―ΈμΉμ§ μμ΅λλ€.
β 5. JSP μ£Όμκ³Ό HTML μ£Όμμ μ°¨μ΄μ
-
HTML μ£Όμ (<!-- -->
):
- HTML μ½λμ μΌλΆλΆμ μ£ΌμμΌλ‘ μ²λ¦¬νμ¬ ν΄λΌμ΄μΈνΈμκ² μΆλ ₯λμ§ μλλ‘ ν©λλ€.
- μλ° μ½λλ₯Ό HTML μ£ΌμμΌλ‘ κ°μΈλ, ν΄λΉ μλ° μ½λλ μλ²μμ μ¬μ ν μ€νλ©λλ€.
-
JSP μ£Όμ (<%-- --%>
):
- JSP μ£Όμμ μλ²μμ μλ° μ½λμ μ€νμ λ§μ΅λλ€.
- μ΄ μ£Όμμ μλ²μμ μ²λ¦¬λλ©°, ν΄λΌμ΄μΈνΈμκ² μ λ¬λμ§ μμ΅λλ€.
μλ₯Ό λ€μ΄:
<%--
μ΄ μλ° μ½λλ μ€νλμ§ μμ.
<%= new java.util.Date() %>
--%>
-
μ΄ κ²½μ°μλ μ£Όμ μ²λ¦¬λ μλ° μ½λκ° μλ²μμ μ€νλμ§ μμ΅λλ€. λν ν΄λΌμ΄μΈνΈμκ²λ μ λ¬λμ§ μκΈ° λλ¬Έμ λΈλΌμ°μ μμ€ μ½λμμλ νμΈν μ μμ΅λλ€.
π‘ 6. μλ² μ½λκ° λ¨Όμ μ€νλ¨μ μ΄ν΄νμ
- JSPλ μλ² μΈ‘μμ λ¨Όμ μ€νλ ν κ²°κ³Όλ₯Ό HTMLλ‘ λ°ννλ―λ‘, μλ²μμμ μ²λ¦¬ κ²°κ³Όκ° μ΄λ»κ² HTMLλ‘ λ³νλμ΄ μ λ¬λλμ§ λ°λμ μ΄ν΄ν΄μΌ ν©λλ€.
- ν΄λΌμ΄μΈνΈκ° μμ²μ λ³΄λΌ λλ§λ€ JSP νμ΄μ§ λ΄μ μλ° μ½λκ° μλ²μμ λ¨Όμ μ²λ¦¬λκ³ , κ·Έ κ²°κ³Όκ° HTMLλ‘ μΆλ ₯λλ€λ κ²μ νμ μΈμ§νκ³ μμ΄μΌ ν©λλ€.