JSTL은 JSP Standart Tag Library로 자주 사용될 수 있는 custom tag들을 모아 표준으로 정해놓은 tag library이다. 커스텀 태그를 JSP페이지 내에 사용할 때 이용한다.
위 두 파일을 basic05_mvc의 lib 폴더에 넣어주자. 파일을 넣어주지 않아도 JSTL을 사용할 수 있지만 Ctrl + space로 불러오기가 안되니 편하게 사용하기 위해 파일을 넣어준다.
jstlTest1.jsp
<%@page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%--
● Directive(지시자)의 종류
<%@ page %>
<%@ include %> 공통코드 삽입할 때
<%@ taglib %> Custom tag(사용자 정의 태그) 사용할 때
--%>
<%-- JSTL을 사용하려면 Directive를 지정한다 --%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jstlTest1.jsp</title>
</head>
<body>
<h3>* JSTL (JSP Standard Tag Library. JSP전용태그) *</h3>
1) JSP 변수 선언<br>
<% int a=3; %>
a : <%=a%>
<hr>
2) JSTL 변수 선언<br>
<c:set var="b" value="5"></c:set>
<c:set var="c" value="7"/>
b : ${b}<br>
c : ${c}<br>
b+c : ${b+c}
<hr>
3) 출력<br>
<c:out value="2"></c:out><br>
<c:out value="${b}"></c:out><br>
<c:out value="${c}"></c:out><br>
<c:out value="${b+c}"></c:out><br>
<hr>
4) b, c 변수 제거<br>
<c:remove var="b"/>
<c:remove var="c"/>
<c:out value="${b}"></c:out><br> <!-- 빈 값 -->
<c:out value="${c}"></c:out><br> <!-- 빈 값 -->
<c:out value="${b+c}"></c:out><br> <!-- 0 -->
<hr>
5) 자바 객체 선언도 가능<br>
<c:set var="dt" value="<%=new Date()%>"></c:set>
오늘날짜 : ${dt}<br>
오늘날짜 : <c:out value="${dt}"></c:out><br>
</body>
</html>
uri부분을 통해 우리가 어떤 '표준 태그 라이브러리'를 쓸 것인지 식별하게 된다.
html 태그와 구분하기 위해 JSTL에서는 접두어를 사용한다.
JSTL 제어문
jstlTest2.jsp
<%@page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jstlTest2.jsp</title>
</head>
<body>
<h3>* JSTL 제어문 연습 *</h3>
<form action="jstlTest2ok1.jsp"> <!-- 결과 페이지(JSP) -->
이름 : <input type="text" name="name"> <br>
나이 : <input type="text" name="age"> <br>
<input type="submit" value="확인">
</form>
</body>
</html>
jstlTest2ok1.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jstlTest2ok1.jsp</title>
</head>
<body>
<h3>* 결과페이지(JSP) *</h3>
<%
String name = request.getParameter("name");
int age = Integer.parseInt(request.getParameter("age"));
out.print("이름 : " + name + "<br>");
out.print("나이 : " + age + "<br>");
//문1)나이가 10미만 "어린이", 20미만 "청소년", 나머지 "성인" 출력
if(age<10) {
out.print("어린이");
} else if(age>=10 && age<20){
out.print("청소년");
} else {
out.print("성인");
}//if end
//문2)1~나이까지 짝수는 파랑색, 홀수는 빨강색으로 출력
for(int i=1; i<=age; i++) {
if(i%2==0) {
out.print("<span style='color:blue'>" + i + "</span>");
} else {
out.print("<span style='color:red'>" + i + "</span>");
}//if end
}//for end
%>
</body>
</html>
jstlTest2ok2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jstlTest2ok2.jsp</title>
</head>
<body>
<h3>* 결과페이지(JSTL) *</h3>
<c:set var="name" value="${param.name}"></c:set>
<c:set var="age" value="${param.age}"></c:set>
이름 : ${name} / <c:out value="${name}"></c:out> <br>
나이 : ${age} / <c:out value="${age}"></c:out> <br>
<!-- 조건문 -->
<c:if test="${name=='itwill'}">대한민국</c:if>
<!-- 다중 조건문 -->
<c:choose>
<c:when test="${age<10}">어린이</c:when>
<c:when test="${age<20}">청소년</c:when>
<c:otherwise>성인</c:otherwise>
</c:choose>
<!-- 반복문 -->
<c:forEach var="a" begin="1" end="${age}" step="1">
<c:out value="#"></c:out>
</c:forEach>
<c:forEach var="a" begin="1" end="${age}" step="1">
<c:choose>
<c:when test="${a%2==0}">
<span style='color:blue'>${a}</span>
</c:when>
<c:when test="${a%2==1}">
<span style='color:red'>${a}</span>
</c:when>
</c:choose>
</c:forEach>
</body>
</html>
JSTL 함수
jstlTest3.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jstlTest3.jsp</title>
</head>
<body>
<h3>* JSTL 함수 *</h3>
<c:set var="txt" value=" White Space "></c:set>
글자갯수 : ${fn:length(txt)}
<hr>
공백제거 : @<c:out value="${fn:trim(txt)}"></c:out>@
<hr>
<c:set var="str" value="Hi My name is waldo"></c:set>
문자열자르기 : ${fn:substring(str, 3, 9)} <!-- My nam -->
<hr>
${fn:toLowerCase(str)} <br>
${fn:toUpperCase(str)}
<hr>
<%
//엔터를 <br>로 바꾸기
//1)JSP
String content="";
content = content.replace("\n", "<br>");
//2)EL+JSTL
pageContext.setAttribute("cn", "\n");
%>
<c:set var="content" value="Hi
My name is
Waldo"></c:set>
${content}
<hr>
${fn:replace(content, cn, "<br>")}
<hr>
<!-- 3) < > & ' " 등 특수문자 변환 -->
<c:set var="text" value="Hi
My <name> is
'W a l d o'"></c:set>
${fn:escapeXml(text)}
<hr>
${fn:replace(fn:escapeXml(text), cn, "<br>")} <br>
${fn:replace(fn:replace(fn:escapeXml(text), cn, "<br>"), ' ' , ' ')}
</body>
</html>
'웹개발 교육 > jsp' 카테고리의 다른 글
[64일] jsp (46) - MVC 패턴 (페이지 이동) (0) | 2022.10.27 |
---|---|
[64일] jsp (45) - HttpServlet (0) | 2022.10.27 |
[63일] jsp (43) - EL (0) | 2022.10.26 |
[63일] jsp (42) - error (0) | 2022.10.26 |
[63일] jsp (41) - MVC (0) | 2022.10.26 |