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