본시모니 2023. 1. 27. 22:49

<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이면 항목의 수를 리턴