2013년 7월 18일 목요일

(130718) 19일차 SetTagTest.jsp (JSTL 표준 태그 라이브러리 설명 및 코어 태그 테스트)

 - JSTL : Java Standard Tag Library
 : JSP는 스크립트릿과 표현식 등의 스크립트 코드와 HTML 코드가 뒤섞이게 되는데, 이렇게 뒤섞인 JSP 코드는 알아보기 어렵다.
 : HTML 태그와 비슷한 태그를 사용할 수 있다면, 스크립트 코드를 사용할 때보다 훨씬 좋고 이해하기 쉬운 코드를 작성할수 있다.
 : 따라서 JSTL을 사용하면 자바 코드를 많이 줄일 수 있다.
 : 이를 사용하기 위해서는 JSTL 관련 라이브러리가 필요하다

 - http://search.maven.org/#browse%7C-658715035 에서 jstl-1.2.jar파일을 다운 받아서 WEB-INF/lib안에 넣어준다.













 - 코어 태그 라이브러리

 : if-else나 변수의 지정등과 같이 논리적인 처리를 위해 사용되는 스크립트 코드를 대체하기 위한 태그.
 : 코어 태그 라이브러리를 사용하려면 JSP 페이지에 다음과 같이 taglib 디렉티브를 추가해주어야 한다.
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

 : set, remove, if, choose, forEach, forTokens, import, redirect, url, catch, out


 - JSP에서 사용될 변수를 설정

 : <c:set var="변수명" value="값" [scope="영역"]/>, <c:set var="변수명" [scope="영역"]>값</c:set> 

 - 설정한 변수를 제거

 : <c:remove var="varName" [scope="영역"] /> 

- 조건에 따라 내부 코드를 수행

 : <c:if test="조건"> ... </c:if> 

- 다중 조건을 처리할 때 사용

 : <c:choose> <c:when> ... </c:when> <c:otherwise> ... </c:otherwise> </c:choose> 

 - 콜렉션이나 Map의 각 항목을 처리할 때 사용

 : <c:forEach var="변수" items="아이템"> ... </c:forEach>
<c:forEach var="i" begin="1" end="10" step="2"> ${i}사용 </c:forEach> 

 - 구분자로 분리된 각각의 토큰을 처리할 때 사용
 : <c:forTokens var="token" items="문자열" delims="구분자"> ${token}사용 </c:forTokens> 

 - URL을 재작성

 : <c:url value="URL" [var="varName"] [scope="영역"]> <c:param name="이름" value="값"/> </c:url> 

 - JspWriter에 내용을 알맞게 처리한 후 출력

 : <c:out value="value" [escapeXml="(true|false)"][default="defaultValue"]/>, <c:out value="value" [escapeXml="(true|false)"] default Value </c:out>


 - test.java 소스 (코어 태그 실습 전 java 소스에서 확장 for문 연습)
import java.util.Vector;

public class test {

public static void main(String[] args) {
String  [] arr = {"크리스탈", "무역협회", "jsp", "Spring", "java"};

for(String str : arr){ // 데이터형 타입 : 배열 이름
System.out.println(str);
}

int [] arr2 = {1, 3, 5, 7, 9};
for(int a : arr2){ // 데이터형 타입 : 배열 이름
System.out.println(a);
}

Vector<String> v = new Vector<>();
v.add(arr[0]);
v.add(arr[1]);
v.add(arr[2]);
for(String vstr : v){
System.out.println(vstr);
}
}
}


 - 결과















 - SetTagTest.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>Insert title here</title>
</head>
<body>

<!-- set, out 테스트 -->
<c:set var="a" value="100"/>
<c:set var="b" value="200"/>
<c:out value="${a}" /> <br>
<c:out value="${b}" /> <br>
<c:out value="${a+b}" /> <br><br>

<!-- if문 테스트 -->
<c:if test = "${a>150}">
<c:out value = "${a-100}" />
</c:if>
<c:if test = "${a<150}">
<c:out value = "${a+100}" />
</c:if> <br><br>

<!-- forEach문 테스트 -->
<c:forEach var="i" begin="1" end="10" step="2"> ${i} </c:forEach>
<br><br>
<c:set var = "intArray" value="<%=new int[] {9, 8, 7, 6, 5} %>" />
<c:forEach var="i" items="${intArray}" begin="0" end="5"> ${i} </c:forEach>
<br><br>
<% String [] arr = {"a", "b", "c", "d"}; %>
<c:set var = "strArray" value="<%=arr %>" />
<c:forEach var="i" items="${strArray}" begin="0" end="4"> ${i} </c:forEach>

<!-- forEach문을 사용하여 다이아몬스 찍기 -->
<br><br>
<!-- 위쪽 삼각형 출력 -->
<c:forEach var="i" begin="0" end="4">
<c:forEach var="j" begin="${i}" end="3">
${"&nbsp;&nbsp;&nbsp;"}
</c:forEach>
<c:forEach var="k" begin="0" end="${i}">
${"★"}
</c:forEach>
<c:forEach var="m" begin="1" end="${i}">
${"★"}
</c:forEach>
<br>
</c:forEach>
<!--아래쪽 삼각형 출력 -->
<c:forEach var="i" begin="0" end="4">
<c:forEach var="j" begin="0" end="${i}">
${"&nbsp;&nbsp;&nbsp;"}
</c:forEach>
<c:forEach var="k" begin="${i}" end="3">
${"★"}
</c:forEach>
<c:forEach var="m" begin="${i}" end="2">
${"★"}
</c:forEach>
<br>
</c:forEach>

</body>
</html>


 - 결과