当执行jsp:include
或时jsp:forward
,包含的页面或转发的页面将看到原始请求对象,原始参数增加了新参数,并且新值在适用时优先于现有值。
例如,如果请求有参数
Lname=abc
,并且Lname=xyz
为转发指定了参数,则转发的请求将具有Lname=xyz, abc
.
新参数优先
请举例说明。
让我们了解 jsp:include 和 jsp:forward 之间的主要区别。
jsp:include,包含当前页面内的页面。因此,包含的页面将出现在您在当前页面中添加 jsp 命令的位置。
例如
...
<jsp:include page="inc/include.jsp" />
...
但是 jsp:forward 会将当前页面转发到转发页面。这意味着当调用当前页面时,会立即调用转发页面。
例如
if (...) { forwarded to pageOne.jsp }
else if (...) { forwarded to pageTwo.jsp }
下面是我们可以访问 jsp:forward 和 jsp:include 参数的方式。
jsp:include :我们可以使用参数而不是请求对象来访问参数。例如
${param.param1}
而在 jsp:forward 中:我们可以使用请求对象访问参数。例如
request.getParameter("param1")
这是 jsp:inlcude 和 jsp:forward 中的参数之间的主要区别。因此,我们在 jsp:forward 中获得了新的价值(比如 Lname=xyz)。
例子:
假设我们在请求对象中有一个参数 Lname=xyz。在当前的 jsp 中,可以使用以下代码访问它
<%= (String)request.getParameter("Lname"); %> <%-- This will print xyz on jsp --%>
现在,进一步相同的参数名称可以与 jsp:forward 一起使用,例如...
<jsp:forward page="fwd/pageOne.jsp?Lname=abc" />
或者
<jsp:forward page="fwd/pageOne.jsp">
<param name="Lname" value="abc"/>
</jsp:forward>
这将使用 request.getParameter() 方法在 fwd/pageOne.jsp 中产生 Lname=abc。
谢谢