Использование модульного разбиения:
public IEnumerable<IEnumerable<string>> Split(IEnumerable<string> input, int chunkSize)
{
var chunks = (int)Math.Ceiling((double)input.Count() / (double)chunkSize);
return Enumerable.Range(0, chunks).Select(id => input.Where(s => s.GetHashCode() % chunks == id));
}
Существует несколько механизмов для повторного использования контента в JSP-файле.
Следующие 4 механизма включения содержимого в JSP можно классифицировать как прямое повторное использование: (для первых 3 механизмов, цитирующих из " Head First Servlets и JSP ")
1) Директива include:
<%@ include file="header.html" %>
Static: добавляет содержимое из значения атрибута файла в текущая страница во время перевода.
2) Стандартное действие
<jsp:include>
:<jsp:include page="header.jsp" />
Динамическое: добавляет контент из значения page на текущую страницу во время запроса. Предназначен больше для динамического контента, поступающего от JSP.
3) Тег
<c:import>
JSTL:<c:import url=”http://www.example.com/foo/bar.html” />
Динамический: добавляет содержимое со значения атрибута URL к текущей странице во время запроса. Он очень похож на
<jsp:include>
, но он более мощный и гибкий: в отличие от двух других, URL<c:import>
может быть извне веб-контейнера!4) Прелюдии и трески:
Статика: прелюдии и кодоны могут применяться только к началу и концу страниц. Вы можете неявно включать прелюдии (также называемые заголовками) и codas (также называемые нижние колонтитулы) для группы страниц JSP, добавляя элементы
blockquote><include-prelude>
и<include-coda>
, соответственно, в пределах<jsp-property-group>
в дескрипторе развертывания веб-приложения web.xml . Подробнее читайте здесь: • Настройка неявных включений в начале и конце JSP • Определение неявных включает в себя
Файл тега косвенный метод повторного использования контента, способ инкапсуляции содержимого многоразового использования. Файл тегов - это исходный файл, содержащий фрагмент кода JSP, который можно использовать повторно как пользовательский тег.
ЦЕЛЬ ВКЛЮЧЕНИЙ и файлов тегов отличается.
Файл тега (концепция, представленная с JSP 2.0) является одним из вариантов создания пользовательских тегов , Это быстрый и простой способ создания пользовательских тегов . Пользовательские теги , также известные как расширения тегов, являются элементами JSP, которые позволяют вставлять пользовательские логические и выходные данные, предоставляемые другими компонентами Java, в страницы JSP. Логика, предоставляемая с помощью настраиваемого тега, реализуется объектом Java, известным как обработчик тегов .
Некоторые примеры задач, которые могут выполняться пользовательскими тегами, включают работу с неявными объектами, обработку форм, доступ к базам данных и другим корпоративным службам, таким как электронная почта и каталоги, и реализация управления потоком.
Что касается вашего Edit
Возможно, в вашем примере (в вашем Edit ) нет никакой разницы между использованием прямого включения и файла тегов. Но пользовательские теги имеют богатый набор функций. Они могут
- настраиваться с помощью атрибутов, переданных с вызывающей страницы.
- Передать переменные обратно на вызывающую страницу.
- Доступ ко всем объектам доступный для страниц JSP.
- Общайтесь друг с другом. Вы можете создать и инициализировать компонент JavaBeans, создать общедоступную EL-переменную, которая ссылается на этот компонент в одном теге, а затем использовать компонент в другом теге.
- быть вложенными друг в друга и обмениваться с помощью частных переменные.
Также читайте это из «Pro JSP 2»: Понимание пользовательских тегов JSP .
Полезное чтение.
- Разница между включенной директивой и включенным действием в JSP
- JSP-трюки для упрощения шаблонов
- Очень информативный и понятный учебник из coreservlet.com с красивыми объяснениями, которые включают в себя таблицу сравнения
<jsp:include> VS. <%@ include %>
: Включение файлов и апплетов в страницы JSP- Еще один хороший учебник из coreservlets.com , относящийся к библиотекам тегов и файлам тегов: Создание пользовательских библиотек тегов JSP: Основы
- Официальная Java EE 5 Учебное пособие с примерами: Инкапсулирование многоразового содержимого с использованием файлов тегов .
- Эта страница из официального учебника Java EE 5 должна дать вам еще больше понимания: Повторное использование контента в JSP-страницах .
- Этот отрывок из книги «Pro JSP 2 "также объясняет, почему вам нужен файл тегов вместо использования static: Повторное использование содержимого с файлами тегов
Заключение
Используйте нужные инструменты для конкретной задачи.
Используйте файлы тегов как быстрый и простой способ создания пользовательских тегов .
Что касается содержательного содержимого в JSP (цитата из здесь ):
blockquote>
- Используйте директиву include, если файл изменяется редко. Это самый быстрый механизм. Если ваш контейнер не обнаруживает изменения автоматически, вы можете заставить изменения вступить в силу, удалив файл класса главной страницы.
- Используйте действие include только для часто изменяющегося контента и если какая страница должна включать не может быть определено до тех пор, пока не будет запрошена основная страница.
Возможный повторяющийся вопрос
<@include>
- Тег директивы инструктирует компилятор JSP объединить содержимое включенного файла в JSP до создания сгенерированного кода сервлета.
<jsp:include>
- Тег JSP Action, с другой стороны, указывает контейнеру приостановить выполнение этой страницы, запустите включенную страницу и объединить вывод с этой страницы в вывод с этой страницы.
В зависимости от ваших потребностей вы можете использовать
blockquote><@include>
или<jsp:include>
<t:mytag><h1>Hello World</h1></t:mytag>
? Это не включено, это обычное использование тега (например, <jsp:useBean>
или <c:if>
).
– Uooo
7 February 2013 в 15:53
Основное преимущество <jsp:include />
по сравнению с <%@ include >
:
<jsp:include />
позволяет передавать параметры
<jsp:include page="inclusion.jsp">
<jsp:param name="menu" value="objectValue"/>
</jsp:include>
, что невозможно в <%@include file="somefile.jsp" %>
Все три варианта шаблона - <%@include>
, <jsp:include>
и <%@tag>
действительны, а все три охватывают разные варианты использования.
С помощью <@include>
парсер JSP встраивает содержимое включенного файла в JSP перед компиляцией (аналогично C #include
). Вы должны использовать эту опцию с простым статическим контентом: например, если вы хотите включить элементы заголовка, нижнего колонтитула или навигации на каждую страницу своего веб-приложения. Включенный контент становится частью скомпилированного JSP, и во время выполнения нет никаких дополнительных затрат.
<jsp:include>
(и JSTL <c:import>
, который является похожим и даже более мощным) лучше всего подходят для динамического контента. Используйте их, когда вам нужно включить контент с другого URL-адреса, локального или удаленного; когда ресурс, который вы включаете, сам по себе является динамическим; или когда включенное содержимое использует переменные или определения bean-компонентов, которые конфликтуют с включенной страницей. <c:import>
также позволяет хранить включенный текст в переменной, которую вы можете дополнительно манипулировать или использовать повторно.
Использовать файлы тегов, когда вы хотите создать многоразовые компоненты пользовательского интерфейса.
Использовать файлы тегов, если вы хотите создать многоразовые компоненты пользовательского интерфейса , Если у вас есть список виджетов, скажем, и вы хотите перебирать виджеты и отображать свойства каждого (в таблице или в форме), вы должны создать тег. Теги могут принимать аргументы, используя <%@tag attribute>
, и эти аргументы могут быть либо обязательными, либо необязательными - несколько похожими на параметры метода.
Файлы тегов - это более простой, основанный на JSP механизм написания библиотек тегов, который (pre JSP 2.0) вам пришлось писать с использованием Java-кода. Гораздо чище писать файлы тегов JSP, когда в теге много рендеринга: вам не нужно смешивать Java и HTML-код, как вам нужно было бы, если бы вы написали свои тэги в Java.
*
) в директиве include.<jsp:include>
является стандартным включением action ,<%@ include file="" %>
является директивой include . Прочтите последний раздел (в сером поле), в котором указаны преимущества (т. Е. Рекомендации, когда выбирать тот или иной). Также ознакомьтесь с этой статьей для подробного описания. Надеюсь это поможет. – informatik01 15 January 2014 в 17:28