Включить другой файл 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 вы можете взять paramter
<%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"%>"/>
<%
}
%>
различная директива is 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 из файла свойств.
таким образом, вы можете легко изменить имя из файла JSP