[JSTL] Core Library

2010. 7. 5. 15:46라이브러리/Jstl

*조건태그

 

<c:if>

사용방법

<c:if test="조건>

조건이 참일시 실행되는 부분

</c:if>

if문을 아신다면 그냥 뭐 쉽게 아실겁니다

다음은 if태그를 이용하여 숫자를 비교하는 예제입니다.

<%@ page language="java" contentType="text/html; charset=EUC-KR"

pageEncoding="EUC-KR"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<% int a =10; %> <!--비교할 숫자를 넣어줌 -->

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

<c:set var="age" value="<%=a %>"/> <!--앞서배운 set을이용하여 age변수에 10을 넣어줍니다 -->

${age}

<c:if test="${age}==20"> <!--여기서 값을 비교합니다. -->

숫자가 맞습니다.

</c:if>

숫자가 틀립니다.

</body>

</html>

 

<c:choose>

<c:when>

<c:otherwise>

choose태그는 자바의 switch 구문과 if - else부분을 혼합한 형태를 띄고 있습니다.

일단 예제를 보실까요. 간단하게 임의의 숫자를 지정하고 성별을 출력하도록 만들어 보았습니다.

<%@ page language="java" contentType="text/html; charset=EUC-KR"

pageEncoding="EUC-KR"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<% int a =1; %>

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

<c:set var="sex" value="<%=a %>"/>

<c:choose>

<c:when test="${sex==1}">

당신은 남자

</c:when>

<c:when test="${sex==2}">

당신은 여자

</c:when>

<c:otherwise>

그 외? 중성인가용?

</c:otherwise>

</c:choose>

</body>

</html>

예제를 보시면 바로바로 이해가 되시죠? ㅎㅎ

 

URL태그

 

<c:import>

URL결과를 읽어와서 현재위치에 삽입이 가능합니다 간단하게 한번 알아보죠

<jsp:include>와 비슷한 개념이지만 이 액션태그는 jsp의 동적인 자원을 포함하기 위해 만든것이기에 페이지라고 이해하시면되겠습니다. 가장 두드러지는 차이점은 include의 경우에는 현재 컨테이너 안에 있는 자원만 포함할 수 있지만, import 의 경우에는 외부자원도 가능하다는 겁니다.

<c:import url ="http://www.naver.com"/>

위와 같이쓰고 태그를 실행하면 네이버의 메인페이지가 뜨게 됩니다. 물론 페이지 뿐만아니라 외부적인 그림들도 다뜨죠.

<c:url>

url의 경우는 하이퍼 링크에 관련된 기능이라고 보시면되겠습니다. url을 재작성합니다

<a href=" <c:url value="test.jsp"/>"> test로가기</a>

jsp쪽에도 url액션태그가 있지만 import할 수있는url은 같은 도메인상에 있지 않아도 됩니다. 굳이 http가 아닌 ftp형식도 사용이 가능합니다

<c:redirect>

jsp의 sendRedirect()와 같은 기능을 가집니다.

이 액션은 HTTP 리다이렉트 응답을 사용자 브라우저로 보내는데 사용되며, JSTL의 javax.servlet.http.HttpServletResponse의 sendRedirect() 메소드와 같습니다.

<c:redirect url="test.jsp"/>

<c:param>

말그대로 파라메터 값을 넘기느 태그입니다.

<c:param name="파라미터 명" value="파라미터 값" />

<c:url var="nameSend" value="/test.jsp">

<c:param name="name" value="jung" />

</c:url>

<a href =<c:out value="${nameSend}" />>url</a>

위 소스를 해석해보면 test.jsp에 name값을 함께 파라메터 값을 보내겠다고 해석이 됩니다. 때문에 test.jsp에서는 request.getParameter로 name값을 받을 수 있습니다.

 

반복태그

 

<c:forEach>

이 태그는 for문이라고 생각하시면 되겠습니다. 이 태그를 잘 사용하면 배열과 컬렉션데이터를 루프로 돌리는 작업을 간단하게 처리할 수 있습니다.

JSP를 이용해서 포문부분을 먼저 보고 다음 태그부분을 보겠습니다.

String[] items = (String[]) request.getAttribute("tList"); //tList를 속성지정

for(int i=0; i<items.length; I++) { //포문시작

String mo = items[i];

out.println(mo);

<%@ page contentType = "text/html; charset=euc-kr" %>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<%

String[] tList ={"aa","bb","cc"} //배열생성

request.setAttribute("tlist",tList); //배열을쓰기위해 속성지정

%>

<html>

<body>

<table border="1">

<c:forEach var="mo" items="${tlist}"><!-- 반복태그지정-->

<tr>

<td> ${mo} </td>

<td> ${mo} </td>

</tr>

</c:forEach>

</table>

</body>

</html>

 

<결과화면>