转发和重定向的一点小结
转发和重定向
转发(forward):
request.getRequestDispatcher("/跳转的地址").forward(request,response);
重定向(redeirect):
response.sendRedirect("要跳转的地址");
他们的特点:
转发:
1.地址栏不会发生变化
2.请求次数:1次
3.根目录:http://localhost:8080/项目地址/,包含了项目的访问地址
4.请求域中的数据不会丢失
重定向:
1.地址栏:显示新的地址
2.请求次数:2次
3.根目录:http://localost:8080/ 没有项目地址
4.请求域中的数据会丢失,因为是两次请求
他们的过程比较:
1.转发:
1. 浏览器向Servlet1发出访问请求;
2. Servlet1调用forward()方法,在服务器端将请求转发给Servlet2;
3. 最终由Servlet2做出响应。
2.重定向
1. 浏览器向Servlet1发出访问请求;
2. Servlet1调用sendRedirect()方法,将浏览器重定向到Servlet2;
3. 浏览器向servlet2发出请求;
4. 最终由Servlet2做出响应。
什么时候用转发,什么时候用重定向?
要保留请求域中的数据 ,使用转发
访问数据库,增删改用重定向(redirect) ,查询用转发(forward)
|