JSTL + EL

JH.·2022년 1월 18일

JSTL( JSP Standard Tag Library )

  • JSP 태그를 라이브러리 형태로 공통으로 사용하도록 모아 놓은 것

JSTL 설정
pom.xml에 dependency 추가

<dependency>
	<groupId>javax.servlet</groupId>
	<artifactId>jstl</artifactId>
	<version>1.2</version>
</dependency>

JSTL은 기본적으로 1.2파일이 라이브러리로 있다. 태그들은 종류가 많은데
core, functions, sql, xml, fmt다섯 종류가 있고,
일반적으로 core를 가장 많이쓴다 그리고 이후에 접두사를 붙혀줘야한다.

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

JSTL을 쓰게되면 장점은 코드의 가독성이 좋아지고 번거롭게 스크립틀릿이나 표현식을
쓰지 않아도 된다.

EL (Expression Language)

EL (Expression Language) 이란

  • EL : 데이터를 표현하기 위한 언어

문법 : ${식}한방이면 오케이입니다 !
'식' 안에는 어떤것들이 들어가는가 ?
var(변수), 연산자
일반 JSP의 조건문이나 반복문

<%for(int i = 1 ; i < 5; i++){
	if(i%2==0){%>
	<font size ="<%=i %>">야호~</font><br>
<% }
}%>

JSTL, EL 의 조건문 반복문

<c:forEach var="i" begin="1" end="5" step="1">
	<c:if test="${i%2==0}">
		<font size="${i}">야호</font><br>
	</c:if>
</c:forEach>
//참고로 else문은 없다

뭐 비슷하다. 둘 다 동일한 결과를 낸다. c: 이렇게 접두사를 붙혀줘서 사용해야하고
참고로 c: ctrl + enter를 쳐보면 core에 있는 태그요소들이 다 나온다.
근데 크게 가독성이 좋아지는지는 잘 모르겠다.
그래도 반복문은 코딩을 모르는사람이 봐도 설명해주면 이해 가능할듯 ?

변수 선언

<c:set var="a" value="10" />

var이기 때문에 정해진 타입은 없다. 문자열이라 생각하면됨.

switch/case문은

<c:choose >
	<c:when test="${a%2==0 }">
		짝수입니다
	</c:when>
	<c:when test="${a%2!=0 }">
		홀수입니다
	</c:when>
	<c:otherwise>
		
	</c:otherwise>

이렇게 표현 가능하다.

게시판 리스트 불러오기

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
이렇게 선언만 해주면 core에 있는 태그들 사용 가능하다.(core를 가장 많이 씀)

원래 jsp라면
List vo = (List)request.getAttribute("list", list);

이렇게 선언해주어야 request객체를 가져올 수 있지만 JSTL은 그렇지않다
이유는 ${식} 자체가 getAttribute이기 때문에 업캐스팅을 해줄 필요가 없다.
게시판 목록을 불러오는 코드

<c:forEach var="vo" items="${list}">
	<tr>
		<td>${vo.idx}</td>
		<td><a href="/myapp/boardContent.do?idx=${vo.idx}">${vo.title}</a></td>
		<td>${vo.writer}</td>
		<td>${vo.indate}</td>
		<td>${vo.count}</td>
	</tr>
</c:forEach>

이렇게 간단하게 가능하다 . <%=vo.getIdx()%> 이렇게 하지 않아도 된다.

0개의 댓글