1、服务器端跳转:
又称为内部跳转,当客户端向服务器发送一个请求,请求当前资源时,这个资源在服务器内部跳转到另一个资源,再向客户端发送一个响应(即客户端只产生了一次请求)。
request.getRequestDispatcher("listHero").forward(request, response);//服务器跳转
forward方式只能跳转到本web应用中的页面上
跳转后浏览器地址栏不会变化。
使用这种方式跳转,传值可以使用三种方法:url中带parameter,session,request.setAttribute;未超出request的属性范围,request属性能够保存到跳转页。
JSP执行到跳转语句时会立刻进行跳转,不再执行之后的代码;所以在执行服务器端跳转时,一定要在跳转语句之前释放掉临界资源(如数据库连接,I\O流操作等)。
2、客户端跳转:
又称为外部跳转,当客户端向服务器发送一个请求,请求当前资源时,这个资源向客户端发送一个去请求其他地址的回应。客户端再根据这个地址去进行下一次请求(即客户端产生了两次请求)。
response.sendRedirect("listHero");// 客户端跳转
sendRedirect可以将页面跳转到任何页面,不局限于本web应用中,如:response.sendRedirect(http://www.baidu.com);此时url会变成http://www.baidu.com
跳转后浏览器地址栏变化,地址栏会改变为第二次请求的URL。
这种方式要传值出去的话,只能在url中带parameter或者放在session中,无法使用request.setAttribute来传递,即超出了request的属性范围,无法进行其属性的传递。
会在整个页面的代码执行完后,才执行跳转。