SHORTCUT
์ธํธ๋ก
์ด์ ์ธํผ ๊ต์ก ๊ณผ์ ์ ํตํด Spring MVC์ ๋ํ ๋ด์ฉ์ด๋, ์คํ๋ง ๋ถํธ ๋ฑ์ ๋ฐฐ์ ์ง๋ง, ๊ทธ ์ดํ ํ๋ก์ ํธ์์๋ ํ๋ก ํธ์๋ ์ชฝ์ผ๋ก ๋์ฑ ๊น๊ฒ ๋ค์ด๊ฐ์ต๋๋ค.
ํ์ง๋ง ํ์ฌ ์ ๋ Spring Framework ํ๊ฒฝ์์ ์ ๋ฌด๋ฅผ ํ๊ณ ์์ต๋๋ค. ํ์คํ..์ด๋ผ ํ๋ฉด ๋ถ๋๋ฝ์ง๋ง, ์๋ฌดํผ ํ๋ก ํธ๋จ ๋ถํฐ ๋ฐฑ์๋, SQL๊น์ง ๊ฑด๋๋ฆฌ๊ณ ์์ต๋๋ค.
์ ๋ฌด์ ๋น ๋ฅด๊ฒ ์ ์ํ๊ณ ์ ์ญํ ์ ํ๊ธฐ ์ํด์ ๋ฐฐ์ ๋ ๋ด์ฉ์ด๋ ์ ๋ฌด์ ํ์ฉํ๋ ๊ฐ๋ ๋ค์ ๋ฆฌ๋ง์ธ๋ ๋ฐ ์ฌ์ ๋ฆฝ ํ ํ์๊ฐ ์๋ค๊ณ ์๊ฐํ๊ณ , ๊ฐ๋จํ๊ฒ๋๋ง ๋ด์ฉ๋ค์ ์ ๋ฆฌํ์์ต๋๋ค.
์ทจ์ ์ด๋ฐ์ ์ ๋ฆฌํ ๋ด์ฉ๋ค์ ๋ณธ ๋ณธ๋ฌธ์์ ๊ณต์ ํ๊ณ ์ ํฉ๋๋ค.
JSP์ Sevlet
- JSP์ ์๋ธ๋ ์ ๋์ ์์ด ํจ๊ป ๋ฑ์ฅํ๋ ์ฉ์ด์ ๋๋ค.
- ์ฐ์ ์๋ธ๋ (Servlet)์ ๊ฐ๋จํ ๋งํ๋ฉด ์๋ฐ์์ ์คํํ๋ ์น ์ฝ๋์
๋๋ค.
doGet
๋ฑ์ ๋ฉ์๋๋ฅผ ํตํด ์งํ๋๋ฉฐ,
out.println(โ<h1>์๋ฏธ์ ๋ธ๋ก๊ทธ</h1>โ)
์ ํํ๋ก HTML ์ฝ๋๋ฅผ ์์ฑํ๊ณ ์์ต๋๋ค.
- ๋ฐ๋ฉด JSP๋ HTML ์ฝ๋๋ก ์์ฑํ๊ณ , ์ฌ์ด์ฌ์ด์ ์๋ฐ ์ฝ๋๋ฅผ ๋ฃ๋ ํ์์
๋๋ค.
- ๊ธฐ๋ณธ์ ์ธ ์์ฑ์ด๋ ๋ฐฉ์์ html ํ์ผ๊ณผ ๋์ผํฉ๋๋ค.
- ์คํด๋ฆฝํ๋ฆฟ(
<% ~ %>
) ์ ํตํด html ํ์ผ ๋ด๋ถ์ ์๋ฐ ์ฝ๋๋ฅผ ์ฝ์ ํ ์ ์์ต๋๋ค.<h1>์๋ฏธ์ ๋ธ๋ก๊ทธ</h1> <% String name = "์๋ฏธ"; %>
- ์ ๋๊ฐ๋ก ๋๋์ด์ก์๊น์?
- ํ์
์ ์ฉ์ดํฉ๋๋ค.
- ๊ธฐ์กด ์๋ธ๋ฆฟ์ ๊ฒฝ์ฐ Java ์ฝ๋์์ ์์ฑ๋๋ฏ๋ก, ๋์์ด๋๋ ํผ๋ธ๋ฆฌ์ ๊ฐ HTML ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ์ ์ด๋ ค์ ์ต๋๋ค.
- JSPํ์ผ๋ก ๋๋ ์ง ๊ฒฝ์ฐ, ํผ๋ธ๋ฆฌ์ ๋ JSP ํ์ผ์์ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ๊ฐ๋ฐ์๋ Back๋จ ๋ก์ง์๋ง ์ง์ค ํ ์ ์์ด ํ์ ์ ์ฉ์ดํ๊ฒ ๋ฉ๋๋ค.
- ์ฝ๋ ๊ฐ๋
์ฑ์ด ๋์์ง๋๋ค.
- Java ์ฝ๋์์ HTML์
out.println()
๋ฐฉ์์ผ๋ก ์์ฑํ๋ ๊ฒ๊ณผ, HTML ์ฝ๋ ์ฌ์ด์ Java ์ฝ๋๋ฅผ ๋ฃ๋ ๊ฒ์ ์ฐจ์ด๊ฐ ํฌ๊ฒ ์ฃ ?
- JSP๋ฅผ ํตํด ์ฝ๋ ๊ฐ๋ ์ฑ์ด ๋์์ง๋๋ค.
- Java ์ฝ๋์์ HTML์
- ํ์
์ ์ฉ์ดํฉ๋๋ค.
- ์ด๋ฅผ ํ๋ก ์ ๋ฆฌํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
ํ์ผ ํ์ ์ค๋ช ๋ฐฉ๋ฒ ์ค์ํ๋ ๊ฒ Servlet .java
์๋ฐ์์ ์์ฑํ๋ HTML ์ฝ๋ out.println()
Login (๋ก์ง) JSP .jsp
HTML์ ๋ฃ๋ ์๋ฐ ์ฝ๋ <% ~ %>
Presentation (๋์์ธ, ํํ)
๊ทธ๋ผ ์ด๋ป๊ฒ JSP๊ฐ ์คํ๋ ์ ์์ฃ ?
๊ทธ ์ด์ ๋ JSP Contatiner์ ์ํด, JSP๊ฐ ์๋ธ๋ฆฟ์ผ๋ก ๋ณํ๋๊ธฐ ๋๋ฌธ์ ๋๋ค.
์์ ํ๋ฆ์ ๋ณด๋ฉด ํน์ ์ ์ ๊ฐ 23log.tistory.com/index
์ผ๋ก ์์ฒญ์ ๋ณด๋๋ค๊ณ ํฉ์๋ค. ๊ทธ๋ฌ๋ฉด JSP ์ปจํ
์ด๋๋ Controller๊ฐ ์ง์ ํ ํ์ผ(index.jsp) ํ์ผ์ ์ฐพ์ ์ฝ๊ฒ๋ฉ๋๋ค.
์ด๋ index.jsp
ํ์ผ ๋ด๋ถ์ ๋ค์ํ if ์กฐ๊ฑด๋ฌธ
์ด๋ ๋ณ์
๋ค์ ์ฌ์ฉํ๋ค๋ฉด? JSP ์ปจํ
์ด๋๋ ์ด๋ฅผ ์ฐ์ ์ ์ผ๋ก ๊ณ์ฐํ๊ฑฐ๋ ํ ๋นํ์ฌ ๋ค์ ํ๋์ ํ์ผ์ ์์ฑํ๊ฒ ๋๊ณ , ์ด๋ฅผ ๋ฐํ์ผ๋ก ์๋ธ๋ฆฟ ํ์ผ์ ์์ฑํฉ๋๋ค.
๋ค! ๋ฐ๋ก java์ฝ๋๋ก ์์ฑ๋ javaํ์ผ์์! ๊ทธ๋ผ ์ด์ ํด๋น java ํ์ผ์ ์ฝ์ ์ ์์ผ๋ฏ๋ก, ์๋ฐ๋ ์ปดํ์ผํ ๋ค ์คํํ๊ฒ ๋ฉ๋๋ค.
์ค์ํ ํฌ์ธํธ๋ JSP๋ก ์์ฑ๋ ํ์ผ์, JSP Container์ ์ํด ์๋ธ๋ฆฟ(.java) ํ์ผ๋ก ๋ณํ๋์ด ์คํ๋๋ค.
๋ ์ ์
๋๋ค!
JSP ์์ฑ์ ๋์์ฃผ๋ ๋ ์๋ค, EL, JSTL์ ๋ํ์ฌ
EL(Expression language)
- Expression language ๋ก JSP 2.0๋ถํฐ ์ถ๊ฐ๋ ๊ฐ๋
- ์๋ฐ ๋น์ ์์ฑ ๊ฐ์ ๋ณด๋ค ์ฝ๊ฒ ๊บผ๋ด ์ธ ์ ์๋ ๋๊ตฌ
์ข ๋ฅ
${ }
: JSP๊ฐ ์คํ๋ ๋ ์ฆ์ ๋ฐ์๋๋ค. (Immediate evaluation)- ๊ฐ์ฒด ํ๋กํผํฐ ๊ฐ์ ๊บผ๋ผ๋ ์ฃผ๋ก ์ฌ์ฉ
#{ }
- ์์คํ ์์ ํ์ํ๋ค๊ณ ํ๋จ๋ ๋ ๊ทธ ๊ฐ์ ์ฌ์ฉํ๋ค. (Deferred evaluation) ์ฌ์ฉ์ ์ ๋ ฅ๊ฐ์ ๊ฐ์ฒด์ ํ๋กํผํฐ์ ๋ด๋ ์ฉ๋๋ก ์ฃผ๋ก ์ฌ์ฉ
${๋ณ์๋ช }
์ผ๋ก ์ ์ธํ์ฌ, ๋ค์ํ ์ฐ์ฐ์(์ฐ์ , ๋น๊ต, empty
)๋ฅผ ์ฌ์ฉ ํ ์ ์๋ ๋๊ตฌ${fn:}
๋ฑ์ ํตํด ํจ์ ์ฌ์ฉ ๊ฐ๋ฅ
- HTML
<span>${prod.brndNm}</span>
: ํ๋ก ํธ๋จ ๋ ธ์ถ ์ฉ๋
- javascript
"${prod.brndNm}"
- JS์์
โโ
์์ ๋ฃ์ด์ ์ฌ์ฉํ๋ค.
์ฌ์ฉ์ ์ด์ ?
- ์๋์ ๊ฒฝ์ฐ ๋ฆฌํ์คํธ์ ์ธ์
์์ ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ค๊ธฐ ์ํด,
<% ์คํฌ๋ฆฝํ๋ฆฟ %>
์์์ ๋ฐ์์ค๋ ์ฒ๋ฆฌ๋ฅผ ์ํํด์ผ ํ๋ค.// ์ต์๋จ์์ ๊ฐ์ ํ ๋นํ๊ณ <% ย ย Student loginMember = (Student) session.getAttribute("student"); ย ย Student student = (Student) request.getAttribute("student"); %> // ํ์ํ ๋ ๊ฐ์ฒด๋ก์ get๋ฉ์๋๋ก ํธ์ถ <input type='text' name='age' value='<%=student.getAge()%>' readonly> // ์คํฌ๋ฆฝํ๋ฆฟ์ ์ด์ฉํ์ฌ ์์ฑํจ <% if(loginMember != null && "admin".equals(loginMember.getStudentNo())) { %> <p><%=student.getStudentNo()%></p> <% } %>
- ์ฆ, EL์ด ์์ผ๋ฉด
<% ์คํฌ๋ฆฝํ๋ฆฟ %>
์ผ๋ก ๊ฐ์ ๊ฐ์ ธ์ค๊ณ , ํ ๋นํ๊ณ ํ๋ ๋ฑ์ ๊ณผ์ ์ด ํ์ํจ
- ์ฆ, EL์ด ์์ผ๋ฉด
- EL์ด ๋์
๋๋ฉด?
- ๊ฐ์ฒด ํ ๋น๊ณผ ๊ฐ์ ๊ณผ์ ์์ด, ๋ฐ๋ก
${student.name}
๋ง ์์ฑํ์ฌ ์ฌ์ฉ์ด ๊ฐ๋ฅํจ
<%%>
๊ฐ์ฒด ํ ๋น ๊ณผ์ ์ด๋,<%= ๋ณ์๋ช %>
๊ณผ ๊ฐ์ ๊ณผ์ ์ ํ๋๋ก ์์ถ ํ ์ ์๋ค.
- ๊ฐ์ฒด ํ ๋น๊ณผ ๊ฐ์ ๊ณผ์ ์์ด, ๋ฐ๋ก
JSTL
- JSTL (Jsp Standard Tag Library)
- JSTL = JSTL + EL์ ์กฐํฉ์ ์๋ฏธํ๋ค.
- HTML๋ด์ ์คํฌ๋ฆฝํ๋ฆฟ์ ํธํ๊ฒ ๋ณํํ์ฌ ์ค๋ค.
<%= value>
โ${value}
<%= if>
โ<c:if>
<%= for>
โ<c:forEach>
- JSTL์ JSPํ์ด์ง ๋ด์์ java์ฝ๋๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋ก์ง์ ๋ด์ฅํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ค.
์ฌ์ฉ์ ์ด์ ?
- ์คํด๋ฆฝํ๋ฆฟ์ผ๋ก ๋ถ๊ธฐ ์ฒ๋ฆฌ๋ฅผ ํ๊ฒ ๋๋ฉด?
<% if(count > 10){ %> <h1>ํ์๊ฐ ์ด๊ณผ๋์์ต๋๋ค.</h1> <% } %>
- ์ด๋ฅผ JSTL๋ก ํํํ๋ฉด?
<c:if test="${count > 10}"> <h1>ํ์๊ฐ ์ด๊ณผ๋์์ต๋๋ค.</h1> </c:if>
์ฌ์ฉ๋ฒ
- core๋ฅผ header์ ์ถ๊ฐํ๋ค.
<% @taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
- ํ์ํ JSP ํ๊ทธ๋ฅผ ์ฌ์ฉํ๋ค.
<c:if test=""></c:if> <c:forEach items=""></c:forEach>
ํ๊ทธ๋ช ์ค๋ช <c:set>
๋ณ์๋ช ์ ๊ฐ์ ํ ๋น <c:out>
๊ฐ์ ์ถ๋ ฅ <c:if>
์กฐ๊ฑด์์ ํด๋นํ๋ ๋ธ๋ญ๊ณผ ์ฌ์ฉ๋ scope์ค์ <c:choose>
๋ค๋ฅธ ์ธ์ด์ switch์ ๋น์ท <c:when>
switch๋ฌธ์ case์ ํด๋น <c:otherwise>
switch๋ฌธ์ default์ ํด๋น <c:forEach>
๋ค๋ฅธ์ธ์ด์ loop๋ฌธ items ์์ฑ์ ๋ฐฐ์ด์ ํ ๋นํ ์ ์์
์ต์ข ์ ๋ฆฌ
์ค๋ช | |
JSP | HTML์์ ์คํฌ๋ฆฝํ๋ฆฟ ์ผ๋ก Java ์ฝ๋๋ฅผ ๋ฃ์ ํ์ผ |
EL | JSP์์ ๊ฐ์ฒด์ ๊ฐ์ ์ฝ๊ฒ ๋ฝ์์ฃผ๋ ๊ธฐ๋ฅ |
JSTL | JSP์์ ์์ฃผ ์ฌ์ฉํ๋ ์คํฌ๋ฆฝํ๋ฆฟ์ ํ๋์ ํ๊ทธ๋ก ๋ฌถ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ |
Servlet | ์๋ฐ๊ฐ ์คํํ ์ ์๋ ์น ์ฝ๋(.java) |