Хобрук: Ваш путь к мастерству в программировании

Почему страницы JSP в папке / WEB-INF не компилируются?

Добрый день, я новичок в изучении Jave EE. Я создал сервлет (контроллер) VersionOverview.java, который содержит следующий код в методе doGet:

RequestDispatcher view = request.getRequestDispatcher("WEB-INF/jsp/versions.jsp");
view.forward(request, response);

Файл WEB-INF / jsp / versions.jsp содержит следующие строки:

<div id="content">
  <jsp:include page="/WEB-INF/jspf/organization-filter.jspf" />
  ...
</div>

Файл /WEB-INF/jspf/organization-filter.jspf содержит следующие строки:

<form name="organization-filter" action="versions">
  <input type="text" id="org_name" name="org_name" value="<%= request.getAttribute("org_name") %>">
  <br>
  <input type="hidden" id="org_id" name="org_id" value="<%= request.getAttribute("org_id") %>">
  <br>
  <input type="submit" name="submit" value="Submit"/>
</form>

Когда я открываю страницу / версии (сопоставленные с сервлетом выше), кажется, что organization-filter.jspf не компилируется, потому что вместо пустого поля ввода с именем org_name я вижу внутри него этот текст:

<%= request.getAttribute(

Если я изменю директиву include в файле versions.jsp, как показано ниже, она начнет работать:

<div id="content">
  <%@include file="/WEB-INF/jspf/organization-filter.jspf" %>
  ...
</div>

Посоветуйте, пожалуйста, почему не работает, когда я использую jsp: include. Заранее спасибо. Войтех


Ответы:


1

Файл jspf - это файл, который должен быть статически включен с помощью директивы include:

<%@ include file="someFile.jspf" %>

Это именно то, что представляет собой сегмент фрагмент JSP, и поскольку он должен быть включен статически, нет смысла его компилировать.

Вот что говорится в спецификации:

По умолчанию расширение .jsp означает файл JSP верхнего уровня. Мы рекомендуем, но не обязываем, различать файлы JSP верхнего уровня (вызываемые непосредственно клиентом или динамически включаемые другой страницей или сервлетом) и статически включенные сегменты, чтобы:

  • Расширение .jsp используется только для файлов, соответствующих файлам JSP верхнего уровня, которые при обработке образуют страницу JSP.
  • Статически включенные сегменты используют любое другое расширение. Поскольку в предыдущих версиях этой спецификации включенные сегменты назывались «фрагментами JSP», в качестве предложения предлагалось расширение .jspf. Это расширение по-прежнему предлагается из соображений согласованности, несмотря на то, что теперь они называются «сегментами jsp».

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

17.11.2012
Новые материалы

Введение в контекст React
В этом посте мы поговорим о Context API, который был представлен в React 16, и о том, как вы можете их использовать. Что такое контекст? Глядя на определение из react docs , оно..

Шлюз с лицензией OSS, совместимый с Apollo Federation v2, появится в WunderGraph
Сегодня мы рады сообщить, что мы сотрудничаем с поддерживаемой YC Tailor Technologies, Inc. для внедрения Apollo Federation v2. Реализация будет лицензирована MIT (Engine) и Apache 2.0..

Это оно
Ну, я официально уволился с работы! На этой неделе я буду лихорадочно выполнять последние требования Думающего , чтобы я мог сосредоточиться на поиске работы. Что именно это значит?..

7 полезных библиотек JavaScript, которые вы должны использовать в своем следующем проекте
Усильте свою разработку JavaScript Есть поговорка «Не нужно изобретать велосипед». Библиотеки — лучший тому пример. Это поможет вам написать сложные и трудоемкие функции простым способом...

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

C в C.R.U.D с использованием React-Redux
Если вы использовали React, возможно, вы знакомы с головной болью, связанной с обратным потоком данных. Передача состояния реквизитам от родительских компонентов к дочерним компонентам может..

5 обязательных элементов современного инструмента конвейера данных
В цифровом мире предприятия используют конвейеры данных для перемещения, преобразования и хранения огромных объемов данных. Эти конвейеры составляют основу бизнес-аналитики и играют..