[JSP] JSTL&EL 정리

백준호·2022년 10월 17일
1

1. JSTL&EL이란? (JavaServer Pages Standard Tag Library & Expression Language)

일반적으로 JSP는 <% ~~ %>태그를 통해 java 기능을 구현한다. 그러나 이런 스크립틀릿은 가독성이 떨어질 뿐더러, 오래된 방법이다. 이러한 불편함을 해결하고자 나온것이 JSTL이다. JSTL은 JSP를 단순화 하는 다양한 태그를 제공한다.

EL은 값을 표현하는데 사용되는 스크립트 언어이다. 가령 변수를 표현할 때 <%=HELLO%>와 같은 표현식 대신 ${HELLO}를 쓰는 모양새다. 숫자, 문자열 Boolean 값 및 null 같은 상수 값들도 포함할 수 있으며, 동적으로 값을 받도록 JSTL이나 커스텀 태그의 JSP 액션의 속성에 값을 지정할 때도 사용 가능하다.

JSTL장점

1.빠른 개발 > JSP를 단순화하는 다수의 태그를 제공
2.코드 재사용성 > 다양한 페이지에서 JSTL태그 사용가능
3.스크립틀릿 태그를 사용할 필요가 없음 (스크립틀릿 태그를 사용하지 않음)

사용방법

JSTL 라이브러리는 URL을 통해 간단히 추가 가능하다.

  <% @taglib uri="http://java.sun.com/jstl/core" prefix="c" %>

jstl core 태그

<c:set>	        변수명에 값을 할당
<c:out>	        값 출력
<c:if>      	조건식에 해당하는 블럭과 사용될 scope설정
<c:choose>	    다른 언어의 switch와 비슷
<c:when>	    switch문의 case에 해당
<c:otherwise>	switch문의 default에 해당
<c:forEach>	    다른언어의 loop문 items 속성에 배열을 할당할 수 있음

EL의 내장 객체

${pageScope}	   page Scope에 접근하기 위한 객체
${reqeustScope}	request Scope에 접근하기 위한 객체
${sessionScope}	session Scope에 접근하기 위한 객체
${applicationScope}	application Scope에 접근하기 위한 객체
${param}	파라미터 값을 가져오기 위한 객체
${header}	헤더 값을 가져오기 위한 객체
${cookie}	쿠키 값을 가져오기 위한 객체
${initParam}	JSP 초기 파라미터를 가져오기 위한 객체
${pageContext}	pageContext 객체에 접근하기 위한 객체

변수값은 다음과 같이 선언한다.
연산자를 통한 값표기도 가능하다.

<c:set value="10" var="Su"/>
${Su div 2} == 10/2=5

연산자 구분 연산자

관계	   < lt > gt <= le >= ge == eq != ne
산술	   + - * / div % mod
논리	   && and || or ! not
Empty	 empty

if문 사용시 else를 사용할 수 없다. 또 if를 사용해 표현한다.

<c:set value="사과" var="food"/>
	
	<c:if test="${food== '사과' }">
		<h2>사과를 출력합니다</h2>
	</c:if>

	<c:if test="${food!= '사과' }">
		<h2>사과가 아닙니다</h2>
	</c:if>

choose는 다음과 같다.

<h3>음식: ${param.food }</h3>
		
		<c:choose>
			<c:when test="${param.food=='사과' }">
				<h3 style="color: green;">사과입니다</h3>
			</c:when>
			<c:when test="${param.food=='바나나' }">
				<h3 style="color: green;">바나나입니다</h3>
			</c:when>
			<c:when test="${param.food=='수박' }">
				<h3 style="color: green;">수박입니다</h3>
			</c:when>
		<c:otherwise>
			<h3 style="color: red;">${param.food }음식이 없습니다.</h3>
		</c:otherwise>		
		</c:choose>

list를 출력하는 foreach문

<c:forEach items="${list}" var="s" varStatus="i">
<!-- varStatus :상태변수 -->
		<tr>
			<td>${i.count }</td> <!-- 무조건 1번부터 출력 -->
			<td>${i.index }</td> <!-- 실제 list의 인덱스값 출력 0 1 2 3 4 5 -->
			<td>
				<b>${s}</b>
			</td>			
		</tr>
</c:forEach>

fortoken을 사용한 ,기준으로 분리하기

	<c:forTokens items="${msg }" delims="," var="s" varStatus="i">
		<h3>${i.count }:${s }</h3>
	</c:forTokens>
profile
남들이 다 아는 걸 모를 수는 없지!

0개의 댓글