분명 잔 것 같은데 졸리다

[JSP] JSTL의 주요 태그 라이브러리와 간단한 예시 코드 본문

FE/JSP

[JSP] JSTL의 주요 태그 라이브러리와 간단한 예시 코드

スモモ🍒 2024. 4. 1. 12:33
JSTL (JSP Standard Tag Library)
: JSP 페이지에서 자바 코드의 사용을 줄이고 보다 표현력 있는
방식으로 웹애플리케이션을 개발할 수 있게 해주는 태그라이브러리의 모음
(자바 코드를 직접 사용하지 않고 동적인 웹페이지 제작 가능,
웹 애플리케이션의 개발과 유지보수가 훨씬 용이해진다.)

 

※ 주요 태그 라이브러리

 

01. Core : 변수 지원, 흐름제어, url 처리등의 기본작업 수행

1) 태그 라이브러리 추가(선언)

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

 

2) 조건문 사용 : <c:forEach> 태그

<c:forEach var="item" items="${list}">
    Item: ${item}<br/>
</c:forEach>

 

3) 반복문 사용 : <c:set> 태그

<c:set var="number" value="100"/>
The number is ${number}.

02. Formatting : 숫자, 날짜, 시간의 형식화 및 국제화 작업을 지원

1) 태그 라이브러리 추가(선언)

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

 

2) 날짜 및 시간 형식화 : <fmt:formatDate> 태그

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

: value에 지정된 날짜/시간값, pattern속성에서 지정된 형식으로 변환하여 출력

 

3) 숫자 형식화 : <fmt:formatNumber> 태그

<fmt:formatNumber value="${salary}" type="currency" currencySymbol="$" />

: value에 지정된 숫자를 형식화하여 출력, salary 변수의 값을 달러($) 통화 기호로 사용

 

4) 메시지 형식화와 국제화 : <fmt:message> 태그

<fmt:setLocale value="en_US"/>
<fmt:bundle basename="messages">
    <fmt:message key="greeting"/>
</fmt:bundle>

: 리소스 번들로 특정 로케일에 맞는 텍스트 메시지를 포함

 

5) 날짜 및 시간 파싱 : <fmt:parseDate> 태그

<fmt:parseDate value="2024-01-01 12:00:00" pattern="yyyy-MM-dd HH:mm:ss" var="parsedDate" />

: 문자열 형태의 날짜를 파싱하여 날짜 객체로 변환


 

03. SQL : DB 접근 및 조작을 위한 태그 제공

1) 태그 라이브러리 추가(선언)

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

 

2) 데이터소스 설정과 쿼리 실행

<sql:setDataSource var="ds" driver="com.mysql.jdbc.Driver"
                   url="jdbc:mysql://localhost:3306/mydb"
                   user="root" password="password"/>
<sql:query dataSource="${ds}" var="result">
    SELECT * FROM Users WHERE id = 1;
</sql:query>

: <sql:setDataSource> 태그로 데이터 소스 설정, <sql:query> 태그로 쿼리작성

 

⚠️ 보안문제, 코드의 분리, 관리의 복잡성 등으로 실제 개발에는 권장되지 않으므로 분리하는게 좋다!

 

04. XML : XML문서의 처리 및 변환을 위한 태그 제공

1) 태그 라이브러리 추가(선언)

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

 

2) XML 데이터 파싱 및 출력

<x:parse xml="${xmlData}" var="xmlDocument"/>
<x:out select="$xmlDocument/book/title"/>

: xmlData에 저장된 XML  데이터를 파싱 하여 xmlDocument 객체에 저장 후 해당 XML 문서에서 선택한 요소를 출력

 

3) XPath를 사용한 조건 처리 및 반복 처리

<x:parse xml="${xmlData}" var="xmlDocument"/>
<x:if select="$xmlDocument/books/book[@category='fiction']">
    Fiction books are available.
</x:if>
<x:forEach select="$xmlDocument/books/book" var="book">
    <x:out select="$book/title"/>
    <br/>
</x:forEach>

: xmlData로부터 XML 데이터 파싱 후 select한 조건에 맞는 요소가 있는 경우 메시지 출력, 이후 forEach의 select에 해당하는 요소를 반복하여 out(출력) 


 

05. Functions : 문자열 처리등의 기능을 제공하는 EL(Expression Language) 함수의 집합

- 태그대신 함수로서 작동한다는 점이 차이가 있다.

 

1) 태그 라이브러리 추가(선언)

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

 

2) 문자열 길이 구하기 : ${fn:length}

${fn:length('Hello World')}

: 11을 반환

 

3) 문자열 분할하기 : ${fn:split}

<c:forEach var="word" items="${fn:split('Java,JSP,Servlets', ',')}">
    ${word}<br/>
</c:forEach>

: 괄호 안 문자열을 ,로 분할하여 각각의 단어를 구분하여 출력

 

4) 문자열 대체하기 : ${fn:replace}

${fn:replace('JSP and Servlets', 'Servlets', 'Java EE')}

: 첫번째 문자열에서 두번째 문자열을 세번째 분자열로 대체 = JSP and Java EE

 

5) 문자열에서 부분 문자열 추출하기 : ${fn:substring}

${fn:substring('Hello World', 6, 11)}

: 지정된 문자열에서 6번째부터 11번째 전까지의 부분 문자열을 반환 = World

 

fn:contains() 문자열이 특정 부분 문자열을 포함하는 지 확인
fn:endsWith() 문자열이 특정 부분 문자열로 끝나는지 확인
fn:trim() 문자열의 앞과 뒤에서 공백 제거