JST - JSTL 기초
액션 태그(Action Tag)
XML 형식으로 코드를 기술하는 문법.
액션 태그의 종류
1. 표준 액션 태그
include와 forward가 있음. bean 관련 태그(중요)
2. 커스텀 액션 태그
별도의 라이브러리를 설치(포함)해야만 사용할 수 있는 태그
(대표적으로 JSTL)
예) 표준 액션의 include
<jsp:include page="포함할페이지.jsp">
JSTL의 변수 선언(cnt라는 변수를 만들어서 0으로 초기화)
<c:set var="cnt" value="0">
JSTL(JSP Standard Tag Library)
웹 페이지 상에서 간단한 프로그램 제어를 처리하기 위한
태그 집합.
--------------------------------------------------------------
http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/
위 사이트 에서 jakarta-taglibs-standard-1.1.2.zip 을 활용
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><%-- --%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSTL 기초</title>
</head>
<body>
<%-- 변수 선언 --%>
<c:set var="num1" value="100"/>
<c:set var="num2" value="200"/>
<%-- 조건 분기 처리 --%>
<c:if test="${num1 > num2}">
<p>num1이 크다</p>
</c:if>
<c:if test="${num1 < num2}">
<p>num2가 크다</p>
</c:if>
</body>
</html>
JSTL 구성
1. core(코어) - 변수 선언, 실행 흐름 제어용 태그들
2. format(형식지정) - 숫자, 날짜, 시간 등 출력 형식 지정
3. sql(데이터베이스) - DB의 데이터 입력/수정/삭제/조회 기능
4. xml - XML 문서 처리 기능
5. function(함수) - 문자열 처리 함수 제공
사용 형식
core -> c:if, c:forEach, c:set 등
format -> fmt:formatNumber 등
function -> fn:toUpperCase("hello") => HELLO
core 주요 태그
조건 처리 태그 : if, choose/when/otherwise
반복 처리 태그 : forEach, forTokens
예외 처리 태그 : catch
format 주요 태그
날짜 시간 지정 태그 : formatDate
수치 지정 태그 : formateNumber
JSTL 활용
<%@ 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="code" value="ep001" scope="request"/>
<c:set var="name" value="TV" scope="request"/>
<c:set var="price" value="1000000" scope="request"/>
<jsp:forward page="data_view.jsp"/>
data_in
에 임의의 상품데이터 입력
code : ep100
name : TV
price : 1000000
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>제품정보</title>
</head>
<body>
<h2>제품 정보</h2>
제품 코드 : ${code}<br>
제품 명 : ${name}<br>
가격 : ${price}<br>
제품정보가 표출
데이터지우기
<title>제품정보</title>
</head>
<body>
<h2>제품 정보</h2>
<c:if test="${code == 'ep001'}">
<c:remove var="code"/>
</c:if>
제품 코드 : ${code}<br>
제품 명 : ${name}<br>
가격 : ${price}<br>
jstl 활용
<c:if test = "${code == 'ep001}"> : 만약 code가 ep001이라면
<c:remove var="code"/> : code를 지움(remover)
<title>제품정보</title>
</head>
<body>
<h2>제품 정보</h2>
<c:if test="${code == 'ep001'}">
<c:remove var="code"/>
</c:if>
<c:forEach begin="1" end="5">
제품 코드 : ${code}<br>
제품 명 : ${name}<br>
가격 : ${price}<br>
</c:forEach>
<c:forEach begin="1" end="5"> : forEach태그로 1로시작하여 5가될때까지 반복(java의 for문)
<c:forEach var="cnt" begin="1" end="10" step="2">
${cnt}
<c:if test="${cnt % 3 == 0}">
<br>
</c:if>
</c:forEach>
<c:forEach var="cnt" begin="1" end="10" step="2"> | forEach)1부터 10까지의 수 중 2번째 수마다 입력 |
${cnt} | cnt 변수 생성 |
<c:if test="${cnt % 3 == 0}"> | if)만약 3으로 나누었을때 나머지가 0인 수에서 |
<br> | 줄바꿈 |
</c:if> | if문 닫음 |
</c:forEach> | forEach문 닫음 |
<%
String arr[] = {"갈비탕", "돈까스", "비빔밥"};
pageContext.setAttribute("menu", arr);
%>
<ul>
<c:forEach var="m" items="${menu}">
<li>${m}</li>
</c:forEach>
</ul>
String arr[] = {"갈비탕", "돈까스", "비빔밥"}; | 갈비탕, 돈까스, 비빔밥 배열 생성 |
pageContext.setAttribute("menu", arr); | "menu" 변수에 배열(arr)타입으로 데이터 전송 |
<ul> | 목록타입 |
<c:forEach var="m" items="${menu}"> | forEach로 배열"menu"을 변수"m"으로 지정하여 반복 |
<li>${m}</li> | "m"에 목록배열을 입력 |
</c:forEach> </ul> |
forEach문 닫음 ul닫음 |