오봉이와 함께하는 개발 블로그
JSP - JSTL 본문
728x90
JSTL (JSP Standard Tag Library)
- JSP 표준 태그 라이브러리
- <%@ taglib prefix="c" uri="http:....." %>
- JSP와 HTML을 같이 사용함으로서 가독성이 떨어지는 것을 보완하고자 만들어진 태그 라이브러리
- JSP 페이지 내에서 자바 코드를 사용하지 않고 태그를 사용하도록 함
- JSP 페이지의 로직을 담당하는 부분인 제어문 및 데이터베이스 처리 등을 표준 커스텀 태그로 제공
JSTL 라이브러리 구성
- Core (코어)
- URI : http://java.sun.com.jsp/jstl/core
- Prefix : c
- 제공 기능
- 변수 선언 및 삭제 등 변수와 관련된 작업
- if, for 문 등과 같은 제어문
- URL 처리 및 그 밖의 예외처리 및 화면 출력
- 변수 지원
- <c:set>
- 변수 지정
- setAttribute()와 같은 역할
- <c:remove>
- 지정된 변수 제거
- <c:set>
- 흐름 제어
- <c:if> : 조건문
- <c:choose>
- switch문에 해당
- <c:when>, <c:otherwise> 서브 태그
- <c:forEach> : 반복문
- <c:forTokens> : 구분자로 분리된 각 토큰 처리
- URL 처리
- <c:import> : 다른 자원 추가
- <c:redirect> : sendRedirect() 기능
- <c:rul> : url 생성 (페이지 이동)
- 기타
- <c:catch> : 예외 처리
- <c:out> : 출력
<c:set> 태그 : 변수 선언 예제 - c_set.jsp
<%@ 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="id" value="hong" scope="page" />
<c:set var="pwd" value="1234" scope="page" />
<c:set var="name" value="${'홍길동' }" scope="page" />
<c:set var="age" value="${20 }" scope="page" />
<!-- value 값으로 EL 사용해도 됨 -->
<c:set var="contextPath" value="${pageContext.request.contextPath }" />
<!-- 복잡한 속셩명을 짧게 줄여서 사용 -->
<html>
<head>
<meta charset="UTF-8">
<title>c:set 태그</title>
</head>
<body>
${id } <br>
${pwd } <br>
${name } <br>
${age } <br><br>
<a href="${contextPath}/login.jsp">로그인</a>
</body>
</html>
<c:if> 태그 : 조건문 (else문 없을 경우의 if문) - c_if.jsp
<%@ 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="id" value="hong2" scope="page" />
<c:set var="pwd" value="1234" scope="page" />
<c:set var="name" value="${'홍길동' }" scope="page" />
<c:set var="age" value="${20 }" scope="page" />
<c:set var="height" value="${170 }" scope="page" />
<html>
<head>
<meta charset="UTF-8">
<title>c:if 태그</title>
</head>
<body>
<c:if test="${true }">
<h3>항상 참입니다</h3>
</c:if>
<c:if test="${(id=='hong') && (name=='홍길동')}">
<h3>아이디는 ${id }이고, 이름은 ${name }입니다</h3>
</c:if>
</body>
</html>
<c:choose> 태그 : switch문 기능 - c_choose.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<c:set var="id" value="hong" scope="page" />
<c:set var="pwd" value="1234" scope="page" />
<c:set var="name" value="${'홍길동'}" scope="page" />
<c:set var="age" value="${20}" scope="page" />
<c:set var="height" value="${170}" scope="page" />
<html>
<head>
<title>Title</title>
</head>
<body>
<table border="1" align="center">
<tr align="center" bgcolor="#90ee90">
<td width="7%">아이디</td>
<td width="7%">비밀번호</td>
<td width="7%">이름</td>
<td width="7%">나이</td>
<td width="7%">키</td>
<c:choose>
<c:when test="${empty name}">
<tr align="center"><td colspan="5">이름이 없습니다.</td></tr>
</c:when>
<c:otherwise>
<tr align="center">
<td>${id}</td>
<td>${pwd}</td>
<td>${name}</td>
<td>${age}</td>
<td>${height}</td>
</tr>
</c:otherwise>
</c:choose>
</tr>
</table>
</body>
</html>
<c:forEach> 태그 : 반복문 수행 예제 - c_forEach.jsp
- <c:forEach var=”변수명 items=”반복할 객체명” begin=”시작값” end=”마지막값” step=”증가값” varStatus=”반복상태변수명”>
- </c:forEach>
- varStatus : 반복 상태 속성 지정
- index : 인덱스 번호 반환 (일반적으로 0부터 시작. begin 값을 1로 설정하면 인덱스도 1부터 시작)
- count : 몇 번째 반복인지 숫자 반환
- first: 첫 번째 여부 (boolean 값 반환)
- last : 마지막 여부(boolean 값 반환)
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
List dataList = new ArrayList();
dataList.add("hello");
dataList.add("world");
dataList.add("안녕하세요");
%>
<html>
<head>
<title>Title</title>
</head>
<body>
<c:forEach var="i" begin="1" end="10" step="1" varStatus="loop">
i = ${i} 반복회수 : ${loop.count}
인덱스 : ${loop.index}
첫 번째 : ${loop.first}
마지막 : ${loop.last} <br>
</c:forEach> <br>
<c:set var="list" value="${dataList}" />
<c:forEach var="data" items="${list}">
${data} <br>
</c:forEach>
<c:set var="fruits" value="사과, 수박, 바나나, 망고, 귤" />
<c:forTokens items="${fruits}" delims="," var="token">
${fruits} <br>
</c:forTokens>
</body>
</html>
<c:url> 태그
- <c:url var=”변수명” value=”url경로” [scope] />
- <c:url var="url1" value="/sec01/login.jsp" />
- /가 있어서야 ContextPath (/JSP01)부터 찾음
- / 없는 경우 : 현재 페이지가 들어 있는 sec02부터 찾음
- <c:url var="url1" value="sec01/login.jsp" />
- /JSP01/sec02/sec01/login.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<c:url var="url1" value="login.jsp" />
<html>
<head>
<title>Title</title>
</head>
<body>
<a href="${url1}">로그인 화면으로 이동</a>
</body>
</html>
<c:redirect> 태그
- response.sendRedirect() 기능
- 매개변수 전달 가능
<c:redirect url=”redirect할 url”>
<c:param name=”id” value=”${‘hong’}” />
</c:redirect>
<c:redirect> 태그 예제 - c_redirect.jsp, c_redirect_result.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<c:redirect url="c_redirect_result.jsp">
<c:param name="name" value="${'HongGilDong'}"/>
<c:param name="email" value="${'hong@test.com'}"/>
</c:redirect>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h3>redirect 할 때 전달된 param 받기</h3>
성명 : ${param.name} <br>
이메일 : ${param.email}
</body>
</html>
포매팅 태그 라이브러리
- 숫자, 날짜, 통화 관련 포매팅 태그 라이브러리
- <fmt:formatDate>
- <fmt:formatNumber>
- <fmt:timeZone>
포매팅 예제 - format_taglib.jsp
<%@ page import="java.util.Date" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h3>formatNumber</h3>
<c:set var="price" value="100000000"/>
<fmt:formatNumber type="number" value="${price}" var="priceNumber"/>
일반 숫자로 표현 : ${priceNumber}<br>
통화로 표현 : <fmt:formatNumber type="currency" value="${price}" currencySymbol="$" /><br>
<!--천 단위 구분 표시 : groupingUsed="ture" or "false" (default : true)-->
퍼센트로 포현 : <fmt:formatNumber type="percent" value="${price}" groupingUsed="true" /><br>
<h3>formatDate</h3>
<c:set var="now" value="<%= new Date()%>" />
일반 날짜로 표현 : ${now} <br>
포매팅 스타일없이 : <fmt:formatDate value="${now}" type="date" /> <br>
포매팅 full : <fmt:formatDate value="${now}" type="date" dateStyle="full" /> <br>
포매팅 short : <fmt:formatDate value="${now}" type="date" dateStyle="short" /> <br>
포매팅 type:time : <fmt:formatDate value="${now}" type="time" /> <br>
포매팅 type:both : <fmt:formatDate value="${now}" type="both" /> <br>
포매팅 type:both dateStyle:full timeStyle:full : <fmt:formatDate value="${now}" type="both" dateStyle="full" timeStyle="full" /> <br>
패턴 yyyy-MM-dd hh:mm:ss <fmt:formatDate value="${now}" pattern="yyyy-MM-dd hh:mm:ss" /> <br>
한국 현재 시간 : <fmt:formatDate value="${now}" type="both" dateStyle="full" timeStyle="full" /> <br>
뉴욕 현재 시간 : <fmt:formatDate value="${now}" timeZone="GMT-5" type="both" dateStyle="full" timeStyle="full" />
</body>
</html>
문자열 처리 함수
- 함수 기능 태그 라이브러리
- <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
함수 기능 태그 라이브러리 - fn_string.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<c:set var="title1" value="hello world" />
<c:set var="title2" value="쇼핑몰 중심 JSP 입니다" />
<c:set var="str" value="중심" />
title1 : ${title1} <br>
title2 : ${title2} <br>
str : ${str} <br>
${title1}의 문자열 길이 : ${fn:length(title1)} <br>
title1 3 ~ 5 번째 문자열 추출 : ${fn:substring(title1, 2, 5)} <br>
공백을 /로 변환 : ${fn:replace(title1, " ", "/")}<br>
title1에 '중심' 단어 포함 여부 : ${fn:contains(title1, str)}<br>
title2에 '중심' 단어 포함 여부 : ${fn:contains(title2, str)}<br>
</body>
</html>
728x90
'BE > JSP' 카테고리의 다른 글
스프링 MVC 1 - MVC 패턴 적용 (0) | 2022.08.11 |
---|---|
스프링 MVC 1 - JSP로 회원 관리 웹 애플리케이션 만들기 (0) | 2022.08.11 |
JSP - EL (0) | 2021.12.31 |
JSP - 액션 태그(useBean, setProperty, getProperty) (0) | 2021.12.30 |
JSP - 액션 태그(include, param&forward) (0) | 2021.12.30 |
Comments