JSP의 출력 문법을 대체하는 표현 언어.
EL을 사용하려면 JSP 파일 최상단에 isELIgnored ="false"를 추가해야 한다.
${}
#{}

JSP 출력 vs EL 출력
<!--JSP출력-->
<%=request.getParameter("a")%>
<!--EL출력-->
${param.a}
라이브러리이기 때문에 다운로드 하여 추가해야한다.
https://tomcat.apache.org/taglibs/standard/
다운받은 후 lib에 있는 jstl.jar, standard.jar을 프로젝트안의 WEB-INF안의 lib에 넣는다.
<!-- core태그 import -->
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!-- formatting태그 import -->
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<!-- functions태그 import -->
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>

사용법
<!-- <c:set> -->
<c:set var="변수명" value="변수값" [scope="scope속성"]/>
<!-- <c:remove> -->
<c:remove var="변수명"/>
<!-- <c:if> -->
<c:if test="${조건식}" var"변수명" [scope="scope속성"]/>
<!-- <c:choose> -->
<c:choose>
<c:when test="조건식1">본문내용1</c:when>
<c:when test="조건식2">본문내용2</c:when>
<c:otherwise>본문내용</c:otherwise>
</c:choose>
<!-- <c:forEach> -->
<c:forEach var="변수명" items="반복할 객체 이름" begin="시작값" end"마지막 값" step="증가값" varStatus="반복상태변수이름">
</c:forEach>
<!-- <c:forTokens> -->
<c:forTokens var="변수명" items="반복할 객체 이름" delims="구분자">
${변수명}
</c:forTokens>
<!-- <c:url> -->
<c:url var="변수명" value="URL경로" [scope="scope 속성"]>
<c:param name="매개변수명" value="전달값"/>
</c:url>
<!-- <c:url>의 변수명을 넣으면 작동함 -->
<a href = '${변수명}'></a>
<!-- <c:redirect> -->
<c:redirect url="redirect할 URL">
<c:param name="매개변수명" value="전달값"/>
</c:redirect>
<!-- <c:out> -->
<!-- escapeXml true시에는 이스케이프 문자 적용됨 -->
<c:out value="출력값" default="기본값" [escapeXml="boolean값"]/>
유용한 사용법
<!--길이 줄이기-->
<c:set var="contextPath" value="${pageContext.request.contextPath}"/>