Web容器的重定向和转发

重定向和转发都可以将本次请求指向另一个资源。

      比如用户在访问某个页面的时候,检测到用户没有登录,可以使用重定向或转发将本次请求的指向登录界面。

重定向:

      response.sendRedirect(request.getContextPath()+“/login.jsp”);

转发:

           request.getRequestDispatch(“login.jsp”).forward(servletRequest,servletResponse);

     或  request.getRequestDispatch(“login.jsp”).include(servletRequest,servletResponse);

区别:

     重定向走的是Request请求。

     转发走的是forward方法或者include方法。

具体应用场景

      比如在用户访问某页面时,检测到用户没有登录,我们在过滤器中将页面指向login.jsp,如果过滤器是过滤所有jsp请求的话。

     使用重定向则会再次进行过滤,而重定向到login.jsp它还是一个jsp请求,所以还是会过滤……,如此则形成了死循环,除非设置条件跳出。

    使用转发,因为转发走的是forward方法会长include方法(不是Request请求),所以过滤器不会再进行过滤。但是虽然加载的是登录界面,但在地址栏中显示的还是用户输入的地址。

性能:

     在性能方面,通常转发的性能要优于重定向的性能。

 

 

 

 

 

 

你可能感兴趣的:(重定向,后端)