[02] JSTL
[JSTL]
- JSP Standard Tag Library
- 커스텀 액션+함수
- 자주 사용될수 있는 custom tag들을 모아 표준으로 정해놓은 tag library
- apache에서 다운받아 lib에추가(아파치 톰캣 7.0부터는 기본임)
- custom tag이므로, 사용 JSP에서 taglib지시자 태그 설정 필요
[taglib 디렉티브] <%@tablib%>
- 표현언어(EL : expression Language), JSTL(JSP Standard Tag Library), 커스텀태그를 JSP페이지내에 사용할때 사용
- 예) <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
- 사용자가 정의한 어떠한 태그라도 설정의 정보는 uri속성의 값이 가지고 있고,
- 이것을 해당 페이지 내에서 사용할 때 uri속성의 값이 복잡하므로
- prefix속성의 값이 별명과 같은 역할을 한다.
- prefix속성의 값을 사용하면 uri속성의 값을 사용하는 것과 같다.
- uri부분을 통해 우리가 어떤 '표준태그라이브러리'를 쓸 것인지 식별하게 된다.
- JSP페이지는 uri에 입력된 값을 통해 태그라이브러리를 식별하여 해당 라이브러리로 찾아가기 때문에 정확히 입력해야 한다
- JSTL의 표준태그라이브러리 (지정자)
라이브러리 URI
코어 http://java.sun.com/jsp/jstl/core
XML http://java.sun.com/jsp/jstl/xml
국제화 http://java.sun.com/jsp/jstl/fmt
데이터베이스 http://java.sun.com/jsp/jstl/sql
함수 http://java.sun.com/jsp/jstl/functions
* JSTL 설치
1)
D:\ERPJava_04\tomcat-60\webapps\examples\WEB-INF\lib
2)
http://tomcat.apache.org/taglibs/standard/ 다운
[JSTL core]
- 변수선언, 삭제등 변수와 관련된 작업과 if문, for문 등과 같은 제어문, url처리등에 사용된다
- core 태그 라이브러리를 사용하려면 아래와 같이 <%@taglib>디렉티브 작성
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
- <c:set> 변수설정
- <c:out> 화면에 변수값 출력
- <c:remove> 변수제거
- <c:catch>코드의 예외를 잡아냄
- <c:if>조건
- <c:choose>switch문
- <c:forEach> 반복문
---------------------------------------
jstl폴더 생성
jstlEx1.jsp---------------------------
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%@ 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=EUC-KR">
<title>JSTL</title>
</head>
<body>
[JSTL 코어태그]
변수지원 및 사용<br/>
<c:set var="num1" value="${20}"/>
<c:set var="num2">10.5</c:set>
<c:set var="today" value="<%=new java.util.Date() %>"/>
변수 num1=${num1 }<br/>
변수 num2=${num2 }<br/>
num1+num2=${num1+num2 }<br/>
오늘은 ${today } 입니다.<br/>
<c:remove var="num1" scope="page"/>
삭제한 후의 num1=${num1 }<br/>
삭제한 후의 num1+num2=${num1+num2 }
</body>
</html>
jstlEx2.jsp--------------------------
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%@ 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=EUC-KR">
<title>조건문</title>
</head>
<body>
<form action="jstlEx2ok.jsp" method="post">
<input type="text" name="name">
<input type="text" name="age">
<input type="submit" value="확인">
</form>
</body>
</html>
jstlEx2ok.jsp-----------------------
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%@ 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=EUC-KR">
<title>조건문</title>
</head>
<body>
<br/>---------
<c:if test="true">무조건 수행</c:if>
<br/>---------
${param.name }
${param.age }
<c:if test="${param.name=='bk'}">
name 파라미터의 값이 ${param.name }입니다
</c:if>
<c:if test="${18<=param.age}">
당신의 나이는 18세 이상입니다.
</c:if>
<br/>---------
<c:choose>
<c:when test="${param.name=='bk'}">이름:${param.name}</c:when>
<c:when test="${param.age>=18}">나이:${param.age}</c:when>
<c:otherwise>bk아니고, 18이상 아님</c:otherwise>
</c:choose>
<br/>---------
</body>
</html>
jstlEx3.jsp-------------------------
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%@ 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=EUC-KR">
<title>반복문</title>
</head>
<body>
<c:forEach begin="1" end="5" var="cnt">
<font size=${cnt}>야호</font>
</c:forEach>
<br/>-----------------<br/>
1부터 100까지 숫자 중에서 짝수 만 출력
<br/>-----------------<br/>
<c:forEach begin="1" end="100" var="k">
<c:if test="${k%2==0}">
<c:out value="${k }"/>
</c:if>
</c:forEach>
</body>
</html>