1. JSTL에서 제어문 사용하기
1) JSP 방식
JSTL에서도 제어문(if문, for문 등)을 사용할 수 있다.
우선 기존의 JSP 파일에서의 방식을 살펴보자.
<%
String name = request.getParameter("name");
int age = Integer.parseInt(request.getParameter("age"));
out.print("이름 : " + name + "<br>");
out.print("나이 : " + age + "<br>");
//문1)나이가 10미만 "어린이", 20미만 "청소년", 나머지 "성인" 출력
if(age<10){
out.print("어린이입니다<br>");
} else if(age<20){
out.print("청소년입니다<br>");
} else {
out.print("성인입니다<br>");
} // if end
//문2)1~나이까지 짝수는 파랑색, 홀수는 빨강색으로 출력
for(int i=1; i<=age; i++){
if(i%2==0){
out.print("<span style='color:blue;'>"+i+"</span>");
} else {
out.print("<span style='color:red;'>"+i+"</span>");
}
} // if end
%>
위처럼 스크립트릿을 사용하여 for문과 if문을 사용했다.
다음은 JSTL의 태그를 사용한 방식이다.
2) JSTL 방식
JSTL 방식을 사용하기 위해 우선 해야할 것!!
지시자로 태그 라이브러리 호출하기!
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
그리고 받아온 값들을 변수에 넣어준 뒤 변수를 활용하려 한다.
<c:set var="name" value="${param.name}"/>
<c:set var="age" value="${param.age}"/>
이름 : ${name} / <c:out value="${name}"/><br>
나이 : ${age} / <c:out value="${age}"/><br>
1) 조건문
<c:if test="${name=='itwill'}">대한민국</c:if>
2) 다중 조건문
<c:choose>
<c:when test="${age<10}">어린이</c:when>
<c:when test="${age<20}">청소년</c:when>
<c:otherwise>성인</c:otherwise>
</c:choose>
3) 반복문
<c:forEach var="a" begin="1" end="${age}" step="2">
<c:out value="#"></c:out>
</c:forEach>
4) 반복문 + 조건문
<c:forEach var="a" begin="1" end="${age}" step="1">
<c:choose>
<c:when test="${a%2==0}">
<span style="color: blue;">${a}</span>
</c:when>
<c:otherwise>
<span style="color: red;">${a}</span>
</c:otherwise>
</c:choose>
</c:forEach>
2. JSTL에서 함수(메서드) 호출해서 사용하기
이번에는 JSTL을 사용하여 메서드를 호출해 사용해보자.
이번에 연결해야할 태그 라이브러리의 주소는 아래와 같다.
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
JSTL에서 사용되는 함수는 아래와 같다.
fn:contains(string, sbustring)
string이 substring을 포함하면 return true 반환
fn:containsIgnoreCase(string, sbustring)
대소문자 관계없이 string이 substring을 포함하면 return true 반환
fn:startsWith(string, prefix)
string이 prefix로 시작하면 return True
fn:endsWith(string, suffix)
string이 suffix로 끝나면 return True
fn:escapeXml(string)
stting에 XML과 HTML에서 < >& ' " 문자들이 있으면, XML엔티티 코드로 바꿔준뒤 문자열 반환
fn:indexOf(string, sbustring)
string에서 substring이 처음으로 나타나는 인덱스 반환
fn:split(string, separator)
string내의 문자열 separetor에 따라 나누어서 배열로 구성해서 반환
fn:join(array, separator)
array요소들을 separator를 구분자로 하여 연결해서 반환
fn:length(item)
item이 배열이나 컬렉션이면 요소의 개수를 문자열이면 문자의 개수를 반환
<c:set var="txt" value=" White Space "></c:set>
글자개수 : ${fn:length(txt)}
fn:replace(string, before, after)
string내에 있는 before 문자열을 after 문자열로 모두 변경해서 반환
<%
// 엔터를 <br>로 바꾸기
// 1) JSP
String content = "";
content = content.replace("\n", "<br>");
// 2) EL+JSP
pageContext.setAttribute("cn", "\n");
%>
<c:set var="content" value="Hi
My name is
Waldo"/>
${content} // 엔터 없이 출력
<hr>
${fn:replace(content,cn,"<br>")} // 줄 바꿈이 적용되어 출력
<hr>
fn:substring(string, begin, end)
string에서 begin인덱스에서 시작해서 end인덱스에 끝나는 부분의 문자열 반환
<c:set var="str" value="Hi My name is waldo"/>
문자열 자르기 : ${fn:substring(str, 3, 9)}<!-- My nam -->
fn:substringAfter(string, sbustring)
string에서 substring이 나타나는 이후의 문자열 반환
fn:substringBefore(string, sbustring)
string에서 substring이 나타나는 이전의 문자열 반환
fn:toLowerCase(string)
string을 모두 소문자로 변경 후 리턴
fn:toUpperCase(string)
string을 모두 대문자로 변경 후 리턴
<c:set var="str" value="Hi My name is waldo"/>
소문자로 바꾸기 : ${fn:toLowerCase(str)}<br>
대문자로 바꾸기 : ${fn:toUpperCase(str)}
fn:trim(string)
string앞뒤의 공백을 모두 제거한 후 반환
공백제거 : @<c:out value="${fn:trim(txt)}"></c:out>@
'⁂ JSP > : 기본 익히기' 카테고리의 다른 글
[JSP] #12-2 Sevlet의 생명주기(LifeCycle) (0) | 2022.10.27 |
---|---|
[JSP] #12-1 HttpServlet 파헤치기! (0) | 2022.10.27 |
[JSP] #11-4 JSTL(JSP Standard Tag Library, JSP전용태그) (0) | 2022.10.26 |
[JSP] #11-3 EL(Expression Language) - 내장 객체 (0) | 2022.10.26 |
[JSP] #11-3 EL(Expression Language) - 기본 문법 (0) | 2022.10.26 |