<jsp:forward page="***.jsp||Html"/> response.sendRedirect("***.jsp||Html") 两种跳转方法不同点: |
<jsp:forward:从一个页面转到另为一个页面,可以利用request来转递参数,因为他们的request没有变的,在同一个请求内。
response.sendRedirect;就不同了,当用它转到另为一个面页时,它是等于重新发出了一个请求,所以在原来页面request参数,在到了新的页面后,就失效了,因为它们的request不同了。
response.sendRedirect();发送一个临时重定向响应到客户端,给出重定向位置。此重定向URL必须是绝对位置,不能是相对位置。不能带参数。
<jsp:forward>能够向目标文件传送参数和值。如果使用了<jsp:param/>标签的话 ,目标文件必须是一个动态的文件,能够处理参数。如果使用了非缓冲输出,那么使用 <jsp:forward>时就要小心;如果使用<jsp:forward>之前,JSP文件已经有了数据,那么 文件运行将会出错。<jsp:forward>标签从一个JSP文件向另一个文件传递一个包含用户 请求的request对象,<jsp:forward>标签以下的代码将不能运行。
<jsp:forward> 是在服务器端执行的,对用户来说是透明的。而 response.sendRedirect("xxx.jsp") 是让用户重新给服务器发出请求到xxx.jsp这个新的地址,相当于客户端使用 location.replace() 函数,这样不论用户如何刷新都不会重新执行redirect之前的页面。而且使用浏览器后退也看不到之前的页面。
response.sendRedirect() 想带参数的话,自己在地址中写成 xxx.jsp?param1=aaa&... 这种形式传递参数就好了。