댄스댄스 2012. 6. 19. 14:22

[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>