0

当执行jsp:include或时jsp:forward,包含的页面或转发的页面将看到原始请求对象,原始参数增加了新参数,并且新值在适用时优先于现有值。

例如,如果请求有参数 Lname=abc,并且Lname=xyz为转发指定了参数,则转发的请求将具有Lname=xyz, abc.

新参数优先

请举例说明。

4

1 回答 1

2

让我们了解 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。

谢谢

于 2012-12-24T06:49:38.453 回答