zoukankan      html  css  js  c++  java
  • 请求转发和重定向的区别以及他们的实现方式?

    1.请求转发是什么?

    答:请求转发是RequestDispatcher.forword方法;作用是:在服务器端内部将请求转发给另一个资源,浏览器只知道发出请求并得到响应结果,但不知道在服务器程序内部发生了转发行为。

    举例:别名为“浏览器”的人写信找张三100块,张三只有50块,于是张三找李四借了50块,然后将钱转给“浏览器”。可知,“浏览器”只发出一封信和收到一次回复,他只知道钱是张三借给他的,并不知道有一部分是李四的。

    2.重定向是什么?

    答:重定向是HttpServletResponse.sendRedirect方法;作用:是对浏览器的请求直接作出响应,响应的结果就是告诉浏览器去重新发出对另外一个URL的访问请求。

    举例:别名为“浏览器”写信给张三借钱,张三回信说没钱,让“浏览器”找李四借钱,并将李四的通讯地址告诉“浏览器”;于是“浏览器”按张三提供的信息给李四写信借钱,李四收到信后转钱给“浏览器”。可知,“浏览器”一共发了两封信和受到两次回复,“浏览器”也知道借钱给他的是李四。

    3.请求转发和重定向的区别?

    答:可分为五大区别:

    3.1 目标应用和目录

    请求转发方法只能将请求转发给同一个WEB应用中的组件;而重定向方法不仅可以重定向到当前应用程序中的其他资源,还可以重定向到同一个站点上的其他应用程序中的资源,甚至是使用绝对URL重定向到其他站点的资源。

    如果传递给重定向方法的相对URL以“/”开头,它是相对整个WEB站点的根目录;如果创建请求转发对象是指定的相对URL以“/”开头,它是相对当前WEB应用程序的根目录。

    3.2 浏览器地址

    调用请求转发方法进行请求转发的访问过程结束后,浏览器地址栏保持初始的URL地址不变;而调用重定向方法进行重定向的访问过程结束后,浏览器地址栏的URL会发生改变,由初始的URL变成重定向的目标URL。

    3.3 请求响应过程

    请求转发方法的调用者和被调用者之间共享相同的request对象和response对象,它们属于同一个请求和响应的过程。而重定向方法的调用者和被调用者使用的是各自的request对象和response对象,它们属于两个独立的访问请求和响应过程。

    3.4 使用场景

    对于同一个WEN应用程序的内部资源之间的跳转,特别是跳转之前要对请求进行一些前期的预处理,并要使用HttpServletRequest.setAttribute方法传递预处理结果,则用请求转发方法;对于不同WEB应用程序之间的重定向,特别是要重定向到另外一个WEB站点上的资源的时候,都应该用重定向方法。

    3.5 客户端

    无论是请求转发还是重定向,在调用它们之前,都不能有内容已经被实际输出到了客户端。如果缓存区中已经有了一些内容,则这些内容将被从缓存区中清除。

    3.6 实现方式

    3.6.1 在servlet中调用请求转发,重定向的语句如下:

    request.getRequestDispatcher("new.jsp").forword(request,response);//请求转发到new.jsp

    response.sendRedirect("new.jsp");//重定向到new.jsp

    3.6.2 在jsp页面中调用请求转发,重定向的语句如下;

    <jsp:forword page="new.jsp"/>//请求转发到new.jsp

    <%response.sendRedirect("new.jsp");%>//重定向到new.jsp

  • 相关阅读:
    MySQL "show users"
    MySQL
    A MySQL 'create table' syntax example
    MySQL backup
    MySQL show status
    Tomcat, pathinfo, and servlets
    Servlet forward example
    Servlet redirect example
    Java servlet example
    How to forward from one JSP to another JSP
  • 原文地址:https://www.cnblogs.com/su-chu-zhi-151/p/11875641.html
Copyright © 2011-2022 走看看