JSTL(JSP 표준 태그 라이브러리)
⚡ 스마트 요약
JSP 표준 태그 라이브러리(JSTL)는 반복, 조건 논리, 예외 처리, 가져오기 및 리디렉션과 같은 일반적인 웹 개발 기능을 제공하는 사용자 지정 JSP 태그 라이브러리 모음으로, JSP 코드를 스크립틀릿보다 더 깔끔하고 이식성이 뛰어나며 읽기 쉽게 만들어 줍니다.

JSTL이란 무엇입니까? Java?
JSTL 용 스탠드 Java 서버 페이지 표준 태그 라이브러리이며 일반적인 웹 개발 기능을 제공하는 사용자 정의 JSP 태그 라이브러리 모음입니다. JSTL은 JSP의 표준 태그 라이브러리입니다.
JSTL의 장점
JSTL의 장점은 다음과 같습니다.
- 표준 태그: JSP 페이지의 이식 가능한 기능에 대한 풍부한 계층을 제공합니다. 개발자가 코드를 이해하는 것은 쉽습니다.
- Code 청초한: 스크립릿은 개발자를 혼란스럽게 하기 때문에 JSTL을 사용하면 코드가 깔끔하고 깔끔해집니다.
- Automatic JavabeansInterospection 지원: JSP 스크립틀릿에 비해 JSTL의 장점이 있습니다. JSTL 표현식 언어 핸들 Java빈 코드는 매우 쉽습니다. 범위가 지정된 속성으로 검색된 객체를 다운캐스트할 필요가 없습니다. JSP 스크립틀릿 코드를 사용하는 것은 복잡하며 JSTL은 그 목적을 단순화했습니다.
- 인간이 읽기 더 쉬움: JSTL은 다음을 기반으로 합니다. XML, 이는 HTML과 매우 유사합니다. 그래서 개발자가 이해하기 쉽습니다.
- 컴퓨터가 이해하기 더 쉬움: 다음과 같은 도구 Dreamweaver 및 첫 페이지는 점점 더 많은 HTML 코드를 생성하고 있습니다. HTML 도구는 HTML 코드 서식 지정 작업을 훌륭하게 수행합니다. HTML 코드는 스크립틀릿 코드와 혼합되어 있습니다. JSTL은 XML 호환 태그로 표현되므로 HTML 생성 시 문서 내의 JSTL 코드를 쉽게 구문 분석할 수 있습니다.
JSTL 태그
핵심 태그는 JSP에서 가장 자주 사용되는 태그입니다. 그들은 다음에 대한 지원을 제공합니다.
- 되풀이
- 조건부 논리
- 예외 잡기
- URL 전달
- 리디렉션 등
핵심 태그를 사용하려면 먼저 태그 라이브러리를 정의해야 하며, 아래는 태그 라이브러리를 포함하는 구문입니다.
구문 :
<%@ taglib prefix="c" uri=http://java.sun.com/jsp/jstl/core%>
여기
- 접두사는 모든 핵심 태그를 정의하는 데 사용될 수 있으며
- uri는 가져온 taglib의 라이브러리입니다.
핵심 태그 중 일부를 자세히 살펴보겠습니다.
1. 아웃
- 표현식의 결과는 out 태그에 표시됩니다.
- XML 태그를 직접 이스케이프할 수 있습니다. 따라서 실제 태그로 평가되지 않습니다.
구문 :
<c:out value="" default="" escapeXML="">
- 여기서 값은 출력에 대한 정보를 나타내며 필수입니다.
- 기본값은 정보 출력 실패이며 필수 사항은 아닙니다.
- escapeXML – XML 문자를 이스케이프하는 경우 true입니다.
예:
Coretag_jsp1.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-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=ISO-8859-1">
<title>Core Tag JSP1</title>
</head>
<body>
</body>
</html>
코드 설명:
Code 3 라인 : 이 taglib 접두사는 모든 태그에 필요하며 추가된 접두사는 'c'입니다. 따라서 모든 코어 태그의 접두사로 사용할 수 있습니다.
Code 12 라인 : 여기서는 접두사 “c”와 함께 coretag out을 사용하고 있으며 이 out은 표현식 태그의 값을 인쇄합니다. 따라서 출력은 이름이 됩니다.
위 코드를 실행하면 다음과 같은 출력이 나옵니다.
출력:
- 출력 스트림에 인쇄될 핵심 태그 "out"에서 이름으로 값을 가져옵니다.
2. 캐치
- 본문에서 발생하는 모든 예외를 포착하여 출력으로 표시합니다.
- 오류를 처리하고 포착하는 데 사용됩니다.
구문 :
<c:catchvar="">
여기서 var는 발생 가능한 예외를 보유할 변수의 이름을 나타냅니다.
예:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!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=ISO-8859-1">
<title>Core Tag JSP2</title>
</head>
<body>
<c:catch var="guruException">
<% int num = 10/0; %>
</c:catch>
The Exception is : ${guruException}
</body>
</html>
코드 설명:
Code 3 라인 : 이 taglib 접두사는 모든 태그에 필요하며 추가된 접두사는 'c'이므로 모든 코어 태그의 접두사로 사용할 수 있습니다.
Code 11-13행: Coretag catch는 예외를 catch하고 예외를 인쇄하는 데 사용됩니다. 여기서는 10/0일 때 예외가 발생하고 해당 예외 이름은 "guruException"입니다.
Code 14 라인 : 우리는 "guruException"을 인쇄하고 있습니다.
코드를 실행하면 다음과 같은 출력이 표시됩니다.
출력:
- /by XNUMX으로 산술 예외가 발생하고 이는 "guruException" 변수를 사용하여 출력에 인쇄됩니다.
3. 수입
- 앞에서 했던 것처럼 다른 파일 내용을 JSP 페이지로 가져올 수 있습니다. JSP 포함 작업.
- 여기에도 포함할 수 있습니다. URL 그러면 해당 페이지에 내용이 표시됩니다.
구문 :
<c:importvar="" uri="">
여기서 var는 파일 이름/uri를 보관하는 식별자인 변수 이름입니다. uri는 상대 파일 이름 또는 uriname입니다.
coretag_jsp31.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!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=ISO-8859-1">
<title>Core Tag JSP 31</title>
</head>
<body>
<c:import var="displayfile" url="coretag_jsp32.jsp">
</c:import>
<c:out value="${displayfile}"/>
</body>
</html>
Coretag_jsp32.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<a>The file is diplayed after importing</a>
</body>
</html>
코드 설명:
Coretag_jsp31.jsp
Code 3 라인 : 이 taglib 접두사는 모든 태그에 필요하며 추가된 접두사는 'c'이므로 모든 코어 태그의 접두사로 사용할 수 있습니다.
Code 11-12행: 여기서는 가져오기 태그를 사용하여 coretag_jsp32.jsp 파일을 이 파일로 가져옵니다.
Code Line13 : 여기서는 out 태그를 사용하여 coretag_jsp32.jsp 파일을 인쇄하고 있습니다.
위 코드를 실행하면 다음과 같은 출력이 나옵니다.
출력:
- Coretag_jsp32는 이 파일을 coretag_jsp31.jsp로 가져왔으므로 출력에 인쇄됩니다.
4. 각
- 일련의 명령문에서 요소 수를 반복하는 데 사용됩니다.
- 그것은 다음과 같습니다 Java forloop.
구문 :
<c:forEach var="" begin="" end="">
- 여기서 var는 카운터 이름을 보유할 변수 이름을 나타냅니다.
- Begin은 카운터 시작 값을 나타냅니다.
- End는 최종 값을 나타냅니다.
예:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!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=ISO-8859-1">
<title>Core Tag JSP4</title>
</head>
<body>
<c:forEach var="gurucount" begin="5" end="10">
<c:out value="${gurucount}"/>
</c:forEach>
</body>
</html>
코드 설명:
Code 3 라인 : 이 taglib 접두사는 모든 태그에 필요하며 추가된 접두사는 'c'이므로 모든 코어 태그의 접두사로 사용할 수 있습니다.
Code 11-13행: 여기서 우리는 변수 이름이 "gurucount"인 "forEach" 루프를 사용하는데, 이 루프의 시작은 5이고 끝은 10입니다. 우리는 5에서 10까지 시작하는 숫자를 갖는 변수 gurucount를 출력하고 있습니다.
코드를 실행하면 다음과 같은 출력이 나옵니다.
출력:
- 우리가 얻는 출력은 5에서 10까지입니다.
5. 만약
- 사용됩니다 지원 조건.
- 태그를 사용하여 이를 기반으로 조건이 참인지 아닌지 테스트하는 경우 코드 블록이 실행됩니다.
구문 :
<c:if test="${condition}></c:if>
여기서 조건이 true이면 일련의 명령문이 실행됩니다.
예:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!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=ISO-8859-1">
<title>Core Tag JSP5</title>
</head>
<body>
<c:set var="count" value="100"/>
<c:if test="${count == 100}">
<c:out value="The count is 100"/>
</c:if>
</body>
</html>
코드 설명:
Code 3 라인 : 이 taglib 접두사는 모든 태그에 필요하며 추가된 접두사는 'c'이므로 모든 코어 태그의 접두사로 사용할 수 있습니다.
Code 11 라인 : 여기서는 count라는 변수를 100으로 설정합니다.
Code 12-14행: 여기서 우리는 카운트가 100과 같은지 확인하는 "if 조건"을 사용합니다. 카운트가 100과 같으면 "카운트는 100입니다."라는 출력을 얻습니다.
위 코드를 실행하면 다음과 같은 출력이 나옵니다.
출력:
- "if" 조건이 true이므로 "The count is 100"이 출력됩니다.
6. 리디렉션
- 현재 페이지를 다른 페이지로 리디렉션하는 데 사용됩니다. URL 상대적인 것을 제공함으로써 URL 이 태그의 일부입니다.
- 문맥 상대적 지원을 제공합니다. URLs
구문 :
<c:redirect url="" context=""/>
여기서 url은 리디렉션되어야 하는 상대 URL과 로컬 웹 애플리케이션의 컨텍스트 이름입니다.
예:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!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=ISO-8859-1">
<title>Core Tag JSP6</title>
</head>
<body>
<c:redirect url="/"/>
</body>
</html>
코드 설명:
Code 3 라인 : 이 taglib 접두사는 모든 태그에 필요하며 추가된 접두사는 'c'이므로 모든 코어 태그의 접두사로 사용할 수 있습니다.
Code 11 라인 : 여기에서는 URL 이름을 지정하는 "리디렉션 태그"를 사용하고 해당 페이지를 클릭하면 리디렉션을 위해 제공된 사이트로 리디렉션됩니다.
위 코드를 실행하면 다음과 같은 출력이 나옵니다.
출력:
- coretag_jsp99.jsp에 의해 리디렉션되는 출력 guru6.com URL을 얻습니다.
JSTL 사용자 정의 태그
- 사용자 정의입니다 JSP 언어 요소.
- JSP가 서블릿으로 변환되면 사용자 정의 태그는 객체에 대한 작업을 수행하는 클래스로 변환되고 태그 핸들러로 호출됩니다.
- 서블릿이 실행될 때 해당 작업은 웹 컨테이너에 의해 호출됩니다.
- 사용자 정의 사용자 정의 태그를 생성하려면 SimpleTagSupport를 확장할 태그 핸들러를 생성하고 doTag() 메서드를 재정의해야 합니다.
- TLD의 클래스 파일을 매핑해야 하는 TLD를 생성해야 합니다.
JSP 사용자 정의 태그의 장점
JSP에서 사용자 정의 태그의 장점은 다음과 같습니다.
- 가지고 다닐 수 있는: 태그 라이브러리에 설명된 동작은 모든 JSP 컨테이너에서 사용할 수 있어야 합니다.
- 간단한 : 정교하지 않은 사용자는 이 메커니즘을 이해하고 사용할 수 있어야 합니다. JSP 기능 공급업체는 사용자에게 액션으로 쉽게 사용할 수 있도록 해야 합니다.
- 나타내는: 이 메커니즘은 중첩된 동작, 동작 본문 내의 스크립팅 요소, 스크립팅 변수의 생성, 사용 및 업데이트를 포함한 광범위한 동작을 지원해야 합니다.
- 다양한 스크립팅 언어에서 사용 가능: 현재 JSP 사양은 스크립트에 대한 의미론만 정의하고 있지만 Java 프로그래밍 언어가 아닌 다른 스크립팅 언어의 가능성을 열어두고 싶습니다.
- 기존 개념과 기계를 기반으로 구축: 우리는 다른 곳에 존재하는 것을 재창조하고 싶지 않습니다. 또한, 우리는 예측할 수 있는 한 미래의 갈등을 피하고 싶습니다.
구문 :
우리가 테스트를 만들고 있다고 가정해 봅시다.Guru 태그를 사용하려면 doTag() 메서드를 재정의하는 taghandlertestTag 클래스를 사용할 수 있습니다.
<ex:testGuru/> Class testTag extends SimpleTagSupport{ public void doTag()}
또한 이 testTag 클래스를 TLD(태그 라이브러리)에 매핑해야 합니다. Descript또는) JSP 컨테이너가 자동으로 맵을 생성합니다.ping 클래스 파일과 TLD 파일에 언급된 URI 사이의 관계입니다.
JSP 태그 인터페이스
- 이 클래스는 SimpleTagSupport 클래스를 확장해야 합니다.
- 이 클래스는 SimpleTagSupport 클래스의 일부인 doTag() 메서드를 재정의해야 합니다(재정의는 상위 클래스에서 상속되는 메서드입니다).
- 이 인터페이스는 JSPTag 인터페이스의 하위 인터페이스입니다.
- 태그의 시작과 끝에서 수행할 메소드를 제공합니다.
- 또한 이 클래스를 TLD, 즉 태그 라이브러리 설명자에 매핑해야 합니다.
우리는 아래 예에서 고려하고 있습니다
태그 인터페이스 방식
- doTag()는 태그에 대한 내용을 갖도록 재정의해야 하는 메서드입니다.
- getJSPContext()를 사용하여 현재 JSP 컨텍스트를 사용합니다.
예:
Customtag_jsp1.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="ex" uri="WEB-INF/custom.tld"%>
<!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=ISO-8859-1">
<title>Custom Tag</title>
</head>
<body>
<ex:guruTag/>
</body>
</html>
Custom.tld
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>2.0</jsp-version>
<short-name>Test TLD</short-name>
<tag>
<name>guruTag</name>
<tag-class>demotest.guruTag</tag-class>
<body-content>empty</body-content>
</tag>
</taglib>
guruTag.java(태그 핸들러)
package demotest; import javax.servlet.jsp.tagext.*; import javax.servlet.jsp.*; import java.io.*; public class guruTag extends SimpleTagSupport{ public void doTag() throws JspException,IOException { JspWriter out = getJspContext().getOut(); out.println("Guru Tag"); } }
코드 설명:
guruTag.java(태그 핸들러)
Code 6 라인 :guruTag 클래스는 javax.servlet.JSP jar에 있는 SimpleTagSupport 클래스를 확장합니다.
Code 7 라인 : 여기서는 JspException 및 IOException을 발생시키는 doTag() 메서드를 재정의합니다.
Code 9-10행: 이 방법에서는 코드가 호출될 사용자 정의 태그에 삽입됩니다. 우리는 JSP 객체를 사용합니다.Writer그러면 "가 출력됩니다.Guru 낮."
Custom.tld
Code 6 라인 : 여기서 사용자 정의 태그의 이름은 "guruTag"입니다.
Code 7 라인 :태그 클래스는 taghandlerclass, 즉 guruTag.java입니다. 파일 위치의 디렉터리 경로를 포함하는 처리기 파일의 전체 경로를 사용합니다.
Customtag_jsp1.jsp
Code 라인 3:이 taglib 접두사는 모든 태그에 필요하며 추가된 접두사는 'ex'이므로 모든 코어 태그의 접두사로 사용할 수 있으며 uri는 태그 핸들러를 매핑하는 custom.tld입니다.
Code 11 라인 : 여기서는 핸들러 클래스 doTag() 메소드를 호출하고 그 안에 있는 코드가 실행되는 사용자 정의 태그 "guruTag"를 정의합니다.
위 코드를 실행하면 다음과 같은 출력이 나옵니다.
출력:
- 출력 결과는 다음과 같습니다.GuruguruTag.java의 TagHandler는 doTag() 메서드를 오버라이드하고 "를 출력합니다.Guru 출력으로 "태그"를 사용합니다.







