有谁能告诉我
1) response.sendRedirect()
2) jsp:forward
3) RequestDispatcher .forward
4) RequestDispatcher .include之间的
区别,它们可以具体使用的不同情况。
1 回答
1) response.sendRedirect()
---当用户因密码错误而登录失败时,您可以再次重定向到登录页面,无需任何参数或属性
response.sendRedirect 使用指定的重定向位置 URL 向客户端发送临时重定向响应。此方法可以接受相对或绝对 URL。Servlet 容器在向客户端发送响应之前将相对 URL 转换为绝对 URL。如果该位置是相对的,没有前导“/”,则容器将其解释为相对于当前请求 URI。如果位置与前导“/”相对,则容器将其解释为相对于 servlet 容器根。
2)重定向和转发的区别
Servlet 重定向和 servlet 转发都用于处理对其他 URL/Servlet 的请求处理,但它的工作方式有很大不同。主要区别在于 Servlet 重定向始终向客户端发送 HTTP 状态代码 303 以及重定向 URL。客户端然后向 URL 发送一个新请求。因此 response.sendRedirect() 比转发多一次往返,因为 servlet 转发只是将请求转发到服务器上的另一个资源,它不需要完整的往返,这就是转发的原因有时称为服务器端重定向。另一个区别是您可以将请求重定向到另一个站点上的某个其他 URL,但您不能将请求转发到不同站点上的某个其他 URL。Servlet forward 将现有请求转发到另一个 JSP 或 Servlet,因此所有请求参数和属性都可用于目标 servlet。但是通过重定向,浏览器会向指定的 URL 发送新请求,因此旧的请求参数和属性将无法用于目标资源。浏览器完全不知道 servlet 转发,因此浏览器地址栏中的 URL 将保持不变。当使用 servlet 重定向时,浏览器地址栏中的 URL 将更改为新 URL。
3) jsp:forward , jsp:include 和 RequestDispatcher .forward , RequestDispatcher .include 相同
Jsp 内部转换为 Servlet ,所以 Jsp Forward 和 Servlet Forward 没有区别。
当你想转发你的响应和请求 RequestDispatcher .forward 很有用
当您想包含一些结果时 RequestDispatcher .include 很有用