Могу ли я импортировать свою собственную страницу JSP в другую страницу JSP ..? - PullRequest
3 голосов
/ 28 августа 2011

Я подготовил статическую HTML-страницу, используя netbeans. Могу ли я импортировать эту страницу на другую страницу, чтобы не переписывать код снова n, а затем вносить соответствующие изменения.

Ответы [ 3 ]

15 голосов
/ 28 августа 2011

Вы можете встроить JSP-страницу в другую, используя директиву include, например, -

<%@ include file="/path/to/yourfile.jsp" %>

или используя <jsp:include> стандартное действие, подобное этому -

<jsp:include page="/path/to/yourfile.jsp"/>

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

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

Когда вы используете директиву include, вы в основном копируете и вставляете содержимое целевого файла в основной файл.Если целевой файл содержит какой-либо тег или EL, который генерировал динамический контент, то они также станут частью основного файла, и они будут выполняться соответствующим образом и будут генерировать динамический контент.Там нет проблем.

Но у этого подхода есть некоторые ограничения.Например, страница, которая была добавлена ​​с использованием include, не может изменить код состояния ответа или установить заголовки, что означает, что вы не можете вызвать addCookies() или некоторые другие методы установки заголовка с yourfile.jsp.Вы не получите ошибку, если сделаете это, вы просто не получите то, на что надеетесь.Если вы используете <jsp:include>, то все это можно сделать на включенной странице, и они будут работать соответствующим образом.

Между этими двумя подходами существует еще одно важное различие.Предположим, вы хотите включить файл с небольшим количеством контекстно-зависимых текстов, которые меняются в зависимости от страницы, в которую они включены.С подходом include вы не сможете сделать это элегантно.Но с подходом <jsp:include> вы можете сделать это -

<jsp:include page="/path/to/yourfile.jsp">
    <jsp:param name="myContextSensitiveText" value="Context Sensitive!!" />
</jsp:include>

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

${param.myContextSensitiveText} - Context Insensitive Text!!

с подходом include вы не сможете достичь этого.

Какой из них использовать, будет зависеть только от вашего выбора дизайна.

Вы должны помнить другое - оба эти подхода будут включать содержимое целевого файла в основной файл, хотя и по-разному.Так что, если они оба содержат html-элементы, такие как <html> или <body>, в итоге вы получите два <html> и два <body> элемента на окончательно отрендеренной странице, что будет недопустимо.

Для получения дополнительной информации вы можете взглянуть на здесь и здесь .

Редактировать

Существует третий способ добавить страницу, используя JSTL .Для этой цели вы можете использовать тег import JSTL -

<%-- You need to declare this at the top of your jsp page--%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
...............
...............

<c:import url="/path/to/yourfile.jsp" />

Этот подход работает точно так же, как <jsp:include>, за исключением того, что он немного более мощный.Вы можете включать содержимое со страницы, которая находится за пределами каталога вашего приложения, даже за пределами вашего контейнера!Например,

<c:import url="http://www.google.com" />

эта строка будет включать HTML-контент главной страницы Google.

Если вам нужно передать параметры на включенную страницу, например <jsp:include>, тогда вы можетеиспользуйте тег param -

<c:import url="/path/to/yourfile.jsp">
    <c:param name="myContextSensitiveText" value="Context Sensitive!!" />
</c:import>

и доступ к нему таким же образом -

${param.myContextSensitiveText} - Context Insensitive Text!!
0 голосов
/ 09 января 2013

Вы можете сделать это следующими способами:

<%@ include file="/path/to/yourfile.jsp" %>

или

<jsp:include page="/path/to/yourfile.jsp"/>

или

 <c:import url="/path/to/yourfile.jsp" />
0 голосов
/ 28 августа 2011

Да, вы можете импортировать страницу jsp в другой файл jsp.

      <jsp:include page="/jsp/old.jsp"/>

Включение содержимого на странице JSP

...