본 글은 victolee님의 포스팅을 보고 따라 학습하며 내용을 정리한 포스팅 입니다.
JSTL / EL
EL (Expression Language)
- EL은 JSP의 출력 문법을 대체하는 표현입니다.
<%= i %>
- JSP에서의 값 표기법이며, i는 변수 입니다.
${ i}
- EL에서의 값 표기법이며, i는 이름 입니다.
- 객체 Scope에서 애트리부트의 이름이 같을 경우, Scope가 작은 법위에서 큰 범위로 해당 이름이 존재하는지 찾습니다.
- EL 표기법에서 파라미터 값은 param 키워드를 통해 가져올 수 있습니다. 또한, JSP 값 표기법에서 파라미터는 문자열이지만, EL에서 숫자는 수자로, 문자열은 문자열로 인식합니다.
EL 표기법에서 자주 사용될 수 있는 내장 객체들
내장 객체 | 설명 | |
---|---|---|
1 | pageScope | pageScope에 접근하기 위한 객체 |
2 | requestScope | requestScope에 접근하기 위한 객체 |
3 | sessionScope | sessionScope에 접근하기 위한 객체 |
4 | applicationScope | application Scope에 접근하기 위한 객체 |
5 | param | 파라미터 값을 가져오기 위한 객체 |
6 | header | 헤더 값을 가져오기 위한 객체 |
7 | cookie | 쿠키 값을 가져오기 위한 객체 |
8 | initParam | JSP 초기 파라미터를 가져오기 위한 객체 |
9 | pageContext | pageContext 객체에 접근하기 위한 객체 |
JSTL (JavaServer Pages Standard Tag Library)
- JSTL은 태그를 통해 JSP 코드를 관리하는 라이브러리로서, JSP의 가독성이 좋아집니다.
- 라이브러리이기 때문에 JSTL을 사용하려면, 라이브러리를 다운로드 해서 추가해야 합니다. (http://tomcat.apache.org/taglibs/standard/)
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
set
<c:set var="변수명" value="값" [scope="영역"] />
<c:set var="count" value="${ fn:length(list)}" />
- 변수생성
- var: EL변수의 이름
- value: 실제 값을 지정
- scope: 변수를 저장할 영역
if
<c:if test="true">
contents
</c:if>
- if는 조건이 한 개인 경우만 사용이 가능하다.
- if-else 사용은 불가하며, choose 태그로 대체한다.
choose
<c:choose>
<c:when test="조건1">
contents
</c:when>
<c:when test="조건2">
contents
</c:when>
<c:when test="조건3">
contents
</c:when>
<c:otherwise>
contents
</c:otherwise>
</c:choose>
foreach
<c:forEach
var="변수"
items="아이템"
begin="시작값"
end="끝값"
step="증가값"
varStatus="변수면">
</c:forEach>
<!-- // -->
<c:forEach
items="${ list}"
var="vo"
varStatus="status">
<div>${ vo.no} / [${ status.index}]</div>
<!-- JSTL에서는 \n을 사용할 수 없어서 page context에 다른 변수로 추가 해줘야 함 -->
<div>${ fn:replace(vo.content, newLine, "<br>")}</div>
</c:forEach>
import
<!-- jsp -->
<jsp:include page="/WEB-INF/views/includes/header.jsp">
<!-- JSTL -->
<c:import url="/WEB-INF/views/includes/header.jsp">
<!-- import 할 때 파라미터를 넘겨줄 수 있다. -->
<c:import url="/WEB-INF/views/includes/navigation.jsp">
<c:param name="menu" value="main" />
</c:import>
날짜 format
<fmt:parseDate value='${ vo.regDate}' var='regDate' pattern="yyyy-MM-dd H:m">
<fmt:formatDate value='${ regDate}' pattern='MM월 dd일 H:m' />
split
<c:set var="phone" value="${ fn:split(vo.phone, '-')}" />
- 010-0000-0000 이라는 문자열이 있을 때 하이픈 "-"을 기준으로 파싱합니다.