Przegląd elementów składni JSP
Po pierwsze, aby wyjaśnić sprawę, oto krótki przegląd elementów składni JSP :
- Dyrektywy : przekazują informacje dotyczące całej strony JSP.
- Elementy skryptów : są to elementy kodowania Java, takie jak deklaracje, wyrażenia, skrypty i komentarze.
- Obiekty i zakresy : obiekty JSP mogą być tworzone jawnie lub niejawnie i są dostępne w ramach danego zakresu, na przykład z dowolnego miejsca na stronie JSP lub w sesji.
- Działania : tworzą obiekty lub wpływają na strumień wyjściowy w odpowiedzi JSP (lub oba).
Jak zawartość jest dołączana do strony JSP
Istnieje kilka mechanizmów ponownego wykorzystania treści w pliku JSP.
Następujące 4 mechanizmy włączania treści do strony JSP można sklasyfikować jako bezpośrednie ponowne wykorzystanie :
(w przypadku pierwszych 3 mechanizmów cytowanie z „Serwletów Head First i JSP” )
1) Dyrektywa include :
<%@ include file="header.html" %>
Statyczny : dodaje zawartość z wartości atrybutu pliku do bieżącej strony w czasie tłumaczenia . Dyrektywa była pierwotnie przeznaczona dla szablonów układów statycznych, takich jak nagłówki HTML.
2) Akcja <jsp:include>
standardowa :
<jsp:include page="header.jsp" />
Dynamiczny : dodaje zawartość z wartości atrybutu strony do bieżącej strony w momencie żądania . Był przeznaczony bardziej dla dynamicznej zawartości pochodzącej z JSP.
3) Znacznik <c:import>
JSTL:
<c:import url=”http://www.example.com/foo/bar.html” />
Dynamiczny : dodaje treść z wartości atrybutu adresu URL do bieżącej strony w momencie żądania . Działa podobnie
<jsp:include>
, ale jest bardziej wydajny i elastyczny: w przeciwieństwie do pozostałych dwóch obejmuje<c:import>
adres URL może pochodzić spoza kontenera internetowego !
4) Preludia i kody:
Statyczne : preludia i kody można stosować tylko na początku i na końcu strony .
Można niejawnie dołączyć preludia (zwane także nagłówkami) i kodami
(zwane także stopkami) dla grupy stron JSP, dodając
elementy <include-prelude>
i <include-coda>
odpowiednio w <jsp-property-group>
elemencie w deskryptorze wdrażania aplikacji sieci Web web.xml . Przeczytaj więcej tutaj:
• Konfigurowanie niejawnych dołączeń na początku i na końcu stron JSP
• Definiowanie niejawnych dołączeń
Plik znaczników to pośrednia metoda ponownego wykorzystania treści, czyli sposób hermetyzacji treści do ponownego wykorzystania . Tag pliku jest plik źródłowy, który zawiera fragment kodu JSP, że jest wielokrotnego użytku jako A znacznika niestandardowego .
CEL dołączeń i plików znaczników jest inny.
Plik tagów (koncepcja wprowadzona w JSP 2.0) jest jedną z opcji tworzenia niestandardowych tagów . To szybszy i łatwiejszy sposób tworzenia niestandardowych tagów .
Niestandardowe znaczniki , nazywane również rozszerzeniami znaczników, to elementy JSP, które umożliwiają wstawianie niestandardowej logiki i danych wyjściowych dostarczanych przez inne komponenty Java do stron JSP. Logika dostarczana przez tag niestandardowy jest implementowana przez obiekt Java znany jako obsługi znaczników .
Niektóre przykłady zadań, które mogą być wykonywane przez niestandardowe znaczniki, obejmują operacje na obiektach niejawnych, przetwarzanie formularzy, uzyskiwanie dostępu do baz danych i innych usług przedsiębiorstwa, takich jak poczta e-mail i katalogi, oraz wdrażanie kontroli przepływu.
Odnośnie twojej edycji
Być może w twoim przykładzie (w twojej edycji ) nie ma różnicy między używaniem bezpośredniego dołączania a plikiem znaczników. Ale tagi niestandardowe mają bogaty zestaw funkcji . Mogą
Dostosuj się za pomocą atrybutów przekazanych ze strony wywołującej.
Przekaż zmienne z powrotem do wywołującej strony.
Uzyskaj dostęp do wszystkich obiektów dostępnych na stronach JSP.
Porozumcie się ze sobą. Można utworzyć i zainicjować komponent JavaBeans, utworzyć publiczną zmienną EL, która odwołuje się do tego komponentu bean w jednym znaczniku, a następnie użyć tego komponentu w innym znaczniku.
Być zagnieżdżone w sobie i komunikować się za pomocą prywatnych zmiennych.
Przeczytaj również z „Pro JSP 2”: Zrozumienie niestandardowych znaczników JSP .
Przydatna lektura.
Wniosek
Używaj odpowiednich narzędzi do każdego zadania.
Użyj plików znaczników jako szybkiego i łatwego sposobu tworzenia niestandardowych znaczników, które mogą pomóc w hermetyzowaniu treści wielokrotnego użytku .
Jeśli chodzi o zawartość dołączaną do strony JSP (cytat z tego miejsca ):
- Użyj dyrektywy include, jeśli plik zmienia się rzadko . To najszybszy mechanizm. Jeśli Twój kontener nie wykrywa automatycznie zmian, możesz wymusić ich zastosowanie, usuwając plik klas strony głównej.
- Użyj akcji dołączania tylko dla treści, które często się zmieniają , i nie można zdecydować, która strona ma zostać uwzględniona, dopóki strona główna nie zostanie zażądana.
*
) w dyrektywie include.<jsp:include>
jest standardem zawierającym akcję ,<%@ include file="" %>
jest dyrektywą include . Przeczytaj ostatnią sekcję (w szarym polu), która przedstawia zalety (tj. Zalecenia, kiedy wybrać jedną lub drugą). Sprawdź również ten artykuł, aby uzyskać szczegółowy opis. Mam nadzieję że to pomoże.Możliwe zduplikowane pytanie
<@include>
- Znacznik dyrektywy instruuje kompilator JSP, aby scalił zawartość dołączonego pliku z JSP przed utworzeniem wygenerowanego kodu serwletu. Jest to odpowiednik wycinania i wklejania tekstu ze strony dołączanej bezpośrednio do strony JSP.<jsp:include>
- Z drugiej strony znacznik JSP Action nakazuje kontenerowi wstrzymanie wykonywania tej strony, uruchomienie dołączonej strony i scalenie danych wyjściowych z tej strony z danymi wyjściowymi z tej strony.źródło
<t:mytag><h1>Hello World</h1></t:mytag>
:? To nie jest dołączenie, to normalne użycie tagu (takiego jak<jsp:useBean>
lub<c:if>
).Główną zaletą
<jsp:include />
overu<%@ include >
jest:<jsp:include />
umożliwia przekazywanie parametrówco nie jest możliwe w
<%@include file="somefile.jsp" %>
źródło
<%@include file="somefile.jsp?menu=value" %>
? Czy to też jest ograniczone?Wszystkie trzy opcje szablonu -
<%@include>
,<jsp:include>
i<%@tag>
są ważne, a wszystkie trzy obejmować różne przypadki użycia.W
<@include>
przypadku parser JSP wstawia zawartość dołączonego pliku do strony JSP przed kompilacją (podobnie jak w C#include
). Używałbyś tej opcji z prostą, statyczną treścią: na przykład, gdybyś chciał dołączyć nagłówek, stopkę lub elementy nawigacyjne do każdej strony w aplikacji internetowej. Dołączona zawartość staje się częścią skompilowanej strony JSP i nie ma dodatkowych kosztów w czasie wykonywania.<jsp:include>
(i JSTL<c:import>
, który jest podobny i jeszcze mocniejszy) najlepiej nadaje się do zawartości dynamicznej. Użyj ich, gdy musisz dołączyć zawartość z innego adresu URL, lokalnego lub zdalnego; kiedy zasób, który dołączasz, sam jest dynamiczny; lub gdy dołączona treść używa zmiennych lub definicji komponentów bean, które są sprzeczne ze stroną zawierającą.<c:import>
umożliwia również przechowywanie zawartego tekstu w zmiennej, którą można dalej manipulować lub ponownie wykorzystać. Obydwa powodują dodatkowe koszty związane z wysyłką: jest to minimalne, ale należy mieć świadomość, że dołączanie dynamiczne nie jest „bezpłatne”.Użyj plików znaczników, jeśli chcesz utworzyć komponenty interfejsu użytkownika wielokrotnego użytku. Jeśli masz, powiedzmy, listę widżetów i chcesz iterować po widżetach i wyświetlać ich właściwości (w tabeli lub w formularzu), utworzyłbyś znacznik. Tagi mogą przyjmować argumenty, używanie
<%@tag attribute>
i te argumenty mogą być obowiązkowe lub opcjonalne - podobnie jak parametry metod.Pliki znaczników są prostszym, opartym na JSP mechanizmem pisania bibliotek znaczników, które (przed JSP 2.0) trzeba było pisać przy użyciu kodu Java. Pisanie plików tagów JSP jest dużo bardziej przejrzyste, gdy w tagu jest dużo do zrobienia: nie musisz mieszać kodu Java i HTML, tak jak w przypadku pisania tagów w języku Java.
źródło
Według: Java Revisited
Zasoby zawarte w dyrektywie include są ładowane w czasie tłumaczenia jsp, podczas gdy zasoby zawarte przez akcję include są ładowane w czasie żądania.
Żadna zmiana w dołączonych zasobach nie będzie widoczna w przypadku dyrektywy include, dopóki plik jsp nie zostanie ponownie skompilowany. Podczas gdy w przypadku dołączania akcji, każda zmiana w dołączonym zasobie będzie widoczna w następnym żądaniu.
Dyrektywa Include to import statyczny, a akcja include to import dynamiczny.
Dyrektywa Include używa atrybutu pliku do określenia zasobów, które mają być uwzględnione, podczas gdy akcja include używa atrybutu strony w tym samym celu.
źródło