JSTL과 EL : CORE 라이브러리(if, forEach, forTokens, choose)

<c:if test=”${조건문}”>

  • 기본형태
    1
    2
    3
    4
    //기본형태
    <c:if test="${조건문}">
    실행문장
    </c:if>
  • 파라미터 데이터형태의 차이
    • jstl의 param.변수명 : 있는 그대로의 타입을 가지고온다. 숫자면 숫자, 문자열이면 문자열 -> 사칙연산가능
    • 반면 js의 request.getParameter(“변수명”)는 무조건 문자열이다. -> 사칙연산불가




순서

  1. core 라이브러리연결

    1
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  2. 변수값을 출력하고싶으면 EL태그사용

    • 그냥 i찍으면 변수명이 출력됨.
    • 변수값을 출력하고싶으면 EL태그사용
      1
      2
      3
      4
      5
      6
      7
      8
      9
      //기본값
      <c:out value="${변수명}" />

      //예시
      <c:out value="i" />
      <c:out value="${i}" />
      //출력값
      i
      변수명
  3. if else는 없다 if만 있음

    1
    2
    3
    4
    //기본형태
    <c:if test="${i=='itwill' }">
    아이티윌 입니다.
    </c:if>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<!-- 1.core 라이브러리연결 -->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 2.jstl을 사용해서 변수 생성 -->
<c:set var="i" value="itwill"/>

<!-- 3. 변수출력 : 그냥 i찍으면 변수명이 출력됨. 변수값을 출력하고싶으면 EL태그사용-->
<c:out value="i" />
<c:out value="${i}" />

<hr>

<!-- 4. if조건문 -->
<c:if test="${i=='itwill' }">
아이티윌 입니다.
</c:if>


<hr>
<!-- 5. form 태그 사용해서 숫자 2개를 입력 -> if.jsp페이지에 전달
5-1. 전달된 2개의 숫자중에서 더큰수를 구분해서 출력
-->

<fieldset>
<legend>큰수 찾기</legend>
<form action="if.jsp">
숫자 1 : <input type="text" name="num1"><br>
숫자 2 : <input type="text" name="num2"><br>
<input type="submit" value="큰수 찾기">
</form>
</fieldset>

<!-- param.num1은 있는 그대로의 타입을 가지고온다. 숫자면 숫자, 문자열이면 문자열 -> 연산가능
반면 js의 request.getParameter("num1")는 무조건 문자열이다
-->

<c:if test="${ (param.num1) > (param.num2) }">
큰값 : ${ param.num1 }
</c:if>
<c:if test="${ param.num2 > param.num1 }">
큰값 : ${ param.num2 }
</c:if>

<!-- 5-2. num1이 null이 아니면서 num1과 num2가 같은 경우 동일한 값을 출력 (p517 el연산자 -->
<%-- <c:if test="${ (param.num1 == param.num2) && (param.num1 != null)}"> --%>
<c:if test="${ (param.num1 == param.num2) and (param.num1 ne null)}">
동일한 값
</c:if>




<c:forEach begin=”” end=”” step=”” var=””>와 <c:forTokens items=”” delims=”” var=””>

  • 자주 사용함.
  • 필수 속성: items=”” delims=”” var=””
  • jsp표현식은 사용할 수 없다 WHY? jstl실행전에 java가 먼저 실행되는데 jstl의 변수가 먼저 생성되지 않았기때문에 java는 변수를 몰라서 에러가 남.
1
2
3
4
5
6
//기본값
<c:forTokens items="문자데이터객체" delims="구분자" begin="시작값" end="끝값" step="단계"
var="결과값을 저장할 변수" varStatus="상태">

</c:forTokens>
- 이 많은 속성 중 필수 속성은 items="" delims="" var=""이다.
  • 사용법
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<%
for(int i=0;i<5;i++){
out.print(i+"안녕하세요<br>");
}
%>
<hr>
<!--1. JSTL 사용해서 반복문 처리 -->
<c:forEach begin="1" end="5" step="2" var="i">
<h2> ${i } JSTL : 안녕하세요 </h2>
</c:forEach>
<hr>

<!--2. 1~10 까지 수 중에서 홀수 -->
<c:forEach begin="1" end="10" step="2" var="odd">
홀수 : ${odd }<br>
</c:forEach>
<hr>

<!--3. 1~10 까지 수 중에서 짝수-->
<c:forEach begin="1" end="10" step="2" var="even">
짝수 : ${even }<br>
</c:forEach>

<hr>
<!--4. 1~5까지의 숫자 출력 -->
<c:forEach begin="1" end="5" step="1" var="num">
숫자: ${num }<br>
</c:forEach>
<!-- 4-1.jsp표현식 사용가능할까? YES가능함 ->이것보다 forTokens를 더 많이 사용함-->
<c:forEach begin="1" end="<%=5 %>" step="1" var="num">
숫자: ${num }<br>
</c:forEach>
<!-- 4-2.c:forTokens = for반복문 + StringTokenizer클래스
-->
<c:forTokens items="a.s.df.as.qwesd.fg.qwe3q" delims="." var="result">
결과 : ${result}<br>
</c:forTokens>

<hr>
<c:forTokens items="안녕하세요 JSTL 문법입니다." delims=" " var="result2">
결과2 : ${result2}<br>
</c:forTokens>




<c:choose><c:when test=”${조건식}”><c:otherwise>

  • choose태그를 사용하여 switch case구문을 나타낼수있다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<c:set var="num1" value="0" />
<c:set var="num2" value="20" />

<!-- 변수의 값이 양수일때, 음수일때, 둘다 아닐때sms 0으로 데이터 처리 -->
<c:choose>
<c:when test="${num1 > 0}">
양수<br>
</c:when>
<c:when test="${num1 < 0}">
음수<br>
</c:when>
<c:otherwise>
0<br>
</c:otherwise>
</c:choose>

Comments