forward()和之间的概念区别是sendRedirect()什么?
forward()
sendRedirect()
requestDispatcher-forward()方法 当我们使用该forward方法时,请求将被转移到同一服务器内的另一个资源以进行进一步处理。 在的情况下forward,Web容器在内部处理所有处理,并且不涉及客户端或浏览器。 3. 在对象forward上调用when时requestDispatcher,我们传递了请求和响应对象,因此旧的请求对象存在于将处理请求的新资源上。 从视觉上看,我们看不到转发的地址,它是透明的。 使用该forward()方法比sendRedirect。 6. 当我们使用正向重定向时,并且我们想在新资源中使用相同的数据时,我们可以使用,request.setAttribute()因为我们有一个可用的请求对象。 发送重定向 在的情况下sendRedirect,请求将转移到另一个资源,另一个域或另一个服务器以进行进一步处理。 当您使用时sendRedirect,容器会将请求传输到客户端或浏览器,因此,在sendRedirect方法内部给出的URL 作为对客户端的新请求可见。 如果发生sendRedirect呼叫,则旧的请求和响应对象将丢失,因为浏览器将其视为新请求。 在地址栏中,我们可以看到新的重定向地址。这不是透明的。 sendRedirect速度较慢,因为需要一个额外的往返行程,因为创建了一个全新的请求,而旧的请求对象丢失了。需要两个浏览器请求。 但是在中sendRedirect,如果我们要对新资源使用相同的数据,则必须将数据存储在会话中或与URL一起传递。 哪个好? 它取决于哪种方法更有用的方案。 如果您希望将控制权转移到新服务器或上下文中,并且将其视为全新任务,那么我们去寻求sendRedirect。通常,如果可以在重新加载浏览器后安全地重复该操作并且不会影响结果,则应使用转发。
当我们使用该forward方法时,请求将被转移到同一服务器内的另一个资源以进行进一步处理。
forward
在的情况下forward,Web容器在内部处理所有处理,并且不涉及客户端或浏览器。
3. 在对象forward上调用when时requestDispatcher,我们传递了请求和响应对象,因此旧的请求对象存在于将处理请求的新资源上。
requestDispatcher
从视觉上看,我们看不到转发的地址,它是透明的。
使用该forward()方法比sendRedirect。
sendRedirect
6. 当我们使用正向重定向时,并且我们想在新资源中使用相同的数据时,我们可以使用,request.setAttribute()因为我们有一个可用的请求对象。
request.setAttribute()
在的情况下sendRedirect,请求将转移到另一个资源,另一个域或另一个服务器以进行进一步处理。
当您使用时sendRedirect,容器会将请求传输到客户端或浏览器,因此,在sendRedirect方法内部给出的URL 作为对客户端的新请求可见。
如果发生sendRedirect呼叫,则旧的请求和响应对象将丢失,因为浏览器将其视为新请求。
在地址栏中,我们可以看到新的重定向地址。这不是透明的。
sendRedirect速度较慢,因为需要一个额外的往返行程,因为创建了一个全新的请求,而旧的请求对象丢失了。需要两个浏览器请求。
但是在中sendRedirect,如果我们要对新资源使用相同的数据,则必须将数据存储在会话中或与URL一起传递。
它取决于哪种方法更有用的方案。
如果您希望将控制权转移到新服务器或上下文中,并且将其视为全新任务,那么我们去寻求sendRedirect。通常,如果可以在重新加载浏览器后安全地重复该操作并且不会影响结果,则应使用转发。
资源