Включите другой JSP файл
В настоящее время я пытаюсь изучить 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.: (
Ответы
Ответ 1
То, что вы делаете, это static. Статическое включение разрешается во время компиляции и, таким образом, не может использовать значение параметра, которое известно только во время выполнения.
Что вам нужно, так это динамика:
<jsp:include page="..." />
Обратите внимание, что вы должны использовать JSP EL, а не скриптлеты. Также кажется, что вы используете центральный контроллер с index.jsp. Вы должны использовать сервлет, чтобы сделать это вместо этого, и отправить соответствующий JSP из этого сервлета. Или лучше, используйте существующую инфраструктуру MVC, например Stripes или Spring MVC.
Ответ 2
Вы можете использовать Включить директивы
<%
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 Action включает файл во время запроса страницы
Я рекомендую Spring MVC Framework в качестве вашего контроллера манипулировать вещами.
используйте шаблон url вместо параметра.
Пример:
www.yourwebsite.com/products
вместо
www.yourwebsite.com/?p=products
Посмотрите это видео Spring MVC Framework
Ответ 3
Вы можете использовать такие параметры
<jsp:include page='about.jsp'>
<jsp:param name="articleId" value=""/>
</jsp:include>
и
в about.jsp вы можете взять параметр
<%String leftAds = request.getParameter("articleId");%>
Ответ 4
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 файла
Ответ 5
При времени перевода страницы содержимое файла, указанного в директиве include, "вставлено как есть", в том месте, где используется директива JSP include. Затем исходная страница JSP преобразуется в класс сервлета Java. Входящий файл может быть статическим ресурсом или страницей JSP. Как правило, директива JSP include используется для включения заголовков баннеров и нижних колонтитулов.
Синтаксис для включения файла jsp:
<%@ include file="relative url">
Пример
<%@include file="page_name.jsp" %>