response.sendRedirect和<jsp:forward page="" /> 都可以使页面跳转,区别如下:
1)客户端跳转。redirect会首先发一个response给浏览器,然后浏览器收到这个response后再发一个requeset给服务器,然后服务器发新的response给浏览器.这时页面收到的request是一个新从浏览器发来的。 跳转后浏览器地址栏变化。
2)服务端跳转。forward发生在服务器内部,在浏览器完全不知情的情况下发给了浏览器另外一个页面的response,这时页面收到的request不是从浏览器直接发来了,可能己经放了数据。 跳转后浏览器地址栏不变化。
2)服务端跳转。forward发生在服务器内部,在浏览器完全不知情的情况下发给了浏览器另外一个页面的response,这时页面收到的request不是从浏览器直接发来了,可能己经放了数据。 跳转后浏览器地址栏不变化。
特别注意:如果同一页面中response.sendRedirect()后,还有response.sendRedirect()则会报错。因此要在除最后一个response.sendRedirect外的其它response.sendRedirect后紧跟一句return,关闭原进程。最后一个response.sendRedirect后一定不要有return。response.sendRedirect会创建出新的进程。