当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而不是通过请求对象访问参数。例如
${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。
谢谢