기본 콘텐츠로 건너뛰기

2022 08 26 회사 워크샵

코어태그 2번째

*조건태그

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

<결과화면>

댓글