包含另一个JSP文件
我目前正在学习JSP。 我的问题是,目前我曾经使用包括页面的页眉和页脚:
<%@include file="includes/header.jsp" %>
和
<%@include file="includes/footer.jsp" %>
但现在,我也分离了页面内容。 所以,如果用户点击一个页面,说产品,它必须加载位于: includes/pages/products.jsp
的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" %> <% } %>
那么,如何将variables“p”的值放在“page_name”的位置呢?
或者,有没有其他方法可以使用?
在PHP中,我们可以使用include()
或include_once()
。 我有点卡在这个JSP。 🙁
你在做什么是一个静态的包括。 静态包含在编译时被parsing,因此可能不使用仅在执行时已知的参数值。
你需要的是一个dynamic的包括:
<jsp:include page="..." />
请注意,您应该使用JSP EL而不是scriptlet。 似乎你正在用index.jsp实现一个中央控制器。 您应该使用一个servlet来完成这个任务,并从这个servlet中派发到相应的JSP。 或者更好,使用Stripes或Spring MVC等现有的MVC框架。
您可以使用包含指令
<% 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框架作为你的控制器来操纵事物。 使用url模式而不是参数。
例:
www.yourwebsite.com/products
代替
www.yourwebsite.com/?p=products
观看这个videoSpring MVC框架
你可以使用这样的参数
<jsp:include page='about.jsp'> <jsp:param name="articleId" value=""/> </jsp:include>
和
在about.jsp中,你可以采取参数
<%String leftAds = request.getParameter("articleId");%>
1. <a href="index.jsp?p=products">Products</a>
当用户点击产品链接时,可以直接调用products.jsp。
我的意思是你可以保持JSP文件的名称与参数Value相同。
<% 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文件的名字
在页面转换时,include指令中给出的文件的内容被“粘贴”,就像使用JSP include指令的地方一样。 然后将源JSP页面转换为java servlet类。 包含的文件可以是一个静态资源或一个JSP页面。 通常,JSP include指令用于包含页眉横幅和页脚。
包含一个jsp文件的语法:
<%@ include file="relative url">
例
<%@include file="page_name.jsp" %>