Day56 - [JSP]JSTL

2021. 5. 5. 08:43JSP 공부

이번에는 JSTL 에 대해서 알아봅시다.

 

JSTL

JSTL(JSP Standard Tag Library) 는, JSP에서 java 와 html 이 같이 사용되어 전체적인 코드의 가독성이 떨어지는 것을 보완하기 위해 만들어졌습니다.

 

JSTL 을 사용하면, 자바의 제어문 반복문 등을 html 태그화 시킬 수 있습니다.

 

다운로드

 

JSTL 을 사용하려면, 저희가 사용하는 Tomcat의 기본 컨테이너에 포함되어 있지 않기 때문에, 별도의 라이브러리를 다운로드 받아서 사용해야 합니다.

 

아래의 링크에서 원하는 버전을 다운로드 받으면 됩니다.

tomcat.apache.org/taglibs/standard/

 

Apache Taglibs - Apache Standard Taglib: JSP[tm] Standard Tag Library (JSTL) implementations

저희는 Standard 1.1 버전을 사용할 거구요, 아래와 같이 빨간색 박스의 다운로드를 클릭 해주세요

클릭하면 아래와 같은 화면이 나오는데, 빨간색 박스의 binaries/ 를 클릭 해주세요

아래로 쭈욱 내려보면, 가장 최신 버전 2004-10-25 일에 올라온 1.1.2.zip 을 다운로드 받아 줍니다

다운로드를 받으면, 압축파일 미리보기를 한 후 lib 폴더 안에 있는 .jar 파일만 JSP 프로젝트에 옮겨 주면 됩니다

※ 현재 프로젝트는 jdbc (데이터베이스) 도 같이 사용해서 ojdbc8.jar 파일도 있습니다.

 

사용법

 

JSTL 을 사용하기 위해서는, 아래의 코드를 맨 위<%@ page %> 아래에 작성해 줍니다.

해당 코드를 작성하셨다면, 아래의 태그들을 사용할 수 있는데, 역시나 전부 알 필요는 없고 몇 가지만 알아두면 됩니다.

※ 추가로 종속되는 태그가 없다면 마지막을 "/" 으로 표시합니다.

먼저, 변수는 <c:set> 태그를 사용합니다.

변수의 출력은 <c:out> 태그를 사용합니다. ( 이 때, EL 을 사용합니다 )

조건문 if는 <c:if> 태그를 사용합니다. ( test 에는 조건이 들어 갑니다 )

조건문 if else는 <c:choose> 태그를 사용합니다.

<c:choose> 태그 속에서, 조건은 <c:when test="조건"> , else는 <c:otherwise> 를 사용합니다.

반복문 for문은 <c:forEach> 를 사용합니다.

- <c:forEach items="객체명" begin="시작값" end="끝 값" step="증감값" var="변수명">

var는 제어변수의 선언, begin은 시작값, end는 끝 값 입니다.

향상된 for문은 아래와 같이 사용할 수 있습니다.

var 에는 배열의 값이 차례대로 대입 됩니다.

items 는 배열의 이름을 넣어 줍니다.

varStatus 는 생략가능하며, for문의 상태값(인덱스)를 확인 할 수 있습니다.

 

i는, 배열 arr2의 값을 꺼내오게 되고, s는 for문의 상태값(인덱스)를 확인 합니다.

향상된 for문을 이용해서 list 에 들어 있는 값도 아래와 같이 사용할 수 있습니다.

<%@page import="java.util.*"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>    
<%
	List<Integer> list = new ArrayList<>();
	list.add(1);
	list.add(2);
	list.add(3);
	list.add(4);
	list.add(5);
	
	//request에 setAttr로 저장
	request.setAttribute("list", list);
%>    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	
	<c:forEach var="i" items="${list }">
		${i }
	</c:forEach>
	

</body>
</html>

해당 코드를 맨 위에 작성하게 되면, formatNumber, formatDate, parseNumber, parseDate 를 쓸 수 있게 됩니다.

 

format 은 형식을 바꿔 주며, parse 는 형반환을 해줍니다.

 

<fmt:formatNumber var="사용힐 변수명" value="값" pattern="형식">

0은 자리수를 나타냅니다.

<fmt:formatDate var="사용할 변수명" value="값" pattern="형식">

formatDate 를 사용할 때는, value에 꼭 날짜의 형식이 들어가야 합니다 ex) Date() , Timestamp()

<fmt:parseNumber var="사용할 변수명" value="값" pattern="형식">

parseNumber는 형변환을 해주기 때문에, 연산을 수행할 수 있으며 value 에 숫자와 문자가 섞여 있다면, 숫자만 반환해 줍니다. ( 숫자가 없다면 에러 )

<fmt:parseDate var="사용할 변수명" value="값" pattern="형식">

parseDate는, 문자로 된 날짜 형식을, 날짜 형식으로 형을 반환해 줍니다.

parseDate는, 기존 문자로 된 날짜 형식을 날짜 형식으로 형을 반환할 때, 문자와 똑같이 사용해주어야 합니다.

그래서, 날짜 형식으로 형반환 후 원하는 형태로 변경하는 formatDate 와 같이 사용하게 됩니다.

 

예제.

오늘은 이렇게, JSTL 에 대해서 알아 보았습니다.

 

고생하셨습니다