심심한 개발자의 취미생활

본 글은 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 이라는 문자열이 있을 때 하이픈 "-"을 기준으로 파싱합니다.