λ΄μ₯κ°μ²΄λ 무μμΌκΉ?
"JSP λ΄μμ μ μΈνμ§ μκ³ μ¬μ©ν μ μλ κ°μ²΄"
λ€μ νμ΄μ μ€λͺ νμλ©΄ JSPκ° μλΈλ¦Ώ ννλ‘ μλ λ³νλ μ½λ λ΄μ μλμΌλ‘ ν¬ν¨λμ΄ μλ λ©€λ²λ³μ, λ©μλ 맀κ°λ³μ λ±μ κ°μ’ μ°Έμ‘° λ³μλ€μ λ§νλ€. λ³΄ν΅ μ€ν¬λ¦½νΈλ¦Ώ λ΄λΆμμ μ¬μ©νλ©° λ΄μ₯κ°μ²΄λ₯Ό ν΅νλ©΄ μ¬μ©μ μμ²μ 컨νΈλ‘€νκ±°λ νμ΄μ§ κ°μ λ°μ΄ν°λ₯Ό μμ½κ² 곡μ ν μ μλ€.
λ΄μ₯κ°μ²΄λ€μ νΉμ ν΄λμ€μ λν μΈμ€ν΄μ€ ννλ‘μ, 컨ν μ΄λλ₯Ό ν΅ν΄μ μ΄κΈ°νλκ³ λ€μν κΈ°λ₯κ³Ό μ 보λ€μ μ 곡νλ€.
- μ΄λ»κ² μ μΈνμ§ μκ³ μ¬μ©ν μ μλ κ²μΌκΉ?
μμ±λ JSP μ½λλ μλΈλ¦ΏμΌλ‘ λ³νλ ν λͺ¨λ _jspService() λ©μλ μμΌλ‘ λ€μ΄κ°κΈ° λλ¬Έμ λ©μλ 맀κ°λ³μμΈ request, responseμ μ§μλ³μλ‘ μ μΈλ pageContext, application, page, config, out λ±μ λͺ¨λ λ΄μ₯κ°μ²΄κ° λλ€. ν΄λΉ λ΄μ₯κ°μ²΄λ€μ _jspService λ©μλ λΆλΆμμ μ¬μ©μκ° μμ±λ μ½λ μμ μλμΌλ‘ μ μΈλκ³ μ΄κΈ°ν λκΈ° λλ¬Έμ JSP νμΌμμ νλ‘κ·Έλ¨μ μμ±ν λ λ΄μ₯κ°μ²΄λ₯Ό λ³λμ μ μΈ μμ΄ μ¬μ©ν μ μλ κ²μ΄λ€.
λ΄μ₯ κ°μ²΄μ μ’ λ₯μ κΈ°λ₯
request
"μ¬μ©μ μμ²κ³Ό κ΄λ ¨λ κΈ°λ₯μ μ 곡νλ λ΄μ₯κ°μ²΄"
μ£Όλ‘ ν΄λΌμ΄μΈνΈμμ μλ²λ‘ μ λ¬λλ μ 보λ₯Ό μ²λ¦¬νλ €κ³ μ¬μ©νλ€. κ°μ₯ λνμ μΈ μ νμ HTML νΌμ ν΅ν΄ μ λ ₯λ κ°μ JSPμμ κ°μ Έμ¬ λ μ¬μ©νλ κ²μ΄λ€. requestμ μλ ν΄λμ€λ javax.servlet.http.HttpServletRequestμ΄λ€.
getParameterNames() | νμ¬ μμ²μ ν¬ν¨λ 맀κ°λ³μμ μ΄λ¦μ μ΄κ±° ννλ‘ λ¦¬ν΄ |
getParameter(name) | λ¬Έμμ΄ nameμ 맀μΉλ valueλ₯Ό λ¦¬ν΄ |
getParamterValues(name) | λ¬Έμμ΄ nameμ 맀μΉλ valueλ₯Ό λ°°μ΄ ννλ‘ κ°μ Έμ΄ |
getCookies() | λͺ¨λ μΏ ν€ κ°μ javax.servlet.http.Cookieμ λ°°μ΄ ννλ‘ λ¦¬ν΄ |
getRemoteAddr() | ν΄λΌμ΄μΈνΈμ IP μ£Όμλ₯Ό 리ν΄νλ€. |
setCharacterEncoding() | νμ¬ JSPλ‘ μ λ¬λλ λ΄μ©μ μ§μ ν μΊλ¦ν°μ μΌλ‘ λ³νν΄μ€λ€. HTML νΌμμ νκΈ μ λ ₯μ μ μμ μΌλ‘ μ²λ¦¬νκΈ° μν΄ νμ |
- μΏ ν€
μΏ ν€λ ν΄λΌμ΄μΈνΈμ μλ² κ°μ μ°κ²°μ΄ μ μ§λμ§ μλ μΉ νλ‘κ·Έλ¨μ λ¬Έμ μ μ 보μνλ €κ³ ν΄λΌμ΄μΈνΈμ κ°λ¨ν λ°μ΄ν°λ₯Ό μ μ₯νκ³ μλ€κ° μλ²μμ μμ²μ΄ μ€λ©΄ μ΄λ₯Ό λΈλΌμ°μ κ° μ 곡νλ κΈ°μ μ΄λ€. μ΅κ·Όμλ 보μμμ λ¬Έμ λ‘ μ μ΄μ©λμ§ μμ§λ§ μλ²κ° ν΄λΌμ΄μΈνΈμ μ΄μ μ¬μ© κΈ°λ‘ λ±μ μ μ§νκΈ° μν μλ¨μΌλ‘λ μμ§ μ μ©νλ€.
response
"μ¬μ©μ μλ΅κ³Ό κ΄λ ¨λ κΈ°λ₯μ μ 곡νλ λ΄μ₯κ°μ²΄"
μ¬μ©μ μμ²(request)λ₯Ό μ²λ¦¬νκ³ μλ΅μ λ€λ₯Έ νμ΄μ§λ‘ μ λ¬νλ κΈ°λ₯μ μ 곡νλ€. javax.servlet.http.HttpServletResponse κ°μ²΄μ λν μ°Έμ‘° λ³μλ‘, requestμ λΉν΄ μ¬μ©λλ λ©μλλ μ μ§λ§ setContentType, sendRedirectμ κ°μ λ©μλλ μ μμλμ΄μΌ νλ€.
setContentType(type) | λ¬Έμμ΄ ννμ typeμ μ§μ΄λ MIME TypeμΌλ‘ contentTypeμ μ€μ νλ€. |
sendRedirect | ν΄λΌμ΄μΈνΈ μμ²μ λ€λ₯Έ νμ΄μ§λ‘ 보λΈλ€. |
- setContentType()
ν΄λΉ λ©μλλ₯Ό μ¬μ©νκ² λλ©΄ page μ§μμ΄μμ contentTypeμ μ΄μ©ν΄ μ§μ λ MIME Typeμ 무μνκ³ μλ‘μ΄ MIME Typeμ΄ ν€λλ‘ μ λ¬λλ€.
- sendRedirect vs forward
κ²°κ³Όλ§ λ³΄λ©΄ forward μ‘μ κ³Ό κ±°μ μ μ¬νμ§λ§ sendRedirectλ μλ‘μ΄ νμ΄μ§λ₯Ό μν request, response κ°μ²΄κ° μλ‘ μμ±λλ©° forward μ‘μ μ κ²½μ°μλ μλ μμ²μ ν¬ν¨λ requestμ response κ°μ²΄κ° ν¬ν¨λμ΄ κ·Έλλ‘ μ λ¬λλ€. μ¦, a->b->c μ΄λ°μμΌλ‘ μμ²μ΄ μ§νλλ€ ν λ, forward μ‘μ μ μ¬μ©νλ©΄ aμμ μ λ¬λ request κ°μ²΄κ° cκΉμ§ μ λ¬μ΄ λμ§λ§, sendRedirect λ©μλλ₯Ό μ¬μ©νλ©΄ bμμ cλ‘ λμ΄κ° λ μλ‘μ΄ request, response κ°μ²΄κ° μμ±λμ΄ κ°μ΄ μ λ¬λμ§ μλλ€.
out
"outμ μΆλ ₯ μ€νΈλ¦ΌμΌλ‘μ¨, μ¬μ©μ μΉ λΈλΌμ°μ λ‘ μΆλ ₯νκΈ° μν μ±λμ΄λ€."
μ€νΈλ¦½νΈλ¦Ώμμ λΈλΌμ°μ λ‘ ν μ€νΈ μΆλ ₯νλ λ° μ¬μ©νλ©°, outμ javax.servlet.jsp.JspWriter κ°μ²΄μ μ°Έμ‘° λ³μλ‘, λ²νΌ κ΄λ ¨ λ©μλμ μΆλ ₯ κ΄λ ¨ λ©μλλ‘ κ΅¬μ±λλ©° outμ μ΄μ©ν΄μ μΆλ ₯λ λ΄μ©μ μλ²μ μ½μμ΄ μλ μ¬μ©μμκ² μ λ¬λλ€.
getBufferSize() | output bufferμ ν¬κΈ°λ₯Ό λ°μ΄νΈλ‘ μλ €μ€λ€. |
getRemaining() | λ¨μ μλ λ²νΌμ ν¬κΈ° μ€ μ¬μ© κ°λ₯ν λΉμ¨μ μλ €μ€λ€. |
clearBuffer() | λ²νΌμ μλ μ½ν μΈ λ₯Ό λͺ¨λ μ§μ΄λ€. |
flush() | λ²νΌλ₯Ό μ§μ°κ³ output streamλ λΉμ΄λ€. |
close() | output streamμ λ«κ³ λ²νΌλ₯Ό λΉμ΄λ€. |
println(content) | contentμ λ΄μ©μ newlineκ³Ό ν¨κ» μΆλ ₯νλ€. |
print(content) | contentμ λ΄μ©μ μΆλ ₯νλ€. |
μ¬κΈ°μ λ²νΌλ₯Ό λΉμ΄λ€λ κ²μ, λ²νΌ λ΄μ©μ output streamμ ν΅ν΄ μ λ¬νκ³ λ²νΌμ λ΄μ©μ μ§μ΄λ€λ μλ―Έμ΄λ€.
session
"HTTP νλ‘ν μ½μ΄ λΉμ°κ²°ν νλ‘ν μ½μ΄λΌλ λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ λ±μ₯ν session!"
HTTP νλ‘ν μ½μ ν νμ΄μ§κ° μΆλ ₯λ λ€μμλ ν΄λΌμ΄μΈνΈμ μλ²μ μ°κ²°μ΄ λμ΄μ§λ€. λ°λΌμ μ¬μ©μκ° νΉμ νλμ ν λ κΉμ§ 보κ΄ν΄μΌ ν μ λ³΄κ° μλ€λ©΄ μ²λ¦¬κ° λ§€μ° κ³€λν΄μ§λ€. μ΄λ¬ν λ¬Έμ μ μ ν΄κ²°νκΈ° μν΄ λ±μ₯ν κ²μ΄ μΈμ κ³Ό μΏ ν€μ΄λ€. μΏ ν€λ μ¬μ©μμ κ΄λ ¨λ μ 보λ₯Ό PCμ μ μ₯νκ³ , μΈμ μ μλ²μ 보κ΄νλ λ°©μμΈλ°, μΈμ μ΄ μΏ ν€λ³΄λ€ 보μ λ¬Έμ μ μ 리νκ³ μ μ½μ¬νμ΄ μ μ νΈμ΄λΌμ μ΅κ·Όμλ λλΆλΆ μΈμ μ μ¬μ©νλ€.
getId() | μΈμ κ³ μ μ IDλ₯Ό λ¬Έμμ΄ ννλ‘ λ¦¬ν΄ |
getCreatingTime() | μΈμ μμ± μκ°μ January 1. 1970 GMT λΆν° long ν λ°λ¦¬μΈμ»¨λ κ°μΌλ‘ λ°ν |
getLastAccessedTime() | νμ¬ μΈμ μΌλ‘ λ§μ§λ§ μμ ν μκ°μ ongν λ°λ¦¬μΈμ»¨λ κ°μΌλ‘ λ°ν |
getMaxInactiveInterval() | μΈμ μ μ μ§μκ°μ μ΄λ‘ λ°ν |
setMaxInactiveInterval(t) | μΈμ μ μ ν¨ μκ°μ tμ μ€μ λ μ΄ κ°μΌλ‘ μ€μ |
invalidate() | μΈμ μ’ λ£ |
getAttribute(attr) | λ¬Έμμ΄ attrλ‘ μ€μ λ μΈμ κ°μ Object ννλ‘ κ°μ Έμ΄ |
setAttribute(name, attr) | λ¬Έμμ΄ nameμΌλ‘ Object attrμ μ μ₯ |
config
μλΈλ¦Ώμ΄ μ΅μ΄λ‘ λ©λͺ¨λ¦¬μ μ μ¬λ λ 컨ν μ΄λλ μλΈλ¦Ώ μ΄κΈ°νμ κ΄λ ¨λ μ 보λ₯Ό μ½κ³ javax.servlet.ServletConfig κ°μ²΄μ μ μ₯νλ€. μΉ μν리μΌμ΄μ νλμλ μλΈλ¦Ώ, JSP, λΉμ¦ ν΄λμ€ λ±μ΄ μ¬λ¬ κ°λ‘ ꡬμ±λλλ° config λ΄μ₯κ°μ²΄λ μλ‘ λ 립μ μΈ νμΌλ‘ ꡬμ±λ JSPλ μλΈλ¦Ώλ€μ΄ μλ‘ λ€λ₯Έ μμ μ μμμ μ 보λ₯Ό μλ‘ κ΅νν μ μλ κΈ°λ² μ€ νλλ‘ νμ©ν μ μλ€.
κΈ°λ³Έμ μΌλ‘ web.xml νμΌμ μ΄κΈ°ν κ°μ λ±λ‘ν΄λκ³ JSPμμ νμν κ²½μ° config λ΄μ₯κ°μ²΄λ₯Ό μ΄μ©ν΄ μ°Έμ‘°νλ λ°©λ²μ΄ μλ€.
getInitParameterNames() | μ΄κΈ° 맀κ°λ³μ κ°λ€μ μ€μ μ΄λ¦μ μ΄κ±° κ°μ²΄λ‘ λ°ν |
getInitParameter(name) | λ¬Έμμ΄ nameμ ν΄λΉνλ μ΄κΈ°ν 맀κ°λ³μ κ° λ°ν |
application
applicationμ μΉ μν리μΌμ΄μ μ 체λ₯Ό κ΄λ¦¬νλ κ°μ²΄μ΄λ€. application κ°μ²΄λ₯Ό ν΅ν΄ κ° μλΈλ¦Ώμ΄λ JSPμμ 곡μ νλ €κ³ νλ κ°μ’ μ 보λ₯Ό μ€μ νκ³ μ°Έμ‘°ν μ μλ€.
applicationμ javax.servlet.ServletContext κ°μ²΄μ λν μ°Έμ‘° λ³μλ‘μ, config κ°μ²΄λ₯Ό ν΅ν΄ μμ±νλ€. ServletContext κ°μ²΄λ 컨ν μ΄λμ κ΄λ ¨λ μ¬λ¬ μ 보λ₯Ό μ 곡νλ©°, application μ°Έμ‘° λ³μλ₯Ό ν΅ν΄μ μλΈλ¦Ώμ΄ μ€νλλ νκ²½, μλ² μμκ³Ό κ΄λ ¨λ μ 보λ₯Ό μ»κ±°λ λ‘κ·Έ νμΌμ κΈ°λ‘νλ μμ μ μννλ€.
log(message) | λ¬Έμμ΄ messageμ λ΄μ©μ λ‘κ·Έ νμΌμ κΈ°λ‘νλ€. |
log(message, exception) | μμΈ μν©μ λν μ 보λ₯Ό ν¬ν¨νμ¬ λ‘κ·Έ νμΌμ κΈ°λ‘νλ€. |
getAttribute(String name) | λ¬Έμμ΄ nameμ ν΄λΉνλ μμ± κ°μ΄ μλ€λ©΄ Object ννλ‘ λ°ν, νλ³νμ΄ νμνλ€. |
getAttributeNames() | application κ°μ²΄μ μ μ₯λ μμ±λ€μ μ΄λ¦μ μ΄κ±° ννλ‘ κ°μ Έμ¨λ€. |
setAttribute(String name, Object value) | λ¬Έμμ΄ nameμ μ΄λ¦μΌλ‘ Objectν λ°μ΄ν°λ₯Ό μ μ₯νλ€. |
removeAttribute(String name) | λ¬Έμμ΄ nameμ ν΄λΉνλ μμ±μ μμ νλ€. |
exception
exceptionμ pageμ§μμ΄μμ μ€λ₯ νμ΄μ§λ‘ μ§μ λ JSP νμ΄μ§μμ μμΈκ° λ°μν λ μ λ¬λλ java.lang.Throwableμ μΈμ€ν΄μ€μ λν μ°Έμ‘° λ³μλ€. νμ¬ νμ΄μ§λ₯Ό μ²λ¦¬νλ€ λ°μνλ μμΈμν©μ λν μ 보λ₯Ό κ°μ Έμ¬ μ μλ€.
getMessage() | λ¬Έμμ΄λ‘ λ μ€λ₯ λ©μμ§λ₯Ό λ°ννλ€. |
printStackTrace() | μ€ν μΆμ μ 보λ₯Ό μΆλ ₯νλ€. |
toString() | μμΈ ν΄λμ€ μ΄λ¦κ³Ό ν¨κ» μ€λ₯ λ©μμ§λ₯Ό λ°ννλ€. |
λ΄μ₯κ°μ²΄μ μλͺ μ£ΌκΈ°μ μμ± κ΄λ¦¬
JSPλ HTTP νλ‘ν ν΄μ μ¬μ©νλ μΉ νκ²½μμ ꡬλλλ νλ‘κ·Έλ¨μ΄λ€. μ΄λ¬ν μΉ νλ‘ν μ½λ€μ λΉμ°κ²° λ°©μμΌλ‘ μ¬μ©μκ° μλ²μ νΉμ νμ΄μ§λ₯Ό μμ²νκ³ μμ²κ²°κ³Όλ₯Ό μλ΅λ°μΌλ©΄ μλ²μμ μ°κ²°μ΄ λκΈ°λ ννμ΄λ€. μ΄λ¬ν νΉμ± λλ¬Έμ μ΄λ ν μ 보λ₯Ό μ§μμ μΌλ‘ κ°μ§κ³ μμ΄μΌ νλ κΈ°λ₯μ ꡬννκΈ°μ κ΅μ₯ν μ΄λ €μμ§λ€. κ·Έλ¦¬κ³ μ΄λ¬ν λ¬Έμ μ μ ν΄κ²°νκΈ° μν΄ λ±μ₯ν κ²μ΄ λ΄μ₯ κ°μ²΄μ΄λ€. κ·Έλ κΈ° λλ¬Έμ μ°λ¦¬λ λ΄μ₯ κ°μ²΄μ μλͺ μ£ΌκΈ°μ μμ± κ΄λ¦¬μ λν΄ νμ€νκ² μ΄ν΄λ₯Ό νκ³ μμ΄μΌ κ³ κΈ μΉμ κ°λ°ν μ μλ€.
request, session, applicationμ μμ± μμ κ³Ό μλ©Έ μμ μ μΈμ μΌκΉ?
λ΄μ₯κ°μ²΄ | μμ±μμ | μλ©Έμμ |
request | ν΄λΉ νμ΄μ§ μμ² μμ | ν΄λΉ νμ΄μ§ λ‘λ© μλ£ μμ |
session | ν΄λΉ 컨ν μ€νΈ λ΄ νΉμ νμΌ μμ² μμ | μΉ λΈλΌμ°μ μ’ λ£ or μΌμ μκ° κ²½κ³Ό μμ |
application | μΉ μν리μΌμ΄μ μμ μμ | μΉ μν리μΌμ΄μ μ’ λ£ μμ |
request, session, applicationμ ν΅ν΄ κ΄λ¦¬ν μ μλ 맡 ννμ μμ±λ€
request, session, applicationμ 맡 ννμ μμ±μ κ΄λ¦¬νλ κΈ°λ₯μ μ 곡νλ€. ν΄λΉλλ λ©μλλ setAttribute()μ getAttribute() μ΄λ€. JSPμμ λ΄μ₯κ°μ²΄μμ λ€λ£¨λ μμ±μ μλ―Έλ "κ° λ΄μ₯κ°μ²΄μ μλͺ μ£ΌκΈ° λ΄μμ κ΄λ¦¬λ μ μλ μλ° Object ννμ λ°μ΄ν°"λ‘ μ μν μ μλ€.
λ΄μ₯κ°μ²΄μμ 맡 κΈ°λ°μΌλ‘ μμ±μ κ΄λ¦¬νλ κΈ°λ³Έμ μΈ λ°©λ²μ "μ΄λ¦(Name): κ°(Value)"μ μμΌλ‘ κ°μ²΄λ₯Ό μ μ₯νλ κ²μ΄λ€. μ΄λ¬ν λ°©μμ μλ°μ λνμ μΈ μλ£κ΅¬μ‘° μ€ νλμΈ ν΄μ 맡과 μ μ¬νλ€.
컨ν μ΄λ κΈ°λ° νλ‘κ·Έλ¨μ νΉμ§κ³Ό JSP λ΄μ₯κ°μ²΄
νλ‘κ·Έλ¨ κ΄μ μμ 컨ν μ΄λλ νλ‘κ·Έλ¨ μ€νμ κ΄μ°νλ©΄μ λͺ¨λνλ νλ‘κ·Έλ¨μ μ€νν μ μκ² νκ³ νλ‘κ·Έλ¨ κ°μ μνν λ°μ΄ν°(κ°μ²΄) κ΅νμ μ§μνλ μννΈμ¨μ΄λ₯Ό λ§νλ€. 컨ν μ΄λ κΈ°λ° νλ‘κ·Έλ¨μ μ₯μ μ λ€μκ³Ό κ°λ€.
(1) νλ‘κ·Έλ¨μ λͺ¨λνκ° μ©μ΄νλ€.
(2) λ 립μ μΌλ‘ μ€ννλ λͺ¨λ κ°μ λ°μ΄ν° κ΅νμ΄ μ©μ΄νλ€.
(3) κ°λ³ νλ‘κ·Έλ¨μμ νλ©΄/μν μ ν μ λ°μ΄ν°λ₯Ό μ μ§/κ΄λ¦¬νκΈ° μ©μ΄νλ€.
(4) JSPμμλ 컨ν μ΄λμ μν΄ κ΄λ¦¬λλ λ΄μ₯κ°μ²΄λ₯Ό ν΅ν΄ μμμ κ°μ²΄λ₯Ό κ°κ°μ μλͺ μ£ΌκΈ° μμ μ λ°λΌ 곡μ ν μ μλ€.
JSPμμ λ΄μ₯κ°μ²΄λ₯Ό μ΄μ©ν μμ± κ΄λ¦¬κ° κ°λ₯ν κ²μ JSPμ λΉμ¦ κ°μ²΄λ€μ΄ ν°μΊ£μ΄λΌκ³ νλ 컨ν μ΄λμ μν΄ κ΄λ¦¬λκ³ μ€νλκΈ° λλ¬Έμ΄λ€.
- MVC ν¨ν΄κ³Ό JSP λ΄μ₯κ°μ²΄?
MVC ν¨ν΄μ λ°λ₯΄λ©΄ JSPλ λ·°μ μν λ§ μνν΄μΌ νλ€. λ¬Έμ λ 컨νΈλ‘€λ¬μμ μ²λ¦¬ν λ°μ΄ν°λ₯Ό μ΄λ»κ² JSPλ‘ μ λ¬ν΄μΌ νλ μ§μ λν κ²μ΄λ€. μ΄λ JSP λ΄μ₯ κ°μ²΄λ₯Ό μ΄μ©ν μμ± κ΄λ¦¬κ° μ¬μ©λλ€. μλ₯Όλ€μ΄, 컨νΈλ‘€λ¬μμ μ²λ¦¬ν λ°μ΄ν°λ request.setAttribute()λ₯Ό μ΄μ©ν΄μ μ μ₯νκ³ νλ©΄μ 보μ¬μ§ JSPλ‘ ν¬μλ©νλ©΄ ν΄λΉ JSPμμλ request λ΄μ₯κ°μ²΄λ₯Ό ν΅ν΄ λ°μ΄ν°λ₯Ό μ°Έμ‘°ν μ μμΌλ―λ‘ μμ ν MVC ν¨ν΄μ ꡬνν μ μλ€.
Reference
νλ‘μ νΈλ‘ λ°°μ°λ μλ° μΉ νλ‘κ·Έλλ° Servlet,JSP,JDBC,ν©μμ μ§μ,νλΉμμΉ΄λ°λ―Έ