Включите другой 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" %>