학원/JSP
11/30 54-7 [JSP] FunctionsOfJSTL
도원결의
2022. 11. 30. 20:54
jstl에서 제공하는 함수들은 반드시 el에서 호출해야 한다.
호출법 : \${접두어:함수명[매개변수들]}
jstl의모든함수는 값을 반환해야 한다.
정적메소드를 만드는거!!! 네
정적메소드는 인자로 받은 값들만으로 함수를 만드는것!
이게바로 순수함수!!
그니까 외부의 변수가 영할을 주지 않는 그럼 함수/메소드 인 것임!!!
공통데이터 준비
<fmt:formatDate var="today" value="<%=new Date() %>" pattern="yyyy년 MM월 dd일" />
<c:set var="todayString">Today는 ${today } 입니다.</c:set>
<c:set var="interString">Politics,Economics,Entertainments,Sports</c:set>
<c:set var="array" value='<%= new String[]{"한라산","성인봉","태백산","덕유산"}%>'></c:set>
<c:set var="collection" value="<%=new HashMap() %>"/>
<c:set target="${collection }" property="user" value="kosmo"/>
<c:set target="${collection }" property="pass" value="1234"/>
이거도 얼른 내용만 적어놓고
과제하러 갈거야... !!!
1. int length(Object)
문자열인경우 문자열의 길이 배열이면 배열크기,컬렉션이면 객체 수를 반환
<li>문자열의 길이:${fn:length(todayString) }</li>
<li>배열의 크기:${fn:length(array) }</li>
<li>컬렉션에 저장된 객체 수(함수사용) :${fn:length(collection) }</li>
<li>컬렉션에 저장된 객체 수(컬렉션의 메소드 사용) :${collection.size() }</li>
<h5>컬렉션에 저장 된 객체 여부 판단(함수사용)</h5>
<c:if test="${fn:length(collection) != 0 }" var="result" >
<c:forEach var="item" items="${collection }">
${item.key } :${item.value }<br/>
</c:forEach>
</c:if>
<c:if test="${!result}">
저장된 객체가 없어요
</c:if>
2.String substring(문자열,시작인덱스,끝인덱스)
문자열에서 시작부터 끝-1까지 추출
인덱스0부터... 인덱스가 -1인경우 시작인덱스부터 문자열 끝까지 추출
${todayString}
<ul class="list-unstyled">
<li>today추출 : ${fn:substring(todayString,0,5) }</li>
<li>날짜 부분부터 끝까지 추출 : ${fn:substring(todayString,7,-1) }</li>
<li>날짜 부분부터 끝까지 추출 : ${fn:substring(todayString,7,fn:length(todayString)) }</li>
</ul>
<h3>String substringAfter(문자열,str): str이후의 문자열 추출</h3>
" today" 이후의 문자열 추출 : :${fn:substringAfter(todayString,"는 ") }
<h3>String substringBefore(문자열,str): str이전의 문자열 추출</h3>
"는" 이전의 문자열 추출 : :${fn:substringBefore(todayString,"는 ") }
3.String repliace
${fn:replace(todayString,"Today","Tomorrow")}
<h4>문제 todayString에서 today는 tomorrow 로 11은 30일은 12월 1로 replace하기</h4>
<!-- 방법1.임시변수 사용 -->
<c:set var="temp" value='${fn:replace(todayString,"Today","Tomorrow")}' />
${fn:replace(temp,"11월 30일","12월 01일") } <br/>
<!-- 방법2.바로 출력 -->
${fn:replace(fn:replace(todayString,"Today","Tomorrow"),"11월 30일","12월 01일")}
어후 너무 많아... 걍 묶자...
<h3>String trim(문자열):양쪽의 공백 제거</h3>
트림 전 : 가${" J S T L" }나<br/>
트림 후 : 가${fn:trim(" J S T L") }나<br/>
<h3>boolean startsWith(문자열,str)</h3>
${fn:startsWith(todayString,"To") }
<h3>boolean endsWith(문자열,str)</h3>
${fn:endsWith(todayString,"다.") }
<h3>String[] split(문자열,delim)</h3>
<c:forEach var="item" items="${fn:split(interString,',') }" >
${item }<br/>
</c:forEach>
<h3>String escapeXml(문자열):태그를 그대로 출력하고자 할 때</h3>
${fn:escapeXml("<h3>함수 라이브러리 사용</h3>") }<br/>
<c:out value="<h3>코어 라이브러리 사용</h3>"/>
<h3>String join(String[],str) : 모든배열 요소를 str로 연결해서 하나의 문자열로 반환</h3>
${fn:join(array,"★") }
<h3>int indexOf(str1,str2)</h3>
${fn:indexOf(todayString,"day") }<br/>
${fn:indexOf(todayString,"Day") }
<h3>boolean contains(str1,str2)</h3>
${fn:contains(todayString,"day") }<br/>
${fn:contains(todayString,"Day") }
<h3>boolean containsIgnoreCase(str1,str2)</h3>
${fn:containsIgnoreCase(todayString,"day") }<br/>
${fn:containsIgnoreCase(todayString,"Day") }
<h3>String toUpperCase(String) 및 String toLowerCase(String)</h3>
${fn:toUpperCase(interString) }<br/>
${fn:toLowerCase(interString) }
끝!!!!!!