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