1. JSTL이란?
JSTL(JSP Standard Tag Library)은 JSP 페이지에서 조건문 처리, 반복문 처리 등을 html tag 형태로 작성할 수 있게 도와준다. JSTL을 사용하려면 먼저 아래 URL로 접속하여 세 개의 jar 파일을 다운 받아야 한다.
위 URL에 접속하면 몇 개의 jar 파일이 존재하는데 아래 세 가지를 다운받으면 된다.
그리고 다운받은 jar 파일은 아래와 같이 WEB-INF/lib 폴더 아래에 넣어주면 된다.
JSTL은 다음과 같은 태그를 제공한다.
라이브러리 | 하위 기능 | 접두어 |
코어 | 변수 지원 흐름 제어 URL 처리 |
c |
XML | XML 코어 흐름 제어 XML 변환 |
x |
국제화 | 지역 메시지 형식 숫자 및 날짜 형식 |
fmt |
데이터베이스 | SQL | sql |
함수 | 콜렉션 처리 String 처리 |
fn |
2. 코어 태그
코어 태그는 논리적인 흐름을 태그로 처리할 수 있도록 도와준다. 또한 어떤 URL에 있는 내용을 읽어오거나 출력하는 기능도 제공한다. 코어 태그의 종류는 아래와 같다.
기능 | 태그 | 설명 |
변수 지원 | set | JSP에서 사용될 변수를 설정한다. |
remove | 설정한 변수를 제거한다. | |
흐름 제어 | if | 조건에 따라 내부 코드를 수행한다. |
choose | 다중 조건을 처리할 때 사용된다. | |
forEach | 콜렉션이나 Map의 각 항목을 처리할 때 사용된다. | |
forTokens | 구분자로 분리된 각 토큰을 처리할 때 사용된다. | |
URL 처리 | import | URL을 사용하여 다른 자원의 결과를 삽입한다. |
redirect | 지정한 경로로 Redirect한다. | |
url | URL을 재작성한다. | |
기타 | catch | 예외 처리에 사용된다. |
out | JspWriter에 내용을 알맞게 처리한 후 출력한다. |
3. set, remove 태그
set 태그는 JSP의 네 가지 scope 중 하나에 값을 저장할 수 있다. set 태그는 아래 두 방중 하나를 선택하여 사용하면 된다.
<%-- 방법1 --%>
<c:set var="valName1" scope="request" value="value" />
<%-- 방법2 --%>
<c:set var="valName2" scope="session">
"value"
</c:set>
remove의 경우 원하는 scope에서 변수를 제거해준다. remove 태그는 아래와 같이 사용하면 된다.
<c:remove var="varName" scope="application" />
아래는 set/remove 태그의 예제 코드다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:set var="value1" scope="request" value="I'm value1"> </c:set>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
결과: ${requestScope.value1} <br>
<c:remove var="value1" scope="request" />
</body>
</html>
먼저 코어 태그들을 위해 접두어 c를 사용하기 위해서는 위처럼 접두어 "c"를 원하는 uri에서 지정한 방식으로 사용하겠다는 의미로 "<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>"를 선언해준다. 그리고 이전에 set 태그를 통해 value1을 생성하고, value1을 출력하는 JSP를 작성한다. 이후 다 사용한 value1은 remove 태그로 제거해줬다.
4. 변수 지원 태그 - 프로퍼티, 맵의 처리
변수 지원 태그를 사용하면 프로퍼티나 맵을 처리할 수 있다. 이때 프로퍼티(Property)란 객체의 값을 변경하거나 읽기 위한 getter, setter 메소드를 생각하면 된다. 변수 지원 태그로는 set을 사용하는데 다음과 같은 방식으로 사용한다.
<c:set target="${some}" property="propertyName" value="value" />
위와 같이 사용하면 some이라는 객체가 가진 some.setPropertyName에 전달된 value값을 넣게 된다. some 객체가 map이라면 some.put(propertyName, value) 메서드를 수행하게 된다.
5. if 태그
if 태그를 사용하면 조건문을 나타낼 수 있지만 else에 대한 처리는 존재하지 않는다. if 태그의 문법은 다음과 같다.
<c:if test="codition">
some codes...
</c:if>
위에서 test의 조건이 true가 되면 태그 안에 작성된 코드들이 실행되게 된다. 아래는 if 태그 예시 코드다.
<c:set var="value" scope="request" value="10"/>
<body>
<c:if test="${requestScope.value eq 10}">
value는 10입니다.
</c:if>
<c:if test="${requestScope.value ne 10}">
value는 10이 아닙니다.
</c:if>
</body>
6. choose 태그
choose 태그도 if 태그와 같이 흐름제어를 위해 사용되며 아래와 같이 사용가능하다.
<c:choose>
<c:when test="condition1">
some codes...
</c:when>
<c:when test="condition2">
some codes...
</c:when>
<c:otherwise>
some codes...
</c:otherwise>
</c:choose>
7. forEach 태그
forEach 태그를 사용하면 배열 및 Collection에 저장된 요소를 차례대로 처리하여 for문과 비슷하게 사용할 수 있다. 사용법은 아래와 같으며 items에는 배열, List, Iterator 등이 들어갈 수 있다. (대괄호는 생략 가능하다는 의미다.)
<c:forEach var="varName" items="item" [begin="start index"] [end="end index"]>
some codes...
</c:forEach>
아래는 forEach 태그의 예제 코드다.
<%
List<String> list = new ArrayList<>();
list.add("value1");
list.add("value2");
request.setAttribute("list", list);
%>
<body>
<c:forEach var="item" items="${requestScope.list }">
${item }<br>
</c:forEach>
</body>
8. import 태그
import 태그는 특정 url 페이지의 결과를 읽고 그 결과를 변수에 저장하여 사용할 수 있게 해준다. 사용법은 아래와 같다.
<c:import url="URL" charEncoding="Encoding" var="varName" scope="scope">
<c:param name="paramName" value="value"/>
</c:import>
예제 코드는 아래와 같다.
<c:import url="http://localhost:8080/firstweb/jstl02.jsp" var="urlValue" scope="request"/>
<body>
${requestScope.urlValue}
</body>
9. redirect 태그
redirect 태그를 사용하면 redirect를 수행할 수 있다. 사용법은 아래와 같다.
<c:redirect url="redirect URL">
<c:param name="paramName" value="value"/>
</c:redirect>
예제 코드는 아래와 같다.
<c:redirect url="http://localhost:8080/firstweb/jstl02.jsp"></c:redirect>
10. out 태그
out 태그는 JspWriter에 데이터를 출력할 때 사용한다. 사용 형식은 다음과 같다.
<c:out value="value" excapeXml="true or false" default="defaultValue"/>
References
'BackEnd > JSP & Servlet' 카테고리의 다른 글
Servlet 작성법 (0) | 2023.01.24 |
---|---|
Servlet이란? (0) | 2023.01.24 |
[JSP] EL(Expression Language) (0) | 2022.12.23 |
Servlet과 JSP 연동 (0) | 2022.12.23 |
Forward란? (0) | 2022.12.22 |