Java Server Page Param混乱

时间:2012-12-24 06:08:10

标签: java jsp jsp-tags

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

例如,如果请求有参数 Lname=abc和参数Lname=xyz是 指定转发请求 将有Lname=xyz, abc

新参数优先

请举例说明。

1 个答案:

答案 0 :(得分:2)

让我们理解jsp:include和jsp:forward之间的主要区别。

jsp:include,包括当前页面内的页面。因此,包含的页面将准确显示在您在当前页面中添加了jsp命令的位置。

e.g。

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

但是jsp:forward会将当前页面转发到转发页面。在调用当前页面时的含义在转发页面之后立即调用。

e.g。

if (...) { forwarded to pageOne.jsp }
else if (...) { forwarded to pageTwo.jsp }

现在,我们可以访问jsp:forward和jsp:include。

的参数

jsp:include:我们可以使用param访问参数而不是请求对象。 e.g。

${param.param1}

在jsp:forward中:我们可以使用请求对象访问参数。 e.g。

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。

由于