1. c:choose 태그
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!--c는 core의 줄임말로 정의한 prefix로 태그를 사용할 수 있다. -->>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>JSTL</title>
</head>
<body>
<p><a href="ex7.jsp">[이전]</a><a href="ex9.jsp">[다음]</a></p>
<!-- switch-case문과 쓰임이 비슷하다. -->
<h2>c:choose 태그</h2>
<!-- userid에 hong -->
<c:set var = "userid" value="admin"/>
<!-- choose when 분기문에 다중 if문과 같다.-->
<c:choose>
<c:when test="${userid == 'hong'}">
홍길동님 반갑습니다.
</c:when>
<c:when test="${userid == 'lim'}">
임꺽정님 반갑습니다.
</c:when>
<c:when test="${userid == 'admin'}">
관리자 전용 페이지입니다.
</c:when>
<!-- otherwise는 디폴트 -->
<c:otherwise>
등록되지 않은 사용자입니다.
</c:otherwise>
</c:choose>
<p><a href="ex7.jsp">[이전]</a><a href="ex9.jsp">[다음]</a></p>
</body>
</html>
c:choose태그는 자바에서 switch-case문과 쓰임이 비슷하다.
우선 c:set 태그로 userid에 admin이라는 값을 설정해주고 <c:choose>태그 안에 <c:when>태그를 넣어 case문과 유사하게 사용한다. 여기서 c:if 태그와 비슷하게 값이 참이라면 문자열을 출력하게된다.
마지막 c:otherwise는 default와 같다.
2. c:forEach 태그
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!--c는 core의 줄임말로 정의한 prefix로 태그를 사용할 수 있다. -->>
<%@ page import = "java.util.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSTL</title>
</head>
<body>
<p><a href="ex8.jsp">[이전]</a><a href="ex10.jsp">[다음]</a></p>
<h2>c:forEach 태그</h2>
<h3>반복문 - 배열</h3>
<% pageContext.setAttribute("nameList", new String[] {"홍길동","임꺽정","일지매", "이순신"}); %>
<ul>
<!--forEach-향상된 for문 / items="${nameList}에서 첫 번쨰 홍길동먼저 name으로 던져주면 ${name}으로 출력되고 다음 임꺽정도 똑같이 반복해서 출력 !-->
<!-- begin - 출발점 / end - 종료점 -->
<c:forEach var ="name" items="${nameList}" begin= "2" end= "3">
<li>${name}</li>
</c:forEach>
</ul>
<h3>반복문 - 배열의 시작 인덱스와 종료 인덱스 지정</h3>
<% pageContext.setAttribute("nameList2", new String[]{"홍길동", "임꺽정", "일지매", "주먹대장", "똘이장군"}); %>
<ul>
<c:forEach var="name" items="${nameList2}" begin = "0" end ="2">
<li>${name}</li>
</c:forEach>
</ul>
<h3>반복문 - ArrayList 객체</h3>
<%
ArrayList<String> nameList3 = new ArrayList<String>();
nameList3.add("홍길동");
nameList3.add("임꺽정");
nameList3.add("일지매");
nameList3.add("주먹대장");
nameList3.add("똘이장군");
pageContext.setAttribute("nameList3", nameList3);
%>
<ul>
<c:forEach var="name" items="${nameList3}" begin="0" end="3">
<li>${name}</li>
</c:forEach>
</ul>
<h3>반복문 - 콤마로 구분된 문자열</h3>
<% pageContext.setAttribute("nameList4", "홍길동, 임꺽정, 일지매, 주먹대장, 똘이장군"); %>
<ul>
<c:forEach var = "name" items="${nameList4}">
<li>${name}</li>
</c:forEach>
</ul>
<h3>반복문 - 특정 횟수 만큼 반복</h3>
<c:forEach var ="no" begin="1" end="6">
<!-- 리스트에서 유용하게 사용-->
<li><a href="ex${no}.jsp">JSTL 예제${no}</a></li>
</c:forEach>
<p><a href="ex8.jsp">[이전]</a><a href="ex10.jsp">[다음]</a></p>
</body>
</html>
c:forEach태그는 자바에서의 향상된 for문이라고 볼 수 있다.
<c:forEach var = "name" items="${nameList}" begin = "0" end = "3">
items="${nameList}"에서 첫 번째 값인 홍길동먼저 name으로 던져주면 ${name}으로 출력되고 그 다음 값인 임꺽정도 이와 똑같이 ${name}으로 출력된다. 여기서 begin은 시작 인덱스를 뜻하고 반대로 end는 종료 인덱스를 뜻하는데
시작 인덱스와 종료 인덱스를 각각 임의로 설정할 수 있다.
3. c:forTokens 태그
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!--c는 core의 줄임말로 정의한 prefix로 태그를 사용할 수 있다. -->>
<%@ page import = "java.util.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>JSTL</title>
</head>
<body>
<p><a href="ex9.jsp">[이전]</a><a href="ex11.jsp">[다음]</a></p>
<h2>c:forTokens 태그</h2>
<% pageContext.setAttribute("tokens", "v1=20&v2=30&op=+"); %>
<ul>
<!--&딜리단위로 자름 -->
<c:forTokens var = "item" items="${tokens}" delims="&">
<li>${item}</li>
</c:forTokens>
</ul>
<p><a href="ex9.jsp">[이전]</a><a href="ex11.jsp">[다음]</a></p>
</body>
</html>
c:forTokens태그는 delims단위로 텍스트를 잘라 출력한다.
'JSP' 카테고리의 다른 글
[JSP] JSTL (Jsp Standard Tag Library) (0) | 2020.10.26 |
---|---|
[JSP] JSTL(Jsp Standard Tag Library) (0) | 2020.10.26 |
[JSP] EL(Expression Language) (0) | 2020.10.26 |
[JSP] JSP - 액션 태그 종류 (0) | 2020.10.26 |
[JSP] JSP페이지 - 구구단 테이블 만들기 (0) | 2020.10.19 |