Включите другой файл JSP
в настоящее время я пытаюсь изучить JSP. Мой вопрос в том, что в настоящее время я использовал для включения верхнего и нижнего колонтитулов страницы с помощью:
<%@include file="includes/header.jsp" %>
и
<%@include file="includes/footer.jsp" %>
но теперь, я разделил содержимое страницы также. Итак, если пользователь нажимает на страницу, скажем products, он должен загрузить файл 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. : (
5 ответов:
то, что вы делаете, является статическим включением. Статическое включение разрешается во время компиляции и поэтому может не использовать значение параметра, которое известно только во время выполнения.
что вам нужно, так это динамическое включение:
<jsp:include page="..." />
обратите внимание, что вы должны использовать JSP EL, а не скриптлеты. Похоже, что вы реализуете центральный контроллер с индексом.JSP-страница. Вместо этого вы должны использовать сервлет и отправить соответствующий JSP из этого сервлета. Или лучше использовать существующую структуру MVC, такую как Stripes или Spring MVC.
вы можете использовать такие параметры
<jsp:include page='about.jsp'> <jsp:param name="articleId" value=""/> </jsp:include>
и
В об.jsp вы можете взять параметр
<%String leftAds = request.getParameter("articleId");%>
можно использовать Include Директивы
<% if(request.getParameter("p")!=null) { String p = request.getParameter("p"); %> <%@include file="<%="includes/" + p +".jsp"%>"%> <% } %>
или JSP включить действие
<% if(request.getParameter("p")!=null) { String p = request.getParameter("p"); %> <jsp:include page="<%="includes/"+p+".jsp"%>"/> <% } %>
различная директива include включает файл во время фазы перевода. в то время как действие JSP Include включает файл в момент запроса страницы
Я рекомендую Spring MVC Framework в качестве контроллера для управления вещами. использовать шаблон URL-адреса вместо параметра.
пример:
изwww.yourwebsite.com/products
www.yourwebsite.com/?p=products
посмотреть видео Spring MVC Framework
во время перевода страницы содержимое файла, указанного в директиве include, "вставляется" как есть, в том месте, где используется директива JSP include. Затем исходная страница JSP преобразуется в класс сервлетов java. Включенный файл может быть статическим ресурсом или страницей JSP. Как правило, директива JSP include используется для включения заголовочных баннеров и нижних колонтитулов.
синтаксис для включения файла jsp:
<%@ include file="relative url">
пример
<%@include file="page_name.jsp" %>
1.
<a href="index.jsp?p=products">Products</a>
когда пользователь нажимает на ссылку продукты, вы можете напрямую вызывать продукты.JSP-страница.Я имею в виду, что u может поддерживать имя файла JSP так же, как значение параметра.
<% if(request.getParameter("p")!=null) { String contextPath="includes/"; String p = request.getParameter("p"); p=p+".jsp"; p=contextPath+p; %> <%@include file="<%=p%>" %> <% } %>
или
2.вы можете поддерживать внешний файл ресурсов с помощью пар ключ-значение. как и ниже
products : products.jsp
customer : customers.jsp
вы можете программно получить имя файла JSP из файла properies.
таким образом, вы можете легко изменить имя из JSP файла