Servlet自学第19讲:sendRedirect(重定向)与forworld(转发)区别

时间:2021-07-24 17:06:49

一个web资源受到客户端请求后,通知服务器去调用另一个web资源进行处理,称之为请求转发。
一个web资源受到客户端请求后,通知浏览器去调用另一个web资源进行处理,称之为请求重定向。

转发方法:

requeset.getRequestDispatcherforward(request,response);

资源地址:不需要项目名。因为它只是在WEB服务器内部转发。
我们现在使用 请求转发的方法来实现上次我们使用 response.sendRedirect() 实现效果使用 request提供的转发方法。
Servlet自学第19讲:sendRedirect(重定向)与forworld(转发)区别
Request中的Attribute在一次请求有效。一次请求:没有返回到浏览器,就为一次请求。
请求转发的的(uml)图,这里我们画图说明(uml)
Servlet自学第19讲:sendRedirect(重定向)与forworld(转发)区别

1.使用 forward 不能转发到 该web应用外的 url
2.因为 forward 是发生在web服务器,所以 Servlet1 和 Servlet 2使用的是用一个request 和response.
使用sendRedirect() 方法不能通过request.setAttribute() 把 属性传递给下一个Servlet

比较sendRedirect()和request.getRequestDispatcher().forward(request,response)
请问 sendRedirect() 和 forward 的区别是什么
答:(1)叫法 sendRedirect() 重定向,转发 forward() 叫转向
(2)实际发生的位置不一样
sendRedirect 发生 浏览器
forward 发生 web服务器
(3)用法不一样
request.getRequestDispatcher(“/资源URI”).forward(request,response)
response.sendRedirect(“/web应用/资源URI”);
(4)能够去URL 范围不一样
sendRedirect 可以去 外边URL
forward 只能去当前的WEB应用的资源

什么是一次 http请求:
只要没有停止,也没有回到浏览器重定向,就算一次
比如:
Servlet自学第19讲:sendRedirect(重定向)与forworld(转发)区别