任何人都可以让我知道1)response.sendRedirect()
之间的区别
2)jsp:向前
3)RequestDispatcher .forward
4)RequestDispatcher .include
可以专门使用它们的不同情况。
答案 0 :(得分:3)
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转发将现有请求转发到另一个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很有用时