웹개발 교육/jsp

[63일] jsp (44) - JSTL

2022. 10. 26. 18:12
목차
  1. JSTL 제어문
  2. JSTL 함수

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>"), ' ' , '&nbsp;')}
</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
  1. JSTL 제어문
  2. JSTL 함수
'웹개발 교육/jsp' 카테고리의 다른 글
  • [64일] jsp (46) - MVC 패턴 (페이지 이동)
  • [64일] jsp (45) - HttpServlet
  • [63일] jsp (43) - EL
  • [63일] jsp (42) - error
ewok
ewok
ewok
기록장
ewok
전체
오늘
어제
  • 분류 전체보기
    • 웹개발 교육
      • HTML
      • CSS
      • JavaScript
      • Database
      • Java
      • jQuery
      • Ajax
      • Bootstrap
      • jsp
      • Spring
      • MyBatis
      • 프로젝트
    • JAVA
    • SpringBoot
      • 기초
      • AWS
      • 개인프로젝트
    • Spring Security
    • JPA
    • 테스트코드
    • Error
    • CS
      • 컴퓨터 구조
      • 이산수학
    • 알고리즘
      • 정리
      • Java
    • SQL
    • 자격증
      • SQLD
      • 정보처리기사
    • Git

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • base
  • 노랭이
  • git bash
  • sqld 합격
  • this
  • 생성자
  • org.hibernate.tool.schema.spi.CommandAcceptanceException
  • org.springframework.beans.factory.UnsatisfiedDependencyException
  • merge commit
  • sqld 자격증
  • GIT
  • SQLD
  • 버전 관리
  • 브랜치
  • branch

최근 댓글

최근 글

hELLO · Designed By 정상우.
ewok
[63일] jsp (44) - JSTL
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.