В настоящее время я пытаюсь изучить JSP. Мой вопрос, в настоящее время я использовал заголовок и нижний колонтитул страницы, используя:
<%@include file="includes/header.jsp" %>
и
<%@include file="includes/footer.jsp" %>
Но теперь я также разделил содержание страницы. Таким образом, если пользователь нажимает на странице, скажем , продукты, он должен загрузить файл JSP , который расположен в: includes/pages/products.jsp
Итак, ссылка на пользователя, как: <a href="index.jsp?p=products">Products</a>
.
Итак, я должен получить значение p и отобразить страницу на его основе.
Следующее - то, что я сделал до сих пор.
<%
if(request.getParameter("p")!=null)
{
String p = request.getParameter("p");
%>
<%@include file="includes/page_name.jsp" %>
<%
}
%>
Итак, как мне разместить значение переменной "p" в позиции "page_name"?
Или есть какой-нибудь другой метод, который я мог бы использовать?
В PHP мы могли бы использовать include()
или include_once()
. Я немного застрял в этой JSP. :(
Ответы:
То, что вы делаете, это статическое включение. Статическое включение разрешается во время компиляции и, таким образом, может не использовать значение параметра, которое известно только во время выполнения.
Что вам нужно, это динамическое включение:
Обратите внимание, что вы должны использовать JSP EL, а не скриптлеты. Также кажется, что вы реализуете центральный контроллер с index.jsp. Вместо этого вы должны использовать сервлет и отправить его в соответствующий JSP из этого сервлета. Или лучше использовать существующую инфраструктуру MVC, такую как Stripes или Spring MVC.
источник
java.io.FileNotFoundException: /includes/<%= p %>.jsp
. Похоже, что<%= p %>
он используется в пути к файлу!<jsp:include page="<%= "includes/" + p + ".jsp" %>" />
и теперь это работает :)Вы можете использовать такие параметры
и
в about.jsp вы можете взять параметр
источник
Вы можете использовать директивы включения
или JSP Включить действие
различная директива include включает файл на этапе перевода. в то время как JSP Include Action включает файл во время запроса страницы
Я рекомендую Spring MVC Framework в качестве вашего контроллера для манипулирования вещами. используйте шаблон URL вместо параметра.
пример:
вместо того
Посмотрите это видео Spring MVC Framework
источник
Во время перевода страницы содержимое файла, указанного в директиве include, «вставляется» в том месте, где используется директива включения JSP. Затем исходная страница JSP преобразуется в класс сервлетов Java. Включенный файл может быть статическим ресурсом или страницей JSP. Обычно директива JSP include используется для включения заголовков и нижних колонтитулов.
Синтаксис для включения файла JSP:
пример
источник
1.
<a href="index.jsp?p=products">Products</a>
когда пользователь нажимает на ссылку «Товары», вы можете напрямую вызвать products.jsp.Я имею в виду, вы можете сохранить имя файла JSP так же, как параметр Value.
или
2. Вы можете поддерживать внешний файл ресурсов с ключом, парой значений. как ниже
products : products.jsp
customer : customers.jsp
Вы можете программно получить имя файла JSP из файла свойств.
таким образом, вы можете легко изменить имя файла JSP
источник
org.apache.jasper.JasperException: /admin.jsp(239,44) PWC6117: File "/<%=p%>" not found
, Это сработало на вашей стороне?includes/add.jsp
. Затем использовали это производное включает:<%@ include file="includes/add.jsp" %>
. Показывает содержимое страницы. Но если я использую эту строку вместо:,<%@ include file="<%=p%>" %>
она показывает исключение!File "<%=p%>" not found
. Если я буду использовать реальную ценность, это работает.По причине, которую я до сих пор не понимаю, после того, как я использовал
<%@include file="includes/footer.jsp" %>
в своемindex.jsp
тогда в других файлах JSP, какregister.jsp
я должен был использовать<%@ include file="footer.jsp"%>
. Как видите, больше не нужно было использовать полный путь, STS сохранил мой начальный путь.источник