JSTL (JSP Standard Tag Library) Урок: Core & Примери за персонализирани етикети

Съдържание:

Anonim

JSTL е стандартна библиотека от маркери на JSP. Тук ще видим как използването на различни JSTL тагове ще улесни JSP кодирането.

В този урок ще научите -

  • Какво е JSTL
  • JSTL ядро
  • JSP персонализирани маркери

Какво е JSTL?

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

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

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

JSTL ядро

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

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

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

Синтаксис :

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

Тук,

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

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

1. Аут:

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

Синтаксис:

  • Тук стойността представлява информация за изхода и е задължителна
  • По подразбиране е неуспех за извеждане на информация и не е задължителен
  • escapeXML - Вярно е, ако избяга от XML символи.

Пример:

Coretag_jsp1.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Основен маркер JSP1 

Обяснение на кода:

Кодов ред 3: Този префикс taglib е задължителен за всички тагове, а добавеният префикс е „c“. Следователно, той може да се използва като префикс за всички ключови тагове.

Код ред 12: Тук използваме coretag out с префикс "c" и този out ще отпечата стойността в маркера на израза. Следователно изходът ще бъде име

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

Изход:

  • Получаваме стойността като име от основния таг „out“, който ще се отпечата в изходния поток.

2. Улов

  • Той улавя всяко изключение, което може да се хвърли, което се случва в тялото и се показва като изход.
  • Използва се за обработка на грешките и за тяхното улавяне.

Синтаксис:

Тук 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"%> Основен етикет JSP2 <% int num = 10/0; %>Изключението е: $ {guruException}

Обяснение на кода:

Кодов ред 3: Този префикс taglib се изисква за всички тагове, а добавеният префикс е „c“, поради което може да се използва като префикс за всички ключови тагове

Кодов ред 11-13: Coretag catch се използва за улавяне на изключението и отпечатване на изключението. Тук изключението се повдига, когато 10/0 и това изключение има име "guruException".

Кодов ред 14: Отпечатваме "guruException".

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

Изход:

  • Получаваме аритметично изключение като / по нула и то се отпечатва в изхода с помощта на променлива "guruException"

3. Внос

  • Можем да импортираме друго съдържание на файл в JSP страница, както направихме в JSP включва действие.
  • Тук можем да включим и URL и съдържанието ще се показва на тази страница.

Синтаксис:

Тук 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"%> Основен етикет JSP 31 

Coretag_jsp32.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Поставете заглавието тук  Файлът се показва след импортиране 

Обяснение на кода:

Coretag_jsp31.jsp

Кодов ред 3: Този префикс taglib се изисква за всички тагове, а добавеният префикс е „c“, поради което може да се използва като префикс за всички ключови тагове

Кодов ред 11-12: Тук ние импортираме файл coretag_jsp32.jsp в този файл с помощта на импортиращ маркер

Код Line13: Тук отпечатваме файла coretag_jsp32.jsp с помощта на етикет out.

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

Изход:

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

4. forEach

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

Синтаксис:

  • Тук 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"%> Основен етикет JSP4 

Обяснение на кода:

Кодов ред 3: Този префикс taglib се изисква за всички тагове, а добавеният префикс е „c“, поради което може да се използва като префикс за всички ключови тагове

Кодов ред 11-13: Тук използваме цикъл "forEach", където името на променливата е "gurucount", което е започнало да се брои като 5, а крайното като 10. Отпечатваме променливата gurucount, която има числа, започващи от 5 до 10.

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

Изход:

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

5. Ако

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

Синтаксис:

<% @ 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"%> Основен етикет JSP5 

Обяснение на кода:

Кодов ред 3: Този префикс taglib се изисква за всички тагове, а добавеният префикс е „c“, поради което може да се използва като префикс за всички ключови тагове

Кодов ред 11: Тук задаваме променливата, наречена count, на 100

Кодов ред 12-14: Тук използваме "if условие", където проверяваме дали броят е равен на 100. Той е равен на 100, след което получаваме изхода като "Броят е 100".

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

Изход:

  • Тъй като условието "ако" е вярно, получаваме изхода като "Броят е 100".

6. пренасочване:

  • Използва се за пренасочване на текущата страница към друг URL чрез предоставяне на относителния URL на този маркер.
  • Той поддържа контекстно относителни URL адреси

Синтаксис:

Тук 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"%> Основен етикет JSP6 

Обяснение на кода:

Кодов ред 3: Този префикс taglib се изисква за всички тагове, а добавеният префикс е „c“, поради което може да се използва като префикс за всички ключови тагове

Код ред 11: Тук използваме "пренасочващ маркер", където указваме името на URL адреса и когато щракнем върху тази страница, той пренасочва към сайта, който е даден за пренасочване.

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

Изход:

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

JSP персонализирани маркери

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

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

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

Синтаксис:

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

Class testTag extends SimpleTagSupport{ public void doTag()}

Също така, ще трябва да картографираме този клас testTag в TLD (Tag Library Descriptor), тъй като JSP контейнерът автоматично ще създаде картографиране между файла на класа и 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"%> Персонализиран маркер <напр .: guruTag />

Custom.tld

 1.0  2.0  Тествайте TLD  guruTag  demotest.guruTag  празно 

guruTag.java (TagHandler)

демотест на пакета;импортиране на javax.servlet.jsp.tagext. *;импортиране на javax.servlet.jsp. *;импортиране на java.io. *;публичен клас guruTag разширява SimpleTagSupport {public void doTag () хвърля JspException, IOException{JspWriter out = getJspContext (). GetOut ();out.println ("Етикет на гуру");}}

Обяснение на кода:

guruTag.java (TagHandler)

Код ред 6: класът guruTag разширява класа SimpleTagSupport, който присъства в javax.servlet.JSP буркан

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

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

Custom.tld

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

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

Customtag_jsp1.jsp

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

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

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

Изход:

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

Резюме:

  • В този раздел научихме за стандартната библиотека на JSP тагове, в която направихме основни маркери и персонализирани маркери.
  • Основните маркери включват за, ако, пренасочване, импортиране, прихващане тагове, които са били маркери, използвани за основни цели в JSP.
  • Също така направихме персонализирани маркери, в които можем да дефинираме маркерите и да ги използваме в JSP