JSTL Core 2015 Web Service Computing
EL Expression Language 식(Expression)을 중심으로 코드를 기술하는 언어 연산자와 피연산자의 조합을 ${내용}로 표현 jsp el <%=cnt + 1%> <%=user.getName()%> ${cnt + 1} ${user.name}
JSTL JSP Standard Tag Library JSP에서 자주 사용하는 기능(반복과 조건, 데이타 관리 포맷, XML 조작, 데이타베이스 액세스)을 구현하는 커스텀 태그 라이브러리 모음 시간, 날짜, 숫자의 포맷이나 문자열 가공등의 처리에서 비즈니스로직과 프리젠테이션 로직을 분리할 수 있게 해준다. JSTL은 EL(Expression Language)를 사용하여 표현한다.
JSTL JSTL Library 라이브러리 기능 URL 식별자 접두어 Core 일반 프로그램 언어에서 제공하는 변수선언, 조건/제어/반복문등의 기능을 제공 http://java.sun.com/jsp/jstl/core c Format 숫자,날짜,시간을 포맷팅 하는 기능과 국제화, 다국어 지원 기능을 제공 http://java.sun.com/jsp/jstl/fmt fmt Function 문자열을 처리하는 함수를 제공 http://java.sun.com/jsp/jstl/functions fn Sql 데이터베이스의 데이터를 입력/수정/삭제/조회하는 기능을 제공 http://java.sun.com/jsp/jstl/sql sql Xml XML 문서를 처리할 때 필요한 기능을 제공 http://java.sun.com/jsp/jstl/xml xml
설정 pom.xml jsp 파일 상단 <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> jsp 파일 상단 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<c:set> <c:set>은 변수를 선언한다. jsp jstl + el <% int a = 3; String b = "Hello"; %> <%=a%>, <%=b%> <c:set var="a" value="3"/> <c:set var="b" value="Hello"/> ${a}, ${b} <c:set var="a" value="${a+3} "/> <c:set var="b" value="${b}, World"/>
<c:if> <c:if>는 조건문으로 java의 if문과 같지만 else가 없다. ${} 안에는 조건 연산이 들어간다. jsp jstl <% int a = 3; if(a > 1) { %> a가 1보다 큽니다. <%} else { a가 1보다 작습니다. } <c:set var="a" value="3"/> <c:if test="${a > 1}"> a가 1보다 큽니다. </c:if> <c:if test="${a < 1}"> a가 1보다 작습니다.
Expression Language – 추가 연산자 기존 연산자 설명 and && 생략 or || not ! div / mod % eq == lt < gt > le <= ge >= empty 데이터의 존재 여부를 확인하는 단항연산자
empty 연산자 HomeController.java @RequestMapping("/jstlTest") public String emptyTest(Model model) { String a = null; String b = ""; String c = "hello"; List<String> d = new ArrayList<String>(); List<String> e = new ArrayList<String>(); e.add(a); e.add(b); model.addAttribute("a", a); model.addAttribute("b", b); model.addAttribute("c", c); model.addAttribute("d", d); model.addAttribute("e", e); return "jstlTest"; }
empty 연산자 jstlTest.jsp <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <html> <head> <title></title> </head> <body> <c:if test="${empty a}">a</c:if> <c:if test="${empty b}">b</c:if> <c:if test="${empty c}">c</c:if> <c:if test="${empty d}">d</c:if> <c:if test="${empty e}">e</c:if> </body> </html>
<c:choose> <c:choose>또한 조건문으로 else가 존재한다. <c:choose>, <c:when>, <c:otherwise> <c:when>을 통해 여러 조건을 추가할 수 있다. jsp jstl <% int a = 3; if(a > 1) { %> a가 1보다 큽니다. <%} else { a가 1보다 작습니다. } <c:set var="a" value="3"/> <c:choose> <c:when test="${a > 1}"> a가 1보다 큽니다. </c:when> <c:otherwise> a가 1보다 작습니다. </c:otherwise> </c:choose>
<c:forEach> <c:forEach>는 반복문으로 for와 같다. step은 증감문으로 기본적으로 1이며, 생략 가능하다. end값의 설정에 유의 jsp <% for(int i=0; i<10; i++) { %> i값: <%=i%> } jstl <c:forEach var="i" begin="0" end = "9" step="1"> i값: ${i}<br/> </c:forEach>
<c:forEach> <c:forEach>는 array, list, set 등의 자료구조를 순회할 수도 있다. jsp <% String[] stringArray = (String[])request.getAttribute("stringArray"); for(String s: stringArray) { %> <%=s%><br/> } jstl <c:forEach var="s" items="${stringArray}"> ${s}<br/> </c:forEach>
<c:forEach> 한편, <c:forEach>로 map의 키,값을 가져오는 방법은 다음과 같다. jsp <% Map<String, String> stringMap = (Map<String, String>)request.getAttribute("stringMap"); for(Map.Entry entry: stringMap.entrySet()) { %> <%=entry.getKey()%>, <%=entry.getValue()%><br/> } jstl <c:forEach var="entry" items="${stringMap}"> ${entry.key}, ${entry.value}<br/> </c:forEach>
<c:redirect> <c:redirect>는 페이지 이동을 위한 태그이다. jstl <c:set var="address" value="g"/> <c:choose> <c:when test="${address == 'g'}"> <c:redirect url="http://www.google.co.kr"/> </c:when> <c:when test="${address == 'n'}"> <c:redirect url="http://www.naver.com"/> <c:otherwise> <c:redirect url="http://www.daum.net"/> </c:otherwise> </c:choose>
참고 사이트 http://www.tutorialspoint.com/jsp/jsp_standard_tag_library.htm http://wiki.gurubee.net/pages/viewpage.action?pageId=26740270&