Java服务器页面参数混乱



jsp:includejsp: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而不是通过请求对象访问参数。例如

${param.param1}

而在jsp:forward:中,我们可以使用请求对象访问参数。例如

request.getParameter("param1")

这就是jsp: include和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。

谢谢

最新更新