What' s различие между включением файлов с JSP включают директиву, JSP включают действие и использующий Файлы Признака JSP?

Кажется, что есть два метода для templating с JSP. Включая файлы с одним из этих заявлений

<%@ include file="foo.html" %>

или использование JSP помечает файлы

// Save this as mytag.tag
<%@ tag description="Description" pageEncoding="UTF-8"%>
<html>
<head>
</head>
<body>
    
</body>
</html>

И на другой странице JSP называют его с

<%@ taglib prefix="t" tagdir="/WEB-INF/tags" %>


    

Hello World

Таким образом, какой метод я должен использовать? Каждого теперь считают устаревшим, или действительно ли они и действительны и покрывают различные варианты использования?

Редактируют

Не использует этот файл признака то же самое в качестве использования включать?

// Save this as product.tag
<%@ tag description="Product templage" pageEncoding="UTF-8"%>
<%@ tag import="com.myapp.Product" %>
<%@ attribute name="product" required="true" type="com.myapp.Product"%>

Product name: ${product.name} 
Quantity: ${product.quantity}

И назовите его на другом JSP с

<%@ taglib prefix="t" tagdir="/WEB-INF/tags" %>


    
        
    

Это, кажется, мне тот же самый как использование включать и мимолетных параметров к нему. Так Признак, Регистрирует то же самое, как включает?

142

5 ответы

Есть несколько механизмов для многократного использования содержания в файле JSP.

Следующие 4 механизма, чтобы включать содержание в JSP могут быть категоризированы как прямое повторное использование :
(для первых 3 цитирований механизмов от "Возглавьте первые сервлеты и JSP")

1) The include directive:

<%@ include file="header.html" %>

Static: adds the content from the value of the file attribute to the current page at translation time. The directive was originally intended for static layout templates, like HTML headers.

2) The standard action:


Dynamic: adds the content from the value of the page attribute to the current page at request time. Was intended more for dynamic content coming from JSPs.

3) The JSTL tag:


Dynamic: adds the content from the value of the URL attribute to the current page, at request time. It works a lot like , but it’s more powerful and flexible: unlike the other two includes, the url can be from outside the web Container!

4) Preludes and codas:

Static: preludes and codas can be applied only to the beginnings and ends of pages.
You can implicitly include preludes (also called headers) and codas (also called footers) for a group of JSP pages by adding and elements respectively within a element in the Web application web.xml deployment descriptor. Read more here:
Configuring Implicit Includes at the Beginning and End of JSPs
Defining implicit includes


Tag File is an indirect method of content reuse, the way of encapsulating reusable content. A Tag File is a source file that contains a fragment of JSP code that is reusable as a custom tag.

ЦЕЛЬ включает, и Файлы Признака отличается.

Tag file (a concept introduced with JSP 2.0) is one of the options for creating custom tags. It's a faster and easier way to build custom tags. Custom tags, also known as tag extensions, are JSP elements that allow custom logic and output provided by other Java components to be inserted into JSP pages. The logic provided through a custom tag is implemented by a Java object known as a tag handler.

Некоторые примеры задач, которые могут быть выполнены таможенными признаками, включают работу на неявных объектах, обработку форм, доступ к базам данных и другим сервисам предприятия, таким как электронная почта и справочники и осуществление управления потоками.


Относительно вашего Редактировать

Возможно, в вашем примере (в вашем Редактируют ), нет никакого различия между использованием прямого, включают и Файл Признака. Но у таможенных признаков есть богатый набор особенностей . Они могут

  • быть настроенным посредством признаков, переданных со страницы запроса.

  • Пасует назад переменные к странице запроса.

  • Доступ все объекты, доступные страницам JSP.

  • Общается друг с другом. Можно создать и инициализировать компонент JavaBeans, создать общественную переменную EL, которая относится к тому бобу в одном признаке, и затем используйте боб в другом признаке.

  • быть вложенным друг в друге и общается посредством частных переменных.

Also read this from "Pro JSP 2": Understanding JSP Custom Tags.


Полезное чтение.


Заключение

Использование правильные инструменты для конкретной задачи.

Use Tag Files as a quick and easy way of creating custom tags.

Что касается включения содержания в JSP (указывают от здесь):

  • Использование включать директива , если файл редко изменяется. Это - самый быстрый механизм. Если ваш контейнер автоматически не обнаруживает изменения, можно вынудить изменения вступить в силу, удалив основное файл класса страницы.

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

268
добавлено
что точно является преимуществом по <*, включают URL..>?
добавлено автор Krsna Chaitanya, источник
@sonicboom Обновил мой ответ
добавлено автор informatik01, источник
Примечание @KrsnaChaitanya: у вас есть опечатка (звездочка * ) во включать директиве. является стандартом, включают действие , <% включает файл = "" %> является включать директива . Прочитайте самый последний раздел (в серой коробке), который обрисовывает в общих чертах преимущества (т.е. рекомендации, когда выбрать один или другой). Также проверьте это статья для подробного описания. Надежда это помогает.
добавлено автор informatik01, источник
@informatik01 очень хороший ответ, я ценю глубину, хорошее форматирование и очень удобные 4 списка механизмов.
добавлено автор Russell Silva, источник
Но isn' t то же самое как использующий файлы признака? Я can' t видят любое различие... Можно передать переменные к файлам, включенным с , как можно передать переменные, чтобы пометить файлы. Оба метода позволяют вам содержание повторного использования, они, кажется, делают точно то же самое. Есть ли какое-либо различие между ними кроме их имен?
добавлено автор sonicboom, источник

Возможный Двойной Вопрос

<@include> - The directive tag instructs the JSP compiler to merge contents of the included file into the JSP before creating the generated servlet code. It is the equivalent to cutting and pasting the text from your include page right into your JSP.

  • Только один сервлет выполняется во время выполнения.
  • к переменным Scriptlet, объявленным на родительской странице, можно получить доступ на включенной странице (помнят, они - та же самая страница).
  • включенная страница не должен к способному быть собран как автономный JSP. Это может быть кодовый фрагмент или простой текст. Включенная страница никогда не будет собираться как автономное. У включенной страницы может также быть любое расширение, хотя .jspf стал традиционно используемым расширением.
  • , которым Один недостаток на более старых контейнерах состоит в том, что изменения включать страниц могут не вступить в силу до родительской страницы, обновляется. Последние версии Кота проверят включать страницы на обновления и вызовут повторно собирание родителя, если они будут обновлены.
  • , которым дальнейший недостаток состоит в том, что, так как код - inlined непосредственно в сервисный метод произведенного сервлета, метод, может стать очень большим. Если это превысит 64 КБ, ваша компиляция JSP, вероятно, потерпит неудачу.

- The JSP Action tag on the other hand instructs the container to pause the execution of this page, go run the included page, and merge the output from that page into the output from this page.

  • Каждая включенная страница выполняется как отдельный сервлет во время выполнения.
  • Страницы может условно быть включен во время выполнения. Это часто полезно для templating структур, которые строят страницы из, включает. Родительская страница может определить который страница, если таковые имеются, чтобы включать согласно некоторому условию во время выполнения.
  • ценности scriptlet переменных должен быть явно передан к включать странице.
  • включенная страница должен быть в состоянии управляться самостоятельно.
  • Вы, менее вероятно, столкнетесь с ошибками компиляции из-за максимального размера метода, превышаемого в произведенном классе сервлета.

Depending on your needs, you may either use <@include> or

21
добавлено
Сделайте вы имеете в виду как вы, показал в вашем вопросе:

Привет Мир </ h1> </ t:mytag> ? That' s не включать, it' s нормальная эксплуатация признака (как или ).

добавлено автор Uooo, источник
Что относительно tagfiles?
добавлено автор sonicboom, источник
Таким образом, каково различие между использованием файлов признака и включает, поскольку кажется, что файлы признака могут использоваться, чтобы включать содержание в страницу?
добавлено автор sonicboom, источник

Main advantage of over <%@ include > is:

allows to pass parameters


    

which is not possible in <%@include file="somefile.jsp" %>

7
добавлено
Что относительно tagfiles я знаю, как включает работу. I' m задающийся вопросом то, как файлы признака касаются, включает, поскольку кажется, что они обеспечивают ту же самую функциональность. Каково различие между использованием tagfiles, и использование включает?
добавлено автор sonicboom, источник

All three template options - <%@include>, and <%@tag> are valid, and all three cover different use cases.

With <@include>, the JSP parser in-lines the content of the included file into the JSP before compilation (similar to a C #include). You'd use this option with simple, static content: for example, if you wanted to include header, footer, or navigation elements into every page in your web-app. The included content becomes part of the compiled JSP and there's no extra cost at runtime.

(and JSTL's , which is similar and even more powerful) are best suited to dynamic content. Use these when you need to include content from another URL, local or remote; when the resource you're including is itself dynamic; or when the included content uses variables or bean definitions that conflict with the including page. also allows you to store the included text in a variable, which you can further manipulate or reuse. Both these incur an additional runtime cost for the dispatch: this is minimal, but you need to be aware that the dynamic include is not "free".

Use tag files when you want to create reusable user interface components. If you have a List of Widgets, say, and you want to iterate over the Widgets and display properties of each (in a table, or in a form), you'd create a tag. Tags can take arguments, using <%@tag attribute> and these arguments can be either mandatory or optional - somewhat like method parameters.

Файлы признака - более простой, основанный на JSP механизм написания библиотек тегов, которые (пред JSP 2.0) необходимо было написать использованию Явский код. Это намного более чисто, чтобы написать файлы признака JSP, когда есть большое предоставление, чтобы сделать в признаке: вы не должны смешивать Яву и код HTML, как необходимо было бы сделать, если бы вы написали свои признаки на Яве.

5
добавлено

Ява, Повторно посещенная

  1. Ресурс, включенный, включает директиву, загружается в течение jsp времени перевода, в то время как ресурс, включенный, включает действие, загружается в течение времени запроса.
  2. , в случае которого Любое изменение на включенном ресурсе не будет видимо, включает директиву, пока jsp файл не собирает снова. В то время как в случае включают действие, любое изменение во включенном ресурсе будет видимо в следующем запросе.
  3. Включает директиву, статический импорт, в то время как включают действие, динамический импорт
  4. Включает направляющий атрибут файла использования, чтобы определить ресурс, который будет включен, в то время как включают признак страницы использования действия для той же самой цели.
1
добавлено
pro.jvm
pro.jvm
3 503 участник(ов)

Сообщество разработчиков Java Scala Kotlin Groovy Clojure Чат для нач-их: @javastart Наш сайт: projvm.com projvm.ru Наш канал: @proJVM Вакансии: @jvmjobs Конфы: @jvmconf

Java & Co
Java & Co
2 370 участник(ов)

Можно обсуждать с матом и без всё, что касается жабы, вплоть до холиваров. НЕ ИМЕЕТ ОТНОШЕНИЯ К САЙТУ JAVARUSH.RU ПРАВИЛА - https://t.me/javarush/75723 Вакансии сюда - https://telegram.me/joinchat/B7IzvUCnfo6d8t3yIxKguQ По вопросам - @thedude

learn.java
learn.java
1 888 участник(ов)

Чат для начинающих и не только Статистика: https://combot.org/chat/-1001083535868 Основной чат - @jvmchat

Java Underground
Java Underground
169 участник(ов)

https://vk.com/javatutorial

Javanese Questions
Javanese Questions
109 участник(ов)

Чат предназначен для обмена знаниями строго в формате в вопрос-ответ. Тема — Java, Kotlin и Android. Вопрос должен быть предварительно прогуглен, понятно и грамотно сформулирован, помечен хэштегами. Ответ — тем более. Куски кода размером в несколько строк можно писать прямо здесь, для больших кусков кода стоит использовать http://gist.github.com/, http://pastebin.com/, https://codeshare.io/ или любой аналогичный сервис. В некоторых случаях можно прикреплять скриншоты. Стикеры и гифки запрещены. Дополнять и уточнять вопросы и ответы — редактированием исходного сообщения. Обсуждения должны приводить к редактированию вопроса/ответа и удаляться. По хештегам можно искать существующие вопросы и овтеты: #вопрос #ответ #git #generics #java #server #awt #javafx #swing #kotlin #anko #tornadofx #ktor #android #recyclerView #performance #arch #network #permissions #storage #async