forward1.jsp:
- <html>
- <head>
- <title>forward1.jsp</title>
- </head>
- <body bgcolor="#F1E2D3">
- <jsp:forward page="forforward1.jsp">
- <!-- 以下是本页面传递三个参数并赋值给forforward1.jsp -->
- <jsp:param name="name" value="me" />
- <!--以下传递的是oldName参数,赋值是本页面的name参数的值,如果未给定,下个页面显示"null"-->
- <!--若在地址栏输入:http://localhost:8080/TestApp/forward/forward1.jsp?name=121212-->
- <!-- forforward1.jsp的oldName参数的值就为121212-->
- <jsp:param name="oldName" value="<%=request.getParameter("name")%>" />
- <jsp:param name="role" value="manager" />
- </jsp:forward>
- </body>
- </html>
forforward1.jsp:
- <html>
- <head>
- <title>forforward1.jsp</title>
- </head>
- <body>
- this is forforward1.jsp page!!!!<br/>
- <%
- out.println(request.getParameter("name"));
- out.println(request.getParameter("oldName"));
- out.println(request.getParameter("role"));
- out.println(request.getParameter("ccc"));
- %>
- </body>
- </html>
输出结果(参数name和ccc未赋值):
- this is forforward1.jsp page!!!!
- me null manager null
test.jsp:
- <%
- response.sendRedirect("forforward1.jsp");
- %>
在地址栏输入test.jsp时也会跳转到forforward1.jsp,不同的是输出结果:
- this is forforward1.jsp page!!!!
- null null null null
区别在于:
(1)通过<jsp:forward>标签,传递的请求是同一个request
请求过程:客户端--->forward1.jsp--->forforward1.sjp(是同一个request请求)
(2)通过response.sendRedirect("forforward1.jsp"),传递的请求不是同一个request
请求过程:客户端--->response.sendRedirect("页面")--->(返回)客户端--->forforward1.jsp
相当于:客户端--->forforward1.jsp (这样,客户端当然没有传递参数进去,所以都显示NULL)