JSTL(참고하기 위해서)

정태규·2022년 11월 2일
1

jstl

<%@ 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

0개의 댓글