티스토리 뷰
1. JSTL ( JSP Standard Tag Library )
- 사용자의 필요에 의해서 태그를 자체적으로 만들어 사용할 수 있다.
- 일반적으로 EL과 같이 사용된다.
[ 1. JSTL -
1 ) <c:if test="${ EL 표현식인 조건문}"> /
2 ) <c:choose> + <c:when test="${EL 표현식인 조건문}"> + <c:otherswise> ] (***)
<%@ page
language="java"
contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!-- 위의 2개는 include.jsp로 인해 생략이 가능하다. -->
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>exam03</title>
</head>
<body>
<h1>/JSTL/exam03.jsp</h1>
<hr>
<!-- =============================================== -->
<h2>JSTL Core 라이브러리 실습 1 - if문 ( c:if test )</h2>
<hr>
<!-- = pageContext.setAttribute("myColor", "빨강"); -->
<c:set var="myColor" value="빨강" scope="page" />
<!-- test에 작성하면 된다. -->
<%-- 단, test에서 EL표현식에 맞게 ${} 안에 작성해야 한다. --%>
<!-- EL변수에는 EL내장객체나 공유속성만이 올 수 있다. (***) -->
<c:if test="${ myColor == '빨강' }">
<p>색상은 빨강색이다.</p>
</c:if>
<!-- =============================================== -->
<h2>JSTL Core 라이브러리 실습 2 - choose + when ( switch문 )</h2>
<hr>
<!-- pageContext.setAttribute("grade", "70") -->
<!-- grade란 EL변수(= 공유속성 이름) 생성됨 -->
<c:set var="grade" value="70" scope="page" />
<!-- 자바의 switch문 또는 SQL의 CASE - WHEN 문장을 JSTL을 이용해 구현 -->
<%-- 3개의 JSTL 태그를 이용해서 구현 : <c:choose /> <c:when /> <c:otherwise /> --%>
<c:choose>
<c:when test="${ grade >= 90 }">
<p>학점은 A이다.</p>
</c:when>
<c:when test="${ grade >= 80 }">
<p>학점은 B이다.</p>
</c:when>
<c:when test="${ grade >= 70 }">
<p>학점은 C이다.</p>
</c:when>
<c:otherwise>
<p>학점은 F이다.</p>
</c:otherwise>
</c:choose>
</body>
</html>
[ 2. JSTL -
1 ) <c:forEach var="배열 또는 리스트에서 원소를 하나씩 뺄 변수명" items="${배열 또는 리스트 객체}"> /
2 ) <c:forEach var="변수명" begin="시작할 인덱스" end="끝날 인덱스" step="증감수" ] (****)
<%@ page
language="java"
contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!-- 위의 2개는 include.jsp로 인해 생략이 가능하다. -->
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>exam04 - forEach</title>
</head>
<body>
<h1>/JSTL/exam04.jsp</h1>
<hr>
<!-- =============================================== -->
<h2>JSTL Core 라이브러리 실습 1 - forEach문 - 배열 ( c:forEach )</h2>
<hr>
<%
// scriptlet tag
// 자바 배열 리터럴 생성
int [] num = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
// request scope에 배열객체 바인딩
// 공유속성의 이름인 myArr은 EL변수명이 된다.
request.setAttribute("myArr", num);
%>
<!-- item 속성 : 배열 또는 리스트 지정 -> 반복횟수 지정 -->
<!-- var 속성 : item 속성에 지정된 자료구조의 1개의 원소값을 가진다. -->
<!-- 그리고 이 var 속성의 이름이 곧 EL 변수명이 된다. -->
<c:forEach var="element" items="${myArr}">
<c:out value="${element}" />
</c:forEach>
<!-- =============================================== -->
<h2>JSTL Core 라이브러리 실습 2 - forEach문 - List ( c:forEach )</h2>
<hr>
<%
// List 객체일 경우
// page directive에 import 속성으로 List 타입명을 기재하지 않을 것이라면,
// 아래와 같이 개발자가 직접 FQCN으로 객체를 생성해도 된다. ( since java 8 )
java.util.List<String> list = new java.util.ArrayList<>();
list.add("홍길동");
list.add("이순신");
list.add("유관순");
// request scope에 공유객체로 list 객체를 바인딩한다.
// 이때 공유속성의 이름은 EL변수가 된다.
request.setAttribute("__NAME__", list);
%>
<c:forEach var="name" items="${__NAME__}">
<c:out value="${name}" />
</c:forEach>
<!-- =============================================== -->
<h2>JSTL Core 라이브러리 실습 3 - forEach문 - begin + end + step ( c:forEach )</h2>
<hr>
<ol>
<!-- = for( int count = 0; count < 10; count ++ )와 같다. -->
<c:forEach var="count" begin="0" end="10" step="1">
<li>${count}</li>
</c:forEach>
</ol>
</body>
</html>
[ 3. JSTL -
1 ) <c:forTokens var="토큰의 변수명" items="${나누기 전의 문자열}" delims="구분자지정" > ] (****)
<h2>JSTL Core 라이브러리 실습 4 - forTokens문 - ( c:forTokens )</h2>
<hr>
<%
// CSV : Comma(,) Sperated Value
// = 쉼표로 구분되어 있는 문자열 ( CSV 형식의 문자열 )
String str = "A,B,C,D";
// request Scope에 바인딩 : "data"란 이름이 EL변수명이 된다.
request.setAttribute("data", str);
%>
<!-- String Tokenizer와 같은 기능을 한다. -->
<!-- delims는 구분자를 의미한다. -->
<c:forTokens var="token" items="${data}" delims=",">
<c:out value="${token}" /><br>
</c:forTokens>
[ 4. JSTL - JSTL formatting 라이브러리 ] (**)
[ 4 - 1. bundle.properties 파일 생성 ]
sendMessage=\uC548\uB155\uD558\uC138\uC694!
[ 4 - 2. JSTL formatting 라이브러리를 사용할 jsp 생성 ]
<%@ page
language="java"
contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!-- 위의 2개는 include.jsp로 인해 생략이 가능하다. -->
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>exam06 - JSTL formatting 라이브러리 2</title>
</head>
<body>
<h1>/JSTL/exam06.jsp</h1>
<hr>
<!-- =============================================== -->
<h2>JSTL formatting 라이브러리 1 - ( fmt:requestEncoding ) </h2>
<hr>
<!-- = request.setCharaterEncoding("UTF-8"); -->
<!-- 아래의 코드는 반드시 전송파라미터의 값을 얻기 전에 해야 한다. -->
<fmt:requestEncoding value="UTF-8" />
<!-- 전송 파라미터에서 값을 얻어 출력한다. -->
1. name : <%= request.getParameter("name") %> <br>
2. age : <%= request.getParameter("age") %> <br>
<p></p>
<!-- EL 내장객체 활용 방법 -->
3. name : ${param.name} <br>
4. age : ${param.age} <br>
<!-- =============================================== -->
<h2>JSTL formatting 라이브러리 2 - ( fmt:setBundle + fmt:message ) </h2>
<hr>
<!-- .properties는 키와 값 쌍으로 들어가는 형태이며, 기본이 아스키 코드이기에 한글이 변환된다. -->
<!-- basename에서는 확장자이름을 제외하고 작성해야 한다. -->
<!-- 즉, bundle.properties에서 sendMessage라는 키의 값을 myBundle에 넣어 출력한 것이다. -->
<fmt:setBundle basename="bundle" var="myBundle" />
<!-- fmt:message에서 bundle은 출력할 값을 지정하는 것이다. -->
<%-- 단, 이때의 bundle은 setBundle에서 var로 지정한 값만 ${}로 지정이 가능하다. --%>
<h2>sendMessage : <fmt:message key="sendMessage" bundle="${myBundle}" /> </h2>
<!-- =============================================== -->
<h2>JSTL formatting 라이브러리 3 - ( fmt:formatDate ) </h2>
<hr>
<!-- 포메팅하기 전의 Date -->
<!-- scope을 지정해주지 않으면, 기본적으로 pageScope가 선택된다. -->
<c:set var="myDate" value="<%= new java.util.Date() %>" scope="request" />
<h3>포멧팅하기 전</h3>
<c:out value="${myDate}" /> <br>
<!-- ======================= -->
<!-- 포멧팅 -->
<h3>포멧팅</h3>
<!-- 1. 2022. 7. 20. -->
1. <fmt:formatDate value="${myDate}" type="date" /> <br>
<!-- 2. 오후 12:34:24 -->
2. <fmt:formatDate value="${myDate}" type="time" /> <br>
<!-- 3. 2022. 7. 20. 오후 12:34:24 -->
3. <fmt:formatDate value="${myDate}" type="both" /> <br>
<!-- 4. 22. 7. 20. 오후 12시 34분 24초 KST -->
4. <fmt:formatDate value="${myDate}" type="both" dateStyle="short" timeStyle="long" /> <br>
<!-- 5. 2022년 7월 20일 오후 12:34 -->
5. <fmt:formatDate value="${myDate}" type="both" dateStyle="long" timeStyle="short" /> <br>
<!-- ======================= -->
<!-- 패턴 적용하기 -->
<!-- 6. 2022-07-20 오후 12:43:25 -->
6. <fmt:formatDate value="${myDate}" pattern="yyyy-MM-dd a HH:mm:ss" /> <br>
<!-- + ss에서 ss.SSS로 작성해주면, 밀리세컨드까지 표시할 수 있다. -->
<!-- + a는 오전 / 오후를 의미한다. -->
<!-- + 그 외 추가하고 싶은 포멧팅이 있다면, 알아본 후 패턴에 추가해주면 된다. -->
<!-- ======================= -->
<!-- 숫자 포멧팅하기 -->
<!-- 7. ₩100,000 -->
7. <fmt:formatNumber value="100000" type="currency" /> <br>
<!-- 8. 12% -->
8. <fmt:formatNumber value="0.123" type="percent" /> <br>
<!-- 9. 987,654,321.12 -->
9. <fmt:formatNumber value="987654321.1234" pattern="###,###,###.00" /> <br>
<!-- =============================================== -->
</body>
</html>
728x90
'KH 정보교육원 [ Java ]' 카테고리의 다른 글
KH 102일차 - myBatis ( 마이 바틱스 ) (*****) (0) | 2022.07.22 |
---|---|
KH 101일차 - mybatis ( 마이 바틱스 ) (*****) (0) | 2022.07.21 |
KH 99일차 - EL / JSTL (*****) (0) | 2022.07.19 |
KH 98일차 - JSP ( 액션 태그 ) ( ***** ) (0) | 2022.07.18 |
KH 97일차 - JSP ( 내장 객체 ) ( ****** ) (0) | 2022.07.15 |
댓글