JSTL
<JSTL>
Jsp Standard Tag Library
- jsp 표준 태그 라이브러리
- 태그 라이브러리는 JSP 특징인 화면(View), 프로그램(Logic) 분리와 더불어
동적 컨텐츠의 효율적인 관리를 위한 기능으로,
JSP 파일 내에 복잡한 프로그램 로직을 기술하지 않기 위해 고안된 방법이다.
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/code" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
1. 변수생성 및 사용
<c:set var="a" value="테스트"/>
<c:set var="b" value="10"/>
<c:set var="c" value="20"/>
${a} <br> ${b} <br> ${b+c} <br>
<c:set var="d" value="${b*c}"/>
${d} <br>
2. 문자열 관련 함수
<c:set var="str1" value="abcd"/>
${fn:endsWith(str1,"bd")} //false
<c:set var="text" value="blank space"/>
${fn:length(text)} //문자길이(공백포함) 출력
<c:set var="text" value="${fn:length(text)}"/>
${fn:length(text)}
3. 숫자함수 관련
(ceil, floor, round) -> 함수는 없음, 만들어 사용
<c:set var="foo" value="3.3"/>
(자바) -> JSTL
Math.floor(foo) -> ${foo - (foo%1)}
Math.ceil(foo) -> ${foo + (1 - (foo%1)) % 1}
Math.round(fool) -> ${foo + 0.5 - ((foo+0.5) % 1)}
<c:set var="pi" value="3.14"/>
<c:set var="value1" value="${pi + (1-(pi%1)) % 1}"/>
${vlaue1} <br>
${fn:replace(foo,'.3','')}
4. 제어문
(1) if문
<c:set var="msg" value="dinfree" />
<c:if var="result" test="${msg=='dinfree'}>
test result = ${result} <br>
</c:if>
<c:if test="${msg=='dinfree'}">
같음
</c:if>
<c:if test="${msg!='dinfree'}">
같지 않음
</c:if>
(2) choose when 태그
<c:choose>
<c:when test="${msg=='abc'}">
msg의 값은 abc입니다.
</c:when>
<c:when test="${msg=='dinfree'}">
msg의 값은 dinfree입니다.
</c:when>
<c:otherwise>
msg의 값은 모릅니다.
</c:otherwise>
</c:choose>
(3) forEach
<c:forEach var="i" begin="1" end="10">
${i}
</c:forEach>
<br>
<c:forEach var="i" begin="i" end="10" step="2">
${i}
</c:forEach>
<%@ page import="java.util.HashMap" %>
<%
HashMap<String,Object> mapData = new HashMap<String,Object>();
mapData.put("title", "java교육");
mapData.put("name", "홍길동");
%>
<c:set var="map" value="<%=mapData%>"/>
<c:forEach var="i" items="${map}">
${i.key} = ${i.value} <br>
</c:forEach>
<c:forEach var="result" items="${resultList}" varStatus="status">
<tr>
<td><c:out value="${status.count}"</td>
<td>
<a href = "javascript:fn_egov_select('<c:out value = "${result.empno}"/>')">
<c:out value ="${result.ename}"/></a>
</td>
<td><c:out value="${result.sal}"/></td>
<td><c:out value="${result.hiredate}"/></td>
</tr>
</c:forEach>
[varStatus => 상태용 변수]
${status.current} : 현재 Map 내용
${status.index} : 0부터의 순서
${status.count} : 1부터의 순서
${status.first} : 첫번째인지 여부
${status.last} : 마지막인지 여부
[문자함수들]
1) substring(str, index1, index2) : str의 index1부터 index2까지의 문자열 리턴
2) substringAfter(str1, str2) : str1에서 str2를 찾아서 그 후의 부분문자열 리턴
3) substringBefore(str1, str2) : str1에서 str2를 찾아서 그 전의 부분문자열 리턴
4) toUpperCase(str) : 모든 소문자를 대문자로 치환한 값을 리턴
5) toLowerVase(str) : 모든 대문자를 소문자로 치환한 값을 리턴
6) trim(str) : 문자열에서 앞뒤 공백 문자를 제거한 결과를 리턴
7) replace(str, src, dest) : str 문자열에 포함된 src를 dest로 치환한 결과를 리턴
8) indexOf(str1, str2) : str1에 포함된 str2의 시작 인덱스를 리턴
9) startsWith(str1, str2) : str1이 str2로 시작하면 true, 그렇지 않으면 false 리턴
10) endsWith(str1, str2) : str1이 str2로 끝나면 true, 그렇지 않으면 false 리턴
11) contains(str1, str2) : str1이 str2를 포함하면 true, 그렇지 않으면 false를 리턴
12) containsIgnoreCase(str1, str2) : str1이 str2를 포함하면 true, 그렇지 않으면 false를 리턴,
contains 함수와는 달리 대소 문자 구별하지 않고 비교함
13) split(str1, str2) : str1을 str2를 기준으로 분리해서 만든 문자열들의 배열을 리턴
14) join(str1, str2) : arr 배열의 모든 항목을 합쳐서 리턴, 항목사이에는 str2가 들어옴
15) escapeXml(str) : HTML 문법에 의한 특수문자로 취급되는 모든 문자를 이스케이프 시퀀스로 치환하여 결과를 리턴
16) length(obj) : obj가 문자열이면 문자열의 길이, List나 Collection이면 항목의 수를 리턴