JSTL 활용해보기
먼저 라이브러리를 페이지에 적용?
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
prefix 에 지정한 문자열로 사용이 가능하다
만약 prefix="sssss" 로 했을시
<sssss:xxx> 이런식으로 사용이 가능하지만 c를 사용하는게 기본
<c:forEach var="tmp" begin="0" end="9" step="1">
${tmp}
</c:forEach>
코드 실행시 출력화면
tmp에 begin 인 0부터 end인 9까지 step인 1씩 늘려가며 대입하는 반복문이다
<% %> 를 활용한 JAVA로 작성하면
<% for(int i = 0 ; i < 10 ; i++){ %>
<%= i %>
<%} %>
와 동일하다
forEach에 ArrayList도 사용할수있다
<%
List<String> names = new ArrayList<>();
names.add("김1번");
names.add("김2번");
names.add("김3번");
// request scope에 테스트용 데이터 담기
request.setAttribute("list",list);
%>
<ul>
<c:forEach var="tmp" items = "${list}">
<li>${tmp}</li>
</c:forEach>
</ul>
실행시
테스트를위해 request scope에 임시로 담아놓았다
items에 list 를 넣어서 순서대로 출력도 가능
c:if
<c:if test="${10 % 2 eq 0}">
<p> 10은 짝수입니다 </p>
</c:if>
<c:if test="${10 % 2 eq 1}">
<p> 11은 짝수 입니다 </p>
</c:if>
test 안의 값이 true 일때만 안의 내용이 실행된다? 적용된다?
위에만 true 기 때문에 위쪽 p요소만 출력되고 아래 p요소는 출력이 안된다
c:choose
<%
int score = 85;
request.setAttribute("score",score);
%>
<c:choose>
<c:when test="${score >= 90}"> A </c:when>
<c:when test="${score >= 80}"> B </c:when>
<c:when test="${score >= 70}"> C </c:when>
<c:otherwise> F </c:otherwise>
</c:choose>
test를 만족할경우만 c:when 안의 내용이 실행된다
전부 만족 안할시 c:otherwise 가 실행된다
score >= 80을 만족하는 B가 출력되고 바로 종료됨
(그 뒤에는 실행을안함 method 에서의 return처럼)
c:formatNumber
<p>
파일의 크기는
<fmt:formatNumber value="123456789" pattern="#,###"/>
byte 입니다.
</p>
<p>
<fmt:formatNumber value="2500000" type="currency" currencySymbol="$" ></fmt:formatNumber>
</p>
<p>
<fmt:formatNumber value="2500000" type="currency"></fmt:formatNumber>
</p>
pattern 에 지정한 양식대로 출력 만약 #,##으로 할시 1,23,45,67,89 가 출력됨
c:forTokens
<% request.setAttribute("hobby","baseball/soccer/game"); %>
<c:forTokens items="${hobby }" var="tmp" delims="/">
<li>${ tmp}</li>
</c:forTokens>
delims 인 / 에 맞춰서 나눠서 출력해줌