JSTL (JSP Standard Tag Library) Samouczek: Rdzeń & Przykłady tagów niestandardowych

Spisie treści:

Anonim

JSTL to standardowa biblioteka znaczników JSP. Tutaj zobaczymy, jak użycie różnych tagów JSTL ułatwi kodowanie JSP.

W tym samouczku nauczysz się:

  • Co to jest JSTL
  • JSTL Core
  • Niestandardowe znaczniki JSP

Co to jest JSTL?

JSTL to skrót od standardowej biblioteki znaczników stron serwera Java i jest to zbiór niestandardowych bibliotek znaczników JSP, które zapewniają typową funkcjonalność tworzenia stron WWW.

Zalety JSTL

  1. Znacznik standardowy : zapewnia bogatą warstwę przenośnej funkcjonalności stron JSP. Zrozumienie kodu przez programistę jest łatwe.
  2. Czysty i schludny kod : Ponieważ rysunki dezorientują programistę, użycie JSTL sprawia, że ​​kod jest schludny i czysty.
  3. Obsługa automatycznej JavabeansInterospection : ma przewagę JSTL nad skryptletami JSP. Język JSTL Expression bardzo łatwo obsługuje kod JavaBean. Nie musimy obniżać obiektów, które zostały pobrane jako atrybuty o określonym zakresie. Używanie kodu skryptletów JSP będzie skomplikowane, a JSTL uprościło ten cel.
  4. Łatwiejsze do czytania dla ludzi : JSTL jest oparty na XML, który jest bardzo podobny do HTML. Dlatego programistom łatwo jest to zrozumieć.
  5. Łatwiejsze do zrozumienia dla komputerów : narzędzia takie jak Dreamweaver i strona główna generują coraz więcej kodu HTML. Narzędzia HTML świetnie radzą sobie z formatowaniem kodu HTML. Kod HTML jest mieszany z kodem scriplet. Ponieważ JSTL jest wyrażany jako znaczniki zgodne z XML, generowanie HTML może łatwo przeanalizować kod JSTL w dokumencie.

JSTL Core

Znaczniki podstawowe są najczęściej używanymi znacznikami na stronie JSP. Zapewniają wsparcie

  • Iteracja
  • Logika warunkowa
  • Złap wyjątek
  • adres URL do przodu
  • Przekierowanie itp.

Aby użyć znaczników podstawowych, musimy najpierw zdefiniować bibliotekę znaczników, a poniżej znajduje się składnia uwzględniająca bibliotekę znaczników.

Składnia:

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

Tutaj,

  • przedrostek może być użyty do zdefiniowania wszystkich głównych znaczników i
  • uri to biblioteka taglib, z której jest importowana

Przyjrzyjmy się szczegółowo niektórym z głównych tagów,

1. Na zewnątrz:

  • Wynik wyrażenia jest wyświetlany w tagu out
  • Może bezpośrednio uciec przed znacznikami XML. W związku z tym nie są oceniane jako rzeczywiste tagi

Składnia:

  • Tutaj wartość reprezentuje informacje na wyjściu i jest obowiązkowa
  • Domyślnie nie można wyprowadzać informacji i nie jest to obowiązkowe
  • escapeXML - Prawdą jest, jeśli wymyka się znakom XML.

Przykład:

Coretag_jsp1.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Główny tag JSP1 

Wyjaśnienie kodu:

Linia kodu 3: Ten prefiks taglib jest wymagany dla wszystkich tagów, a dodany przedrostek to „c”. W związku z tym może być używany jako przedrostek dla wszystkich znaczników rdzeniowych.

Linia kodu 12: Tutaj używamy coretag out z przedrostkiem "c", a to out wypisze wartość w znaczniku wyrażenia. Stąd wynik będzie nazwa

Po wykonaniu powyższego kodu otrzymasz następujące dane wyjściowe:

Wynik:

  • Otrzymujemy wartość jako nazwę z podstawowego znacznika „out”, który zostanie wydrukowany w strumieniu wyjściowym.

2. Złap

  • Przechwytuje każdy wyjątek do rzucania, który występuje w ciele i jest wyświetlany jako wyjście.
  • Służy do obsługi błędów i ich wyłapywania.

Składnia:

Tutaj var reprezentuje nazwę zmiennej, która będzie zawierać wyjątek do rzucania.

Przykład:

<% @ 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"%> Core Tag JSP2 <% int num = 10/0; %>Wyjątkiem jest: $ {guruException}

Wyjaśnienie kodu:

Linia kodu 3: Ten przedrostek taglib jest wymagany dla wszystkich tagów, a dodany przedrostek to „c”, dlatego może być używany jako przedrostek dla wszystkich znaczników podstawowych

Code Line 11-13: Coretag catch służy do przechwytywania wyjątku i drukowania wyjątku. Tutaj wyjątek jest zgłaszany, gdy 10/0 i ten wyjątek ma nazwę „guruException”.

Code Line 14: Drukujemy „guruException”.

Po wykonaniu kodu otrzymasz następujące dane wyjściowe:

Wynik:

  • Otrzymujemy wyjątek arytmetyczny jako / o zero i jest on wypisywany na wyjściu za pomocą zmiennej "guruException"

3. Import

  • Możemy zaimportować zawartość innego pliku do strony JSP, tak jak zrobiliśmy to w przypadku akcji dołączania JSP.
  • Tutaj możemy również dołączyć adres URL, a zawartość będzie wyświetlana na tej stronie.

Składnia:

Tutaj var jest nazwą zmiennej, która jest identyfikatorem, który będzie zawierał nazwę pliku / uri.

uri to względna nazwa pliku lub nazwa urin.

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"%> Core Tag JSP 31 

Coretag_jsp32.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Tutaj wstaw tytuł  Plik jest wyświetlany po zaimportowaniu 

Wyjaśnienie kodu:

Coretag_jsp31.jsp

Linia kodu 3: Ten przedrostek taglib jest wymagany dla wszystkich tagów, a dodany przedrostek to „c”, dlatego może być używany jako przedrostek dla wszystkich znaczników podstawowych

Linia kodu 11-12: Tutaj importujemy plik coretag_jsp32.jsp do tego pliku za pomocą znacznika importu

Code Line13: Tutaj drukujemy plik coretag_jsp32.jsp przy użyciu tagu out.

Po wykonaniu powyższego kodu otrzymasz następujące dane wyjściowe.

Wynik:

  • Coretag_jsp32 jest drukowany na wyjściu, ponieważ ten plik został zaimportowany w coretag_jsp31.jsp.

4. forEach

  • Służy do iteracji liczby elementów w serii instrukcji.
  • Działa tak samo jak pętla forloop w Javie.

Składnia:

  • Tutaj zmienna reprezentuje nazwę zmiennej, która będzie zawierała nazwę licznika
  • Początek reprezentuje wartość początkową licznika
  • Koniec będzie reprezentował jego wartość końcową

Przykład:

<% @ 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"%> Główny tag JSP4 

Wyjaśnienie kodu:

Linia kodu 3: Ten przedrostek taglib jest wymagany dla wszystkich tagów, a dodany przedrostek to „c”, dlatego może być używany jako przedrostek dla wszystkich znaczników podstawowych

Linia kodu 11-13: Tutaj używamy pętli "forEach", w której nazwa zmiennej to "gurucount", która zaczyna się od 5, a kończy na 10. Drukujemy zmienną gurucount, której numery zaczynają się od 5 do 10.

Podczas wykonywania kodu otrzymasz następujące dane wyjściowe

Wynik:

  • Wynik, który otrzymujemy, zaczyna się od 5 do 10.

5. Jeśli

  • Służy do testowania warunków.
  • Jeśli tag jest używany do testowania warunku na podstawie tego, czy jest on prawdziwy, czy nie, blok kodu zostanie wykonany.

Składnia:

<% @ 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"%> Główny tag JSP5 

Wyjaśnienie kodu:

Linia kodu 3: Ten przedrostek taglib jest wymagany dla wszystkich tagów, a dodany przedrostek to „c”, dlatego może być używany jako przedrostek dla wszystkich znaczników podstawowych

Linia kodu 11: Tutaj ustawiamy zmienną o nazwie count na 100

Linia kodu 12-14: Tutaj używamy warunku „if”, w którym sprawdzamy, czy liczba jest równa 100. Jest równa 100, a następnie otrzymujemy wynik jako „Liczba wynosi 100”.

Po wykonaniu powyższego kodu otrzymasz następujące dane wyjściowe

Wynik:

  • Ponieważ warunek „jeśli” jest prawdziwy, otrzymujemy wynik jako „Liczba wynosi 100”.

6. przekierowanie:

  • Służy do przekierowania bieżącej strony na inny adres URL poprzez podanie względnego adresu URL tego tagu.
  • Obsługuje kontekstowe adresy URL

Składnia:

Tutaj adres URL to względny adres URL, do którego ma zostać przekierowany i nazwa kontekstu lokalnej aplikacji internetowej.

Przykład:

<% @ 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"%> Główny tag JSP6 

Wyjaśnienie kodu:

Linia kodu 3: Ten przedrostek taglib jest wymagany dla wszystkich tagów, a dodany przedrostek to „c”, dlatego może być używany jako przedrostek dla wszystkich znaczników podstawowych

Linia kodu 11: Tutaj używamy „tagu przekierowania”, w którym podajemy nazwę adresu URL, a kiedy klikamy na tę stronę, przekierowuje ona do witryny, która została podana do przekierowania.

Kiedy wykonujesz powyższy kod, otrzymasz następujące dane wyjściowe;

Wynik:

  • Otrzymujemy wyjściowy adres URL guru99.com, który jest przekierowywany przez coretag_jsp6.jsp

Niestandardowe znaczniki JSP

  • Jest to zdefiniowany przez użytkownika element języka JSP.
  • Kiedy JSP jest tłumaczone na serwlet, niestandardowy znacznik jest konwertowany na klasę, która wykonuje akcję na obiekcie i jest nazywana operatorem znacznika.
  • Te akcje, gdy serwlet jest wykonywany, są wywoływane przez kontener WWW.
  • Aby utworzyć niestandardowy tag zdefiniowany przez użytkownika, musimy stworzyć procedurę obsługi tagu, która będzie rozszerzać SimpleTagSupport i przesłonić metodę doTag ().
  • Musimy utworzyć TLD, w którym musimy zmapować plik klasy w TLD.

Zalety niestandardowych tagów na stronie JSP:

  • Przenośny - akcja opisana w bibliotece znaczników musi być możliwa do użycia w każdym kontenerze JSP.
  • Prostota - niewykształceni użytkownicy muszą być w stanie zrozumieć i używać tego mechanizmu. Sprzedawcy funkcjonalności JSP muszą mieć możliwość łatwego udostępnienia spodni jako czynności.
  • Ekspresyjny - mechanizm musi obsługiwać szeroki zakres działań, w tym akcje zagnieżdżone, elementy skryptowe wewnątrz treści akcji, tworzenie, używanie i aktualizowanie zmiennych skryptowych.
  • Możliwość wykorzystania w różnych językach skryptowych - chociaż specyfikacja JSP obecnie definiuje tylko semantykę skryptów w języku programowania Java, chcemy pozostawić otwartą możliwość innych języków skryptowych.
  • Zbudowany w oparciu o istniejące koncepcje i maszyny - nie chcemy na nowo odkrywać tego, co istnieje gdzie indziej. Chcemy również unikać przyszłych konfliktów, gdy tylko możemy je przewidzieć

Składnia:

Załóżmy, że tworzymy tag testGuru i możemy użyć klasyetaghandlertestTag, która przesłania metodę doTag ().

Class testTag extends SimpleTagSupport{ public void doTag()}

Będziemy również musieli zmapować tę klasę testTag w TLD (Tag Library Descriptor), ponieważ kontener JSP automatycznie utworzy mapowanie między plikiem klasy a uri, które zostało wspomniane w pliku TLD.

Interfejs znaczników JSP

  • Ta klasa będzie musiała rozszerzyć klasę SimpleTagSupport.
  • Ta klasa będzie musiała przesłonić metodę doTag (), która jest częścią klasy SimpleTagSupport (przesłanianie jest metodą dziedziczoną z klasy nadrzędnej).
  • Ten interfejs jest podinterfejsem interfejsu JSPTag.
  • Zapewnia metody do wykonania na początku i na końcu tagu.
  • Musimy również zmapować tę klasę w TLD, tj. Deskryptorze biblioteki znaczników

Rozważamy w poniższym przykładzie

Metoda interfejsu znacznika

  • doTag () to metoda, którą musimy nadpisać, która będzie zawierała zawartość tagu.
  • Pobiera bieżący kontekst JSP za pomocą metody getJSPContext ()

Przykład:

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"%> Tag niestandardowy 

Custom.tld

 1.0  2.0  Przetestuj TLD  guruTag  demotest.guruTag  pusty 

guruTag.java (TagHandler)

pakiet demotest;import javax.servlet.jsp.tagext. *;import javax.servlet.jsp. *;import java.io. *;public class guruTag rozszerza SimpleTagSupport {public void doTag () zgłasza wyjątek JspException, IOException{JspWriter out = getJspContext (). GetOut ();out.println ("Znacznik Guru");}}

Wyjaśnienie kodu:

guruTag.java (TagHandler)

Linia kodu 6: klasa guruTag rozszerza klasę SimpleTagSupport obecną w pliku javax.servlet.JSP jar

Linia kodu 7: Tutaj zastępujemy metodę doTag (), która zgłasza JspException i IOException.

Linia kodu 9-10: W tej metodzie kod zostanie osadzony w niestandardowym tagu, który zostanie wywołany. Bierzemy obiekt JspWriter, który wypisze „Guru Tag”.

Custom.tld

Linia kodu 6: Tutaj nazwa niestandardowego tagu to „guruTag”.

Code Line 7: Tag to taghandlerclass, czyli guruTag.java. Zajmuje pełną ścieżkę do pliku obsługi, która zawiera ścieżkę do katalogu lokalizacji pliku.

Customtag_jsp1.jsp

Linia kodu 3 : Ten przedrostek taglib jest wymagany dla wszystkich tagów, a dodany przedrostek to „ex”, dlatego może być używany jako przedrostek dla wszystkich znaczników rdzeniowych, a uri to custom.tld, który odwzorowuje obsługę znaczników.

Linia kodu 11: Tutaj definiujemy niestandardowy znacznik „guruTag”, który wywoła metodę doTag () klasy obsługi i zostanie wykonany kod w niej zawarty.

Po wykonaniu powyższego kodu otrzymasz następujące dane wyjściowe

Wynik:

  • Otrzymujemy wynik jako „GuruTag” z guruTag.java tj. TagHandler, który przesłania metodę doTag () i wypisuje „Guru Tag” jako wyjście.

Podsumowanie:

  • W tej sekcji dowiedzieliśmy się o standardowej bibliotece znaczników JSP, w której wykonaliśmy znaczniki podstawowe i niestandardowe.
  • Główne tagi obejmują tagi for, if, redirect, import, catch, które były używane do podstawowych celów w JSP.
  • Zrobiliśmy również niestandardowe tagi, w których możemy zdefiniować tagi i używać ich w JSP