Products。因此,我必须获取 p 值并根据......" /> Products。因此,我必须获取 p 值并根据......"> Products。因此,我必须获取 p 值并根据......" />
我目前正在尝试学习 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" %>
<%
}
%>
那么,如何将变量“p”的值放在“page_name”的位置?
或者,还有其他我可以使用的方法吗?
在 PHP 中,我们可以使用 include()
或 include_once()
。我有点卡在这个 JSP 中。 :(
你正在做的是一个静态包含。静态包含在编译时解析,因此可能不使用仅在执行时才知道的参数值。
您需要的是动态包括:
<jsp:include page="..." />
请注意,您应该使用 JSP EL 而不是 scriptlet。您似乎也在使用 index.jsp 实现中央控制器。您应该使用 servlet 来代替,并从该 servlet 分派到适当的 JSP。或者更好的是,使用现有的 MVC 框架,如 Stripes 或 Spring MVC。
你可以使用这样的参数
<jsp:include page='about.jsp'>
<jsp:param name="articleId" value=""/>
</jsp:include>
和
在 about.jsp 你可以把参数
<%String leftAds = request.getParameter("articleId");%>
您可以使用包含指令
<%
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 包含操作在请求页面时包含一个文件
我推荐 Spring MVC Framework 作为你的控制器来操作。使用 url 模式而不是参数。
例子:
www.yourwebsite.com/products
代替
www.yourwebsite.com/?p=products
观看此视频Spring MVC Framework
在页面翻译时,包含指令中给出的文件内容被“粘贴”在使用 JSP 包含指令的地方。然后将源 JSP 页面转换为 java servlet 类。包含的文件可以是静态资源或 JSP 页面。通常,JSP 包含指令用于包含页眉横幅和页脚。
包含 jsp 文件的语法:
<%@ include file="relative url">
例子
<%@include file="page_name.jsp" %>
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%>" %>
<%
}
%>
或者
2.您可以使用键值对维护外部资源文件。像下面
products : products.jsp
customer : customers.jsp
您可以以编程方式从属性文件中检索 JSP 文件的名称。
这样您就可以轻松更改 JSP 文件的名称
org.apache.jasper.JasperException: /admin.jsp(239,44) PWC6117: File "/<%=p%>" not found
。这对你有用吗?
includes/add.jsp
。然后在包含导数中使用它:<%@ include file="includes/add.jsp" %>
。它显示页面内容。但如果我改用这一行:<%@ include file="<%=p%>" %>
,它会显示异常!
File "<%=p%>" not found
。如果我将使用实际价值,它就会起作用。
由于我还不明白的原因,在我的 index.jsp
中使用了 <%@include file="includes/footer.jsp" %>
之后,在其他 jsp 文件(如 register.jsp
)中我不得不使用 <%@ include file="footer.jsp"%>
。如您所见,不再需要使用完整路径,STS 已经存储了我的初始路径。
不定期副业成功案例分享
java.io.FileNotFoundException: /includes/<%= p %>.jsp
。看起来像在文件路径中使用了<%= p %>
!<jsp:include page="<%= "includes/" + p + ".jsp" %>" />
,它现在可以工作了:)