학원/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) }

 

끝!!!!!!