봉봉의 개인 블로그

2018-09-18(JSTL의 기본적인 사용 문법) 본문

입사후 공부한내용

2018-09-18(JSTL의 기본적인 사용 문법)

봉봉이네 2018. 9. 18. 11:02

JSTL 기본적인 사용 문법

JSTL 태그 선언

web.xml 에 선언하거나 jsp문서 상단에 라이브러리를 import하여 사용할 수 있으며 보통 아래와 같은 태그라이브러리를 자주 사용한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!-- c 태그 라이브러리 -->
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
 
<!-- fmt 태그 라이브러리 -->
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
 
<!-- sql 태그 라이브러리 -->
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
 
<!-- x 태그 라이브러리 -->
<%@ taglib uri="http://java.sun.com/jsp/jstl/x" prefix="x" %>
 
<!-- fn 태그 라이브러리 -->
<%@ taglib uri="http://java.sun.com/jsp/jstl/fn" prefix="fn" %>
cs

EL의 표기 및 연산자

JSTL 태그 라이브러리는 거의 모든 JSP spec을 커버할 수 있다.
그러나, 간단하게 표현하는 장점을 최대한 살리기 위해서는 표현식으로 EL과 결합하여 사용하여 일정한 표기만 사용하는 추세이다.
EL은 자바 코드가 아니며 스크립트 언어이다.
EL은 JSTL 태그와 결합하면 간단하고 편리한 표기를 사용하여 복잡한 작동이 표현될 수 있다. EL 익스프레션은 달러표시 와 중괄호를 앞에 붙여 사용하여 범위를 정한다.

-연산자-
관계 : <, lt, >, gt,<= , le, >=, ge, ==, eq, !=, ne
산술 : +, -, *, /, div, %, mod
논리 : &&, and, ||, or, !, not
타당성 검사 : empty

연산자를 이용하여 EL을 표기할때는 아래와 같이 쓸수 있다.

1
${item.price * (1 + texRate[user.address.zipcode])}
cs

관계형 연산자 및 논리적 연산자를 사용하는 EL 표기법은 아래와 같다.

1
${(x ge min) && (x le max)}
cs

EL에서의 리터럴은 숫자, 캐릭터 String, 부울, null 등이 존재


EL 표현 단순화

EL은 아래와 같이 사용가능하며
1
2
3
4
5
6
7
8
9
<!-- DB 데이터 표현시 -->
${name}
 
<!-- 객체 값 가져 올때 -->
${user.name}
 
<!-- 만약 저장 객체가 LIST일 경우 -->
${list["0"]}
<!-- 위와 같은 표현도 가능 -->
cs

[]안의 값은 list의 키값 or 프로퍼티명 or 인덱스이고 []의 왼쪽은 map,beans,array,list 타입이 올수 있다.


JSTL의 태그

본격적으로 JSTL의 표기법에 대해서 알아보도록한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<!-- c:out object -->
<!-- :변수의 값을 출력한다. -->
<c:out value="expression" default="expression" [escapeXml="boolean]"/>
escapeXml 애트리뷰트는 선택사항이다
<c:out value="${userId}" default="Q u i c K" />
 
<!-- c:set object -->
<!-- :변수의 값을 저장한다. -->
<c:set var="name" [scope="scope"] value="expression"/>
<c:set var="cnt">1</c:set>
<c:set var="cnt" value="${cnt+1}" />
 
<!-- c:remove object -->
<!-- :범위 변수를 지우는데 사용한다. -->
<c:remove var="timer" scope="session"/>
 
<!-- c:forEach object -->
<!-- :지정된 범위 내에서 반복을 통해 flow를 제어하기 위한 core 태그이다. -->
<c:forEach var="name" items="${expression}" [varStatus="name"]
[begin="expression"] [end="expression"] [step="expression"]>
body content
</c:forEach>
cs

loop의 속성

 속성

 getter

description 

 current

 getCurrent()

 현재 반복 라운드 아이템

 index

 getIndex()

 현재 반복 라운드의 제로 기반 인덱스

 count

 getCount()

 현재 반복 라운드의 1 기반 인덱스

 first

 isFirst()

 현재 라운드가 반복을 통한 첫번째 패스임을 나타내는 플래그

 last

 isLast()

 현재 라운드가 반복을 통한 마지막 패스임을 나타내는 플래그

 begin

 getBegin()

 begin 애트리뷰트의 값

 end

 getEnd()

 end 애트리뷰트의 값

 step

 getStep()

 step 애트리뷰트의 값


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!-- 조건문 -->
<c:if test="expression" [var="name"] [scope="scope"]>
  body content
</c:if>
 
<!-- if else 문 같은 역활 -->
<c:choose>
  <c:when test="expression">
    body content
  </c:when>
  ...
  <c:otherwise>
    body content
  </c:otherwise>
</c:choose>
cs


Comments