예제1) JSTL 기본 출력/변수 지정 <c:out>, <c:set>
<!-- JSTL 커스텀태그 'c' 사용을 위한 구문 -->
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<h3>일반적인 출력</h3>
<c:out value="hello" /> <br>
<h3> EL 변수지정 출력 </h3>
<c:set var="data1" value="JSTL TEST" />
<c:set var="data2">
value 속성 대신 해서 태그 사이에 변수에 입력할 값을 넣을 수 있음.
</c:set>
data1 : <c:out value="${data1}"/> <br>
data1 : ${data1}<br>
data2 : ${data2}<br>
<h3> 자바변수+ EL 변수지정 출력 </h3>
<%
String data3 = "자바 변수의 데이터";
%>
data3 : <%=data3%> <br>
<c:set var="data4" value="<%=data3%>"/>
data4 : ${data4} <br>
예제2) if문 <c:if>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!--
<c:if test="조건식, true or false">
종속문장
</c:if>
-->
<c:set var="data1" value="자바 변수의 데이터"/>
<c:if test="${data1 eq '자바 변수의 데이터' }">
<h3>참이므로 출력</h3>
</c:if>
예제3-1) 반복문 <c:forEach>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%
String data[] = {"김변수", "이상수", "박객체"};
%>
<c:set var="names" value="<%=data %>"/>
이름 목록 : ${names[0]}, ${names[1]}, ${names[2]}
<br>
이름 목록 :
<c:forEach var="i" begin="0" end="2" step="1">
${names[i]},
</c:forEach>
<br>
이름 목록 :
<c:forEach var="name" items="${names}">
${name},
</c:forEach>
예제3-2) 반복문 <c:forEach>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%
// 범위 두곳에 같은 변수명으로 지정된 경우 작은 범위 변수가 출력된다.
// 범위 크기순 : page < request < session < application
pageContext.setAttribute("names", new String[]{"김씨", "박씨", "최씨"});
request.setAttribute("names", new String[]{"김변수", "이상수", "박객체"});
%>
이름 목록 : ${names[0]}, ${names[1]}, ${names[2]}
<br>
이름 목록 :
<c:forEach var="i" begin="0" end="2" step="1">
${names[i]},
</c:forEach>
<br>
이름 목록 :
<c:forEach var="name" items="${names}">
${name},
</c:forEach>
예제4) case문 <c:choose>, <c:when>, <c:otherwise>
*기존 JAVA에서는 if문에서는 return을 사용할 수 있었지만 jstl을 사용하면 return을 사용할 수 없어 각 경우의 수에마다 줬던 if, else if구문을 <c:choose>를 이용 해야한다.
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:set var="name" value="이상수"/>
<c:choose>
<c:when test="${name == '김변수' }">
<h3>이름은 김변수입니다.</h3>
</c:when>
<c:when test="${name == '이상수' }">
<h3>이름은 이상수입니다.</h3>
</c:when>
<c:otherwise>
<h3>이름은 홍길동입니다.</h3>
</c:otherwise>
</c:choose>
예제5) JSTL 인코딩 방법 <fmt:requestEncoding value="utf-8">, form으로 파라미터 값 넘겨받아 EL태그로 출력하기
*기존 자바 인코딩코드 : <% request.setCharacterEncoding("utf-8"); %>
(ex7.jsp)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<form action="ex7_result.jsp" method="post"><br>
<input type="text" name="id" placeholder="아이디" /><br>
<input type="password" name="pw" placeholder="비밀번호" /><br>
<input type="password" name="confirmPw" placeholder="비밀번호 확인" /><br>
<input type="text" name="name" placeholder="이름" /><br>
<input type="text" name="email" placeholder="이메일" /><br>
<input type="submit" value="회원 가입" /><br>
<input type="reset" value="취소" />
</form>
(ex7.result.jsp)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!-- 인코딩을 위한 fmt태그 -->
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<fmt:requestEncoding value="utf-8"/>
아이디 : ${param.id} <BR>
비밀번호 : ${param.pw} <br>
비밀번호 확인 : ${param.confirmPw} <br>
이름 : ${param.name} <br>
이메일 : ${param.email} <br>
예제6) 해당 서버에 맞는 root(최상위 경로) 출력 <c:url>
*해당 코드로 경로지정을 해두면 나중에 경로가 바뀌었을 때 일일이 수정하지 않아도 되어 편리하다.
(해당 코드의 최상위 경로 파일명은 'jspExam'이다.)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!-- 해당 서버에 맞는 root가 출력됨 -->
<c:url var="root" value="/"></c:url>
web context root : ${root}
<br>
<c:url var="jstl" value="/jstl"></c:url>
jstl path : ${jstl}