JSTL (JSP Standard Tag Library)

⚡ Умно обобщение

JSP Standard Tag Library (JSTL) е колекция от персонализирани JSP библиотеки с тагове, които предоставят обща функционалност за уеб разработка, като итерация, условна логика, обработка на изключения, импортиране и пренасочване, което прави JSP кода по-чист, преносим и по-лесен за четене от скриптлетите.

  • ???? ️ Дефиниция на JSTL: Стандартна колекция от персонализирани JSP библиотеки с тагове за често срещани уеб задачи.
  • Предимства: Създава чист, преносим код, който е по-лесен за четене от хора и инструменти, отколкото скриптлетите.
  • 🔧 Основни тагове: out, catch, import, forEach, if и redirect обработват изхода, грешките, включванията, циклите и условията.
  • 🔁 Итерация и логика: forEach преглежда диапазони, докато if и catch добавят условна обработка и обработка на изключения.
  • 🛠️ Персонализирани етикети: Създайте потребителски дефинирани тагове чрез разширяване на SimpleTagSupport, презаписване на doTag() и mapping в домейн от надземно ниво (TLD).
  • 📄 Интерфейс на етикета: Библиотеката с етикети Descriptили (TLD) съпоставя имената на тагове с техните класове обработчици за JSP контейнера.

JSTL - JSP стандартна библиотека с тагове

В какво е JSTL Java?

JSTL стойки за Java сървърни страници стандартна библиотека с етикети и е колекция от персонализирани библиотеки с JSP етикети, които предоставят обща функционалност за уеб разработка. JSTL е стандартна библиотека с етикети на JSP.

Предимства на JSTL

По-долу са предимствата на JSTL:

  1. Стандартен етикет: Предоставя богат слой от преносима функционалност на JSP страници. Лесно е за разработчика да разбере кода.
  2. Code Подредено и чисто: Тъй като скриптовете объркват програмиста, използването на JSTL прави кода чист и чист.
  3. автоматичен JavaПоддръжка на beansInterospection: Има предимство на JSTL пред JSP скриптлети. Дръжки на езика на JSTL Expression JavaBean код много лесно. Не е необходимо да намаляваме обектите, които са били извлечени като атрибути с обхват. Използването на код на JSP скриптове ще бъде сложно и JSTL опрости тази цел.
  4. По-лесно за четене от хората: JSTL е базиран на XML, който е много подобен на HTML. Следователно е лесно за разбиране от разработчиците.
  5. По-лесно за разбиране от компютри: Инструменти като Dreamweaver и заглавната страница генерират все повече и повече HTML код. HTML инструментите вършат чудесна работа при форматиране на HTML код. HTML кодът се смесва с кода на скрипта. Тъй като JSTL се изразява като тагове, съвместими с XML, е лесно за генериране на HTML да анализира JSTL кода в документа.

JSTL етикети

Основните тагове са най-често използваните тагове в JSP. Те осигуряват подкрепа за

  • Повторение
  • Условна логика
  • Хвани изключение
  • url напред
  • Пренасочване и т.н.

За да използваме основни тагове, първо трябва да дефинираме библиотека с тагове, а по-долу е синтаксисът за включване на библиотека с тагове.

Синтаксис :

<%@ taglib prefix="c" uri=http://java.sun.com/jsp/jstl/core%>

Тук

  • prefix може да се използва за дефиниране на всички основни тагове и
  • uri е библиотеката на taglib, от която се импортира

Нека видим някои от основните тагове в детайли,

1. Навън

  • Резултатът от израза се показва в изходния таг
  • Той може директно да избягва XML таговете. Следователно те не се оценяват като действителни тагове

Синтаксис:

<c:out value="" default="" escapeXML="">
  • Тук стойността представлява информация към изхода и е задължителна
  • По подразбиране е невъзможност за извеждане на информация и не е задължително
  • escapeXML – Вярно е, ако екранира XML символи.

Пример:

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: Тук използваме coretag out с префикса „c“ и този out ще отпечата стойността в изразния таг. Следователно изходът ще бъде име

Когато изпълните горния код, получавате следния изход:

Основни тагове на JSTL – Излезли

Изход:

  • Получаваме стойността като име от основния таг „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 се използва за улавяне на изключението и отпечатване на изключението. Тук изключението се повдига, когато 10/0 и това изключение има име „guruException“.

Code Ред 14: Отпечатваме „guruException“.

Когато изпълните кода, ще получите следния изход:

Основни тагове на JSTL – уловка

Изход:

  • Получаваме аритметично изключение като /по нула и то се отпечатва в изхода с помощта на променлива „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 Ред13: Тук отпечатваме файла coretag_jsp32.jsp, използвайки out tag.

Когато изпълните горния код, получавате следния изход.

JSTL основни тагове – импортиране

Изход:

  • Coretag_jsp32 се отпечатва в изхода, тъй като този файл е импортиран в coretag_jsp31.jsp.

4. forEach

  • Използва се за повторение на броя елементи в поредица от изрази.
  • Същото е като a Java форлуп.

Синтаксис:

<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: Тук използваме цикъл „forEach“, където името на променливата е „gurucount“, което е започнало да брои като 5 и завършва като 10. Отпечатваме променливата gurucount, която има числа, започващи от 5 до 10.

Когато изпълните кода, получавате следния изход

JSTL основни тагове - forEach

Изход:

  • Резултатът, който получаваме, започва от 5 до 10.

5. ако

  • Използва се за Тестване условия.
  • Ако маркерът се използва за тестване на условие дали е вярно или не въз основа на това, блокът от код ще бъде изпълнен.

Синтаксис:

<c:if test="${condition}></c:if>

Тук, ако условието е вярно, тогава се изпълняват серии от оператори.

Пример:

<%@ 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. Той е равен на 100, тогава получаваме изхода като „Броят е 100“.

Когато изпълните горния код, получавате следния изход

JSTL основни тагове - Ако

Изход:

  • Тъй като условието „ако“ е вярно, получаваме изхода като „Броят е 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 името и когато щракнем върху тази страница, тя пренасочва към сайт, който е даден за пренасочване.

Когато изпълните горния код, получавате следния изход;

JSTL основни тагове – пренасочване

Изход:

  • Получаваме изходния URL адрес на guru99.com, който се пренасочва от coretag_jsp6.jsp

Персонализирани етикети на JSTL

  • Това е дефинирано от потребителя JSP езиков елемент.
  • Когато JSP се транслира в сървлет, персонализираният етикет се преобразува в клас, който предприема действие върху обект и се извиква като манипулатор на тагове.
  • Тези действия, когато сървлетът се изпълнява, се извикват от уеб контейнера.
  • За да създадем персонализиран етикет, дефиниран от потребителя, трябва да създадем манипулатор на тагове, който ще разширява SimpleTagSupport и трябва да замени метода doTag().
  • Трябва да създадем TLD, където трябва да картографираме файла на класа в TLD.

Предимства на персонализирани тагове в JSP

Ето предимствата на персонализираните тагове в JSP:

  • Portable: Действие, описано в библиотека с етикети, трябва да може да се използва във всеки JSP контейнер.
  • Simple: Неопитните потребители трябва да могат да разберат и използват този механизъм. Доставчиците на JSP функционалност трябва да намерят лесно да я направят достъпна за потребителите като действия.
  • Експресивен: Механизмът трябва да поддържа широк набор от действия, включително вложени действия, скриптови елементи в телата на действие, създаване, използване и актуализиране на скриптови променливи.
  • Използва се от различни скриптови езици: Въпреки че JSP спецификацията в момента дефинира само семантиката за скриптове в Java език за програмиране, искаме да оставим отворена възможността за други скриптови езици.
  • Изграден върху съществуващи концепции и машини: Не искаме да преоткриваме това, което съществува другаде. Освен това искаме да избегнем бъдещи конфликти, когато можем да ги предвидим

Синтаксис:

Помислете, че създаваме тестGuru таг и можем да използваме класа taghandlertestTag, който ще презапише метода doTag().

<ex:testGuru/>
Class testTag extends SimpleTagSupport{ public void doTag()}

Освен това ще трябва да картографираме този клас testTag в TLD (Библиотека с етикети Descriptили) тъй като JSP контейнерът автоматично ще създаде картаping между файла с класа и uri, който е споменат във файла с TLD.

JSP интерфейс за етикети

  • Този клас ще трябва да разшири класа SimpleTagSupport.
  • Този клас ще трябва да замени метода doTag(), който е част от класа SimpleTagSupport (замяната е метод, който е наследен от родителския клас).
  • Този интерфейс е под интерфейс на JSPTag интерфейс.
  • Той предоставя методи за изпълнение в началото и края на етикета.
  • Освен това трябва да картографираме този клас в TLD, т.е. дескриптор на библиотека с етикети

Разглеждаме в примера по-долу

Метод на интерфейса на етикета

  • doTag() е метод, който трябва да заменим и който ще има съдържанието на етикета.
  • Взема текущия JSP контекст с помощта на getJSPContext()

Пример:

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(TagHandler)

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(TagHandler)

Code Ред 6:класът guruTag разширява класа SimpleTagSupport, който присъства в javax.servlet.JSP jar

Code Ред 7: Тук заместваме метода doTag(), който хвърля JspException и IOException.

Code Ред 9-10: В този метод кодът ще бъде вграден в персонализиран таг, който ще бъде извикан. Вземаме обект на JspWriterи това ще отпечата „Guru ден."

Custom.tld

Code Ред 6: Тук името на персонализирания етикет е „guruTag“.

Code Ред 7:Класът на етикета е taghandlerclass, т.е. guruTag.java. Заема пълния път на манипулиращия файл, който включва пътя на директорията на местоположението на файла.

Customtag_jsp1.jsp

Code Line 3: Този префикс на taglib е задължителен за всички тагове и добавеният префикс е „ex“, следователно може да се използва като префикс за всички основни тагове и uri е custom.tld, който картографира манипулатора на тагове.

Code Ред 11: Тук дефинираме персонализирания етикет „guruTag“, който ще извика метода doTag() на класа на манипулатора и кодът в него ще бъде изпълнен.

Когато изпълните горния код, получавате следния изход

JSP интерфейс за етикети

Изход:

  • Получаваме изхода като „Guru„Tag“ от guruTag.java, т.е. TagHandler, който отменя метода doTag() и който отпечатва „Guru „Етикет“ като изход.

Въпроси и Отговори

JSTL има пет групи тагове: ядро, форматиране (I18N), SQL, XML и функции. Основните тагове обработват итерациите и логиката, докато таговете за форматиране, SQL, XML и функции обхващат локализация, бази данни, XML и помощни програми за низове.

JSTL използва четливи XML-подобни тагове за логика, докато скриптлетите вграждат сурови данни. Java в JSP. JSTL създава по-чисти, по-лесни за поддръжка страници и избягва смесването Java код с HTML маркиране.

TLD е XML файл, който съпоставя имената на персонализирани тагове с техните класове обработчици. JSP контейнерът чете TLD, за да разбере кои Java клас, който да се изпълни за всеки персонализиран етикет.

AI асистентите могат да генерират JSTL тагове, да пишат персонализирани манипулатори на тагове, да конвертират скриптлети в JSTL и да обясняват езика за изрази. Те ускоряват JSP разработката, докато разработчиците преглеждат генерирания код.

Да. Инструментите с изкуствен интелект могат да анализират скриптлет код и да го пренаписват, използвайки еквивалентни JSTL основни тагове и език за изрази, hel.ping модернизирайте наследените JSP страници, като същевременно запазите функционалността.

Обобщете тази публикация с: