包含另一个JSP文件

Akh*_*ran 155 jsp

我目前正在努力学习JSP.我的问题是,目前我曾经使用以下内容包含页面的页眉和页脚:

<%@include file="includes/header.jsp" %>
Run Code Online (Sandbox Code Playgroud)

<%@include file="includes/footer.jsp" %>
Run Code Online (Sandbox Code Playgroud)

但是现在,我也将页面内容分开了.因此,如果用户点击页面,比如说产品,则必须加载位于以下位置的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" %>

<% 
 }
%>
Run Code Online (Sandbox Code Playgroud)

那么,如何将变量"p"的值放在"page_name"的位置?

或者,还有其他方法可以使用吗?

在PHP中,我们可以使用include()include_once().我有点陷入这个JSP.:(

JB *_*zet 227

你正在做的是静态包含.静态包含在编译时被解析,因此可能不使用参数值,该参数值仅在执行时已知.

您需要的是动态包括:

<jsp:include page="..." />
Run Code Online (Sandbox Code Playgroud)

请注意,您应该使用JSP EL而不是scriptlet.您似乎正在使用index.jsp实现中央控制器.您应该使用servlet来代替,并从此servlet调度到适当的JSP.或者更好,使用现有的MVC框架,如Stripes或Spring MVC.

  • 不要使用scriptlet.使用JSP EL:page ="/ includes/$ {param.p}".或者尝试使用page ="<%="/ includes /"+ p%>". (7认同)
  • 谢谢.我这样使用它:`<jsp:include page ="<%="includes /"+ p +".jsp"%>"/>`它现在正在工作:) (3认同)
  • 非常好的答案!我已经看过这种模式(index.jsp中的中央控制器)太多次了,它总会导致麻烦. (2认同)

vit*_*yoz 25

你可以使用这样的参数

<jsp:include page='about.jsp'>
    <jsp:param name="articleId" value=""/>
</jsp:include>
Run Code Online (Sandbox Code Playgroud)

在about.jsp中你可以参加

<%String leftAds = request.getParameter("articleId");%>
Run Code Online (Sandbox Code Playgroud)


Jay*_*ang 16

您可以使用Include Directives

<%
 if(request.getParameter("p")!=null)
 { 
   String p = request.getParameter("p");
%>    

<%@include file="<%="includes/" + p +".jsp"%>"%>

<% 
 }
%>
Run Code Online (Sandbox Code Playgroud)

JSP Include Action

<%
 if(request.getParameter("p")!=null)
 { 
   String p = request.getParameter("p");
%>    

<jsp:include page="<%="includes/"+p+".jsp"%>"/>

<% 
 }
%>
Run Code Online (Sandbox Code Playgroud)

不同的是include指令在翻译阶段包含一个文件.而JSP Include Action在请求页面时包含一个文件

我建议使用Spring MVC Framework作为操作系统的控制器.使用url模式而不是参数.

例:

www.yourwebsite.com/products
Run Code Online (Sandbox Code Playgroud)

代替

www.yourwebsite.com/?p=products
Run Code Online (Sandbox Code Playgroud)

观看此视频Spring MVC Framework


Ara*_*lur 8

在页面转换时,include指令中给出的文件内容按原样"粘贴",在使用JSP include指令的位置.然后将源JSP页面转换为java servlet类.包含的文件可以是静态资源或JSP页面.通常,JSP include指令用于包含页眉横幅和页脚.

包含jsp文件的语法:

<%@ include file="relative url">
Run Code Online (Sandbox Code Playgroud)

<%@include file="page_name.jsp" %>
Run Code Online (Sandbox Code Playgroud)


Bal*_*man 6

1. <a href="index.jsp?p=products">Products</a>当用户点击Products链接时,您可以直接调用products.jsp.

我的意思是你可以保持JSP文件的名称与参数值相同.

<%
 if(request.getParameter("p")!=null)
 { 
   String contextPath="includes/";
   String p = request.getParameter("p");
   p=p+".jsp";
   p=contextPath+p;

%>    

<%@include file="<%=p%>" %>

<% 
 }
%>
Run Code Online (Sandbox Code Playgroud)

要么

2.您可以使用键,值对维护外部资源文件.如下

products : products.jsp

customer : customers.jsp

您可以以编程方式从特性文件中检索JSP文件的名称.

这样您就可以轻松更改JSP文件的名称