包含另一个JSP文件

时间:2012-02-02 09:48:26

标签: 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。 :(

6 个答案:

答案 0 :(得分:220)

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

您需要的是动态包括:

<jsp:include page="..." />

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

答案 1 :(得分:22)

你可以使用那样的参数

<jsp:include page='about.jsp'>
    <jsp:param name="articleId" value=""/>
</jsp:include>

在about.jsp中你可以拿参数

<%String leftAds = request.getParameter("articleId");%>

答案 2 :(得分:16)

您可以使用包含指令

<%
 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 :(得分:7)

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

包含jsp文件的语法:

<%@ include file="relative url">

实施例

<%@include file="page_name.jsp" %>

答案 4 :(得分:5)

1. <a href="index.jsp?p=products">Products</a>当用户点击“产品”链接时,您可以直接调用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%>" %>

<% 
 }
%>

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

products : products.jsp

customer : customers.jsp

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

通过这种方式,您可以轻松更改JSP文件的名称

答案 5 :(得分:0)

由于我不了解的原因,在<%@include file="includes/footer.jsp" %>中使用index.jsp之后,在register.jsp之类的其他jsp文件中,我不得不使用<%@ include file="footer.jsp"%>。如您所见,不再需要使用完整路径,STS已存储了我的初始路径。