<%@ page contentType="text/html;charset=utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<html>
<head>
<title>JSTL</title>
</head>
<body>
<c:set var="to" value="10"/>
<c:set var="arr" value="10,20,30,40,50,60,70"/>
<c:forEach var="i" begin="1" end="${to}">
${i}
</c:forEach>
<br>
<c:if test="${not empty arr}">
<c:forEach var="elem" items="${arr}" varStatus="status">
${status.count}. arr[${status.index}]=${elem}<BR>
</c:forEach>
</c:if>
<c:if test="${param.msg != null}">
msg=${param.msg}
msg=<c:out value="${param.msg}"/>
</c:if>
<br>
<c:if test="${param.msg == null}">메시지가 없습니다.<br></c:if>
<c:set var="age" value="${param.age}"/>
<c:choose>
<c:when test="${age >= 19}">성인입니다.</c:when>
<c:when test="${0 <= age && age < 19}">성인이 아닙니다.</c:when>
<c:otherwise>값이 유효하지 않습니다.</c:otherwise>
</c:choose>
<br>
<c:set var="now" value="<%=new java.util.Date() %>"/>
Server time is <fmt:formatDate value="${now}" type="both" pattern="yyyy/MM/dd HH:mm:ss"/>
</body>
</html>
1 2 3 4 5 6 7 8 9 10
1. arr[0]=10
2. arr[1]=20
3. arr[2]=30
4. arr[3]=40
5. arr[4]=50
6. arr[5]=60
7. arr[6]=70
메시지가 없습니다.
값이 유효하지 않습니다.
Server time is 2022/11/02 19:46:32
jstl을 사용하는이유는 EL만 사용했을때, html 부분과 java코드 부분이 구별하기가 쉽지 않다.
java 코드부분에 <% %>을 계속 써야하기 때문이다.
또한, EL은 지역변수를 사용할 수 없다.
따라서, 이러한 불편함을 없애기 위해서 jstl을 사용하기 시작했다.
<c:set var="to" value="10"/> 이러한 c 라이브러리를 사용하기 위해서는 앞에서
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 이러한 태그를 해줘야한다.
<c:set var="to" value="10"/>
- to라는 변수에 10을 저장한다.
<c:set var="arr" value="10,20,30,40,50,60,70"/>
- arr변수에 배열을 저장한다.
<c:forEach var="i" begin="1" end="${to}">
- for문이고, 위에서 to는 10 이었으므로, 1~10까지 for문을 돌린다.
${i}
- 출력되는부분 1~10까지 출력된다.
<c:if test="${not empty arr}">
- 만약 arr배열이 비어있지 않다면
<c:forEach var="elem" items=${arr} varStatus="status">
- arr의 값들을 하나씩 "elem"에 넣는다. status는 count,index를 가지고 있다. count는 1부터 ,index 0부터 시작한다.
${status.count}.arr[${status.index}]=${elem}<BR>
- html에 출력되는 부분
</c:forEach>
- for문 종료
</c:if>
- if문 종료
<c:if test="${param.msg != null}">
- param.msg에 값을 넣고 싶다면 주소창에 msg=abcd 이렇게치면된다.
msg=${param.msg}
- 지금은 msg값을 입력을 안해줬지만, 만약 msg=abcd라고 쳤다면, msg=abcd라고 출력되었을 것이다.
msg=<c:out value="${param.msg}"/>
- msg=${param.msg} 이경우에는 주소창에 만약에 <p>msg=abcd<p>
라고 친다면 p태그가 그대로 해석되어버린다. 하지만 이 경우에는 태그로부터 보호될 수 있다. 위에 표현이랑 출력한다는건 같지만, 태그로부터 보호가 된다는점에서 다르다. 그래서
만약에 <p>msg=abcd<p>
라고 친다면 그대로 msg=<p>abcd<p>
로 출력된다.
<c:choose>
- if else문이다.
<c:when test="${age >= 19}"> 성인입니다. </c:when>
- if(age > 19) 성인입니다.
<c:when test="${0<=age && age<19}"> 성인이아닙니다. </c:when>
- else if(0<=age && age<19) 성인이 아닙니다.
<c:otherwise> 값이 유효하지 않습니다. </c:otherwise>
- else 값이 유효하지 않습니다.
<c:set var="now" value="<%=new java.util.Date() %>">
- now 라는 변수에 현재 시간값 대입
Server time is <fmt:formatDate value="${now}" type="both" pattern="yyyy/MM/dd HH:mm:ss"/>
- server time is 2022/11/02 19:46:32