jar 사용

 

jar로 라이브러리를 이용할 경우 하단에 첨부된 파일을 라이브러리 폴더에 넣어줍니다.

jstl-1.2.jar
0.40MB

 

스프링(그래들)

 

build.gradle의 dependencies 사이에 의존성을 추가해줍니다.

 

dependencies {
 
     implementation group: 'javax.servlet', name: 'jstl', version: '1.2'
    
}

 

스프링(메이븐)

 

pom.xml의 <dependencies></dependencies> 사이에 의존성을 추가해줍니다.

 

<dependencies>

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

</dependencies>

 

 

JSP에서 JSTL 사용

 

최상단에 이렇게 라이브러리를 추가하여 JSP 문서에서 JSTL 태그를 사용할 수 있습니다.

 

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>

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

 

 

 

 

JSTL 라이브러리 import

 

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

 

예제

 

${fn:contains(문자열, 찾을 문자열)}

 

<c:set var="text" value="Hello World"/>

<c:if test="${fn:contains(text, 'Hello')}">
	<div>Hello가 포함된 문자열입니다.</div>
</c:if>

 

 

DB에 저장된 날짜를 가져올 때 웬만하면 날짜 포맷을 바꿔서 출력해야 합니다.

 

날짜 형식을 바꾸는 방법은 날짜의 타입에 따라 다른데 이때 사용하는 JSTL 태그는 아래 코드와 같습니다.

 

날짜(Date, LocalDateTime 등) 타입인 경우

(1) <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

(2) <fmt:formatDate value="${regDate}" pattern="yyyy-MM-dd HH:mm:ss"/>

 

JSTL 중 fmt 태그를 사용하기 위한 스크립틀릿(1)을 추가하고 아래 있는 태그 형식(2)으로 작성하면 됩니다.

 

별도로 <c:out value=""/>에 넣을 필요 없이 바로 출력됩니다.

 

 

주의할 부분은 fmt:formatDate의 value 값으로 들어갈 수 있는 타입은 날짜 타입만 허용되기 때문에 문자열로 저장된 날짜를 value에 넣을 경우 에러가 발생합니다.

 

 

문자열(String) 타입인 경우

(1) <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

(2) <c:out value="${fn:substring(regDate, 0, 16)}"/>

 

JSTL 메소드를 사용하기 위한 스크립틀릿(1)을 추가하고 아래 있는 태그 형식(2)으로 작성하면 됩니다.

 

JSTL의 메소드 처리는 value="" 안에서 이뤄지기 때문에 (2)처럼 <c:out/> 태그의 value="" 안에 작성해야 화면에 출력됩니다.

 

${fn:substring(데이터, 시작 인덱스, 마지막 인덱스 + 1)} 이렇게 작성하면 첫번째 매개변수로 들어온 데이터를 자를 수 있습니다.

 

 

예를 들어, ${fn:substring('2021-10-15 12:10:15)', 0, 16)}

 

이렇게 작성하면 '2021-10-15 12:10:15의 0번 인덱스에서 16번 바로 전 인덱스(15번 인덱스)까지 출력하여 결과는 2021-10-15 12:10가 출력됩니다.

JSTL(JSP Standard Tag Library)

 

JSTL은 이름 그대로 '자바 서버 페이지 표준 태그 라이브러리' 라는 뜻을 갖고 있습니다. JSP는 HTML 문서에서 Java 코드를 이용하여 동적인 페이지를 만드는 역할을 하는데 JSP에서 Java를 다루기 위해서는 스크립틀릿(scriptlet)을 사용합니다. 하지만, JSP에 포함된 HTML 태그와 스크립틀릿이 섞이면 유지 보수가 어렵기 때문에 실무에서는 HTML 태그 형식으로 사용할 수 있는 JSTL이 사용됩니다.

 

JSTL은 코드의 재사용률이 높고, 빠른 개발이 가능하며 스크립틀릿을 사용하지 않아도 된다는 장점이 있습니다.

 

JSTL 태그 종류

 

JSTL의 태그 종류는 아래의 표와 같으며, 사용할 때 JSP 지시자를 통하여 선언합니다.

 

JSTL 선언 예시) <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

 

태그 기술
core tags 변수 지원, URL 관리, 흐름 제어 등을 제공, URL은 http://java.sun.com/jsp/jstl/core , 접두사는 c
function tags 문자열 조작 및 문자열 길이를 지원, URL은 http://java.sun.com/jsp/jstl/functions , 접두사는 fn
formatting tags 메시지 형식화, 번호 및 날짜 형식화 등을 지원, URL은 http://java.sun.com/jsp/jstl/fmt , 접두사는 fmt
XML tags 흐름 제어, 변환 등을 제공, URL은 http://java.sun.com/jsp/jstl/xml , 접두사는 x
SQL tags SQL 지원을 제공, URL은 http://java.sun.com/jsp/jstl/sql , 접두사는 sql

 

core tags

 

태그 기술
c:out <% = ... %> 태그 작동 방식과 유사한 표현식의 결과를 표시
c:import 상대 또는 절대 URL을 검색하여 내용을 'var'의 문자열, 'varReader'의 Reader 또는 페이지에 표시
c:set 평가중인 표현식의 결과를 'scope'변수에 설정
c:remove 특정 범위에서 지정된 범위 변수를 제거하는 데 사용
c:catch 본문에서 발생하는 Throwable 예외를 포착하는 데 사용
c:if 조건을 테스트하는 데 사용되는 조건부 태그이며 표현식이 참인 경우에만 본문 내용을 표시
c:choose, c:when, c:otherwise 평가 된 조건이 true 인 경우 본문 내용을 포함하는 간단한 조건부 태그
c:forEach 기본 반복 태그, 고정 된 횟수 또는 초과 수집 동안 중첩 된 본문 내용을 반복
c:forTokens 제공된 델리 미터로 분리 된 토큰을 반복
c:param 포함하는 'import'태그의 URL에 매개 변수를 추가
c:redirect 브라우저를 새 URL로 리디렉션하고 컨텍스트 기준 URL을 지원
c url

 

function tags

 

메소드 기능
fn:contains() 프로그램에서 지정된 하위 문자열을 포함하는 입력 문자열인지 테스트하는 데 사용
fn:containsIgnoreCase() 입력 문자열에 대소 문자를 구분하지 않고 지정된 하위 문자열이 포함되어 있는지 테스트하는 데 사용
fn:endsWith() 입력 문자열이 지정된 접미어로 끝나는 지 테스트하는 데 사용
fn:escapeXml() XML 마크업으로 해석되는 문자를 escape
fn:indexOf() 지정된 하위 문자열이 처음 나타나는 문자열 내에서 인덱스를 반환
fn:trim() 문자열의 양쪽 끝에서 공백을 제거
fn:startsWith() 주어진 문자열이 특정 문자열 값으로 시작되는지 여부를 확인하는 데 사용.
fn:split() 문자열을 하위 문자열 배열로 분할
fn:toLowerCase() 문자열의 모든 문자를 소문자로 변환
fn:toUpperCase() 문자열의 모든 문자를 대문자로 변환
fn:substring() 주어진 시작 및 끝 위치에 따라 문자열의 하위 집합을 반환
fn:substringAfter() 특정 하위 문자열 다음에 문자열의 하위 집합을 반환
fn:substringBefore() 특정 하위 문자열 앞의 문자열 하위 집합을 반환
fn:length() 문자열 내부의 문자 수 또는 컬렉션의 항목 수를 반환
fn:replace() 모든 문자열을 다른 문자열 시퀀스로 바꿈

 

+ Recent posts