-
728x90
JSTL은 JSTL(Java Server Page Standard Tag Library)의 약자로 JSP 개발에 매번 스크립틀릿 태그 <% ... %> 를 넣어 사용하는 것이 가독성을 떨어뜨리고 사용에 불편함이 존재하여 이를 해결하기 위해 등장한 태그 라이브러리이다.
JSTL 사용을 통해 개발 속도와 가독성 향상, 코드의 재사용성 등 효율적인 개발에 도움을 받을 수 있다.
라이브러리 추가
JSTL를 사용하기 위해서는 라이브러리를 추가해줘야한다.
https://tomcat.apache.org/download-taglibs.cgi
페이지에 들어가 하단의 4개의 파일을 전부 다운로드 받아 라이브러리에 추가한다.
- Impl : taglibs-standard-impl-1.2.5.jar (pgp, sha512)
- Spec : taglibs-standard-spec-1.2.5.jar (pgp, sha512)
- EL : taglibs-standard-jstlel-1.2.5.jar (pgp, sha512)
- Compat : taglibs-standard-compat-1.2.5.jar (pgp, sha512)
JSTL의 종류
1. core tags
- 변수 생성, URL 관리, 프로그램의 흐름을 제어(조건문, 반복문)
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> JSTL은 사용하기 전 core 를 JSP 파일 header 에 추가해야한다.
<c:out> jsp에서 <%= %> 태그와 유사한 표현식의 결과를 표시 <c:out value="${변수}"/> <c:import> 상대 또는 절대 URL을 검색하여 내용을 var 문자열, varReader의 Reader 또는 페이지에 표시 <c:set> 계산 결과를 scope 변수에 설정 <c:remove> 특정 범위에서 지정된 범위 변수를 제거할 때 사용 <c:if> 조건을 테스트하는데 사용되는 조건부 태그이며, 표현식이 참인 경우에만 내용을 표시 <c:forEach> 기본 반복 태그이며 고정된 횟수 또는 초과되는 중첩된 본문 내용을 반복 <c:redirect> 브라우저를 새 URL로 리디렉션
2. formatting
- 메시지를 형식화, 번호 및 날짜, 통화 형식화 등을 지원
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> <fmt:parseNumber> 통화, 백분율 또는 숫자의 문자열 표현을 분석하는데 사용 <fmt:formatNumber> 특정형식 또는 정밀도로 숫자값을 형식화 하는데 사용 <fmt:parseDate> 시간과 날짜의 문자열 표현을 분석하는데 사용 <fmt:formatDate> 제공된 패턴 및 스타일을 사용하는 시간 및 날짜를 형식화 <fmt:setTimeZone> 시간대 구성 변수 내에 시간을 저장
3. function
- 문자열 조작 및 문자열 길이를 지원
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> <fn:contains()> 지정된 하위 문자열을 포함하는 입력 문자열을 테스트하는데 사용 <fn:indexOf()> 지정된 하위 문자열이 처음 나타나는 문자열 내에서 인덱스를 반환 <fn:split()> 문자열을 하위 문자열 배열로 분할 <fn:endWith()> 입력 문자열이 지정된 접미어로 끝나는지 테스트 <fn:trim()> 문자열의 약쪽 끝 공백을 제거 <fn:toLowerCase()> 문자열의 모든 문자를 소문자로 변화 <fn:toUpperCase()> 문자열의 모든 문다를 대문자로 변환 <fn:substring()> 주어진 문자열 시작 및 끝 위치에 따라 문자열의 일부를 반환 <fn:length()> 문자열 내부의 문자수 또는 컬렉션의 항목수를 반환 <fn:replace()> 모든 문자열을 다른 문자열 시퀀스로 변환
core 사용 예제)
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>JSTL 코어</title> </head> <body> <h2>JSTL 코어</h2> <p>c:out(출력)</p> <p><c:out value="${'Hello jstl'}"/></p> <hr> <p>c:set(변수 선언)</p> <c:set var="userid" value="apple"/> <p>아이디 : ${userid}</p> <hr> <p>c:set(배열)</p> <c:set var="memList" value='<%=new String[]{"apple", "banana", "orange"}%>'/> <p>memList : ${memList}</p><!-- 메모리 주소 --> <p>memList[0] : ${memList[0]}</p> <hr> <p>c:remove(변수삭제)</p> <p>아이디 : ${userid}</p> <c:remove var="userid"/> <p>아이디 : ${userid}</p> <hr> <p>c:if(조건문)</p> <c:set var="userid" value="apple"/> <c:if test="${userid eq 'apple'}"> <p>로그인되었습니다.</p> </c:if> <c:remove var="userid"/> <c:if test="${userid eq 'apple'}"> <p>로그인되었습니다.</p> </c:if> <c:if test="${not userid}"> <p>로그인에 실패하였습니다.</p> </c:if> <hr> <p>c:empty(empty 비교)</p> <c:if test="${empty userid}"> <p>userid 데이터가 없습니다.</p> </c:if> <hr> <p>c:choose(조건문 switch문과 유사)</p> <c:set var="userpw" value="1111"/> <c:choose> <c:when test="${userid}"> <p>아이디 변수가 존재합니다.</p> </c:when> <c:when test="${!empty userpw}"> <p>비밀번호 변수가 존재합니다.</p> </c:when> <c:otherwise> <p>아이디, 비밀번호 변수가 모두 존재합니다.</p> </c:otherwise> </c:choose> <hr> <% String[] studentList = {"김사과", "반하나", "오렌지", "이메론"}; pageContext.setAttribute("studentList", studentList); %> <p>forEach(반복문)</p> <table border="1" width="600"> <tr> <th>idx</th> <th>번호</th> <th>이름</th> </tr> <c:forEach var="student" items="${studentList}" varStatus="status"><!-- varStatus: index 제공 --> <tr> <td>${status.index}</td> <td>${status.count}</td><!-- count: 반복횟수 제공 --> <td>${student}</td> </tr> </c:forEach> </table> </body> </html>
formatting 사용 예제
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> <%@ page import="java.util.Date" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>JSTL - formatting</title> </head> <body> <h2>JSTL - formatting</h2> <p><fmt:formatNumber value="1234.5678"></fmt:formatNumber></p> <p><fmt:formatNumber value="50000"></fmt:formatNumber></p> <p><fmt:formatNumber value="50000" type="currency" currencySymbol="$"></fmt:formatNumber></p> <p><fmt:formatNumber value="0.1" type="percent"></fmt:formatNumber></p> <hr> <% request.setAttribute("now", new Date()); %> <p><fmt:formatDate value="${now}"/></p> <p><fmt:formatDate value="${now}" type="date"/></p> <p><fmt:formatDate value="${now}" type="time"/></p> <p><fmt:formatDate value="${now}" type="both"/></p> </body> </html>
function사용 예제
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>JSTL - function</title> </head> <body> <h2>JSTL - function</h2> <p>length()</p> <p>${fn:length('1234567890')}</p> <hr> <p>indexOf()</p> <p>${fn:indexOf('jstl fn 예제', 's')}</p> <hr> <p>trim()</p> <p>${fn:trim(' jstl fn 예제 ')}</p> <hr> <p>substring()</p> <p>${fn:substring('jstl fn 예제', 0, 4)}</p> <hr> <p>replace()</p> <p>${fn:replace('jstl fn 예제', 'jstl', 'Java Server Page Standard Tag Library')}</p> <hr> <p>split()</p> <c:set var="arr" value="${fn:split('j,s,t,l', ',')}"></c:set> <c:forEach var="ch" items="${arr}" varStatus="i"> <p>${i.count} - ${ch}</p> </c:forEach> <hr> </body> </html>
728x90'프로그래밍 > JSP' 카테고리의 다른 글
[JSTL] 문자열을 Date 타입으로 파싱 (0) 2022.12.22 JSP 게시판 만들기(파일업로드) (0) 2022.12.10 JSP 게시판 만들기(5) (0) 2022.12.08 JSP 게시판 만들기(4) (0) 2022.12.06 JSP 게시판 만들기(3) (0) 2022.12.03