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

  • 相关阅读:
    Java的代理proxy机制
    Java 编译器 javac 笔记:javac API、注解处理 API 与 Lombok 原理
    Java 运行时获取方法参数名
    python 之 list 和 dict 置空
    Python 模块(Module)调用
    Python 模块(Module)及包
    Mybatis中进行批量更新(updateBatch)
    可持久化线段树+主席树+动态主席树
    无向图的割点与割边
    [NOIP2016] 愤怒的小鸟 题解
  • 原文地址:https://www.cnblogs.com/su-chu-zhi-151/p/11875641.html
Copyright © 2011-2022 走看看