zoukankan      html  css  js  c++  java
  • 重定向和转发

    重定向

      1、什么是重定向?

        在服务器为浏览器提供响应时,回传的数据包中的状态行里面是302状态码,同时在消息头内会增加一个键值对,名称为Location,值是一个新的URL地址。当这个响应到达浏览器的时候,这一次的请求响应过程并未结束,浏览器遇见302状态码之后,会立即按照Location头信息中指定的URL地址发送新的一个请求,这样一个在接到响应后又立即发出请求的过程叫做重定向。对于客户端用户来讲,中间的变化过程不会被察觉,因为这个过程是由浏览器自动完成的。

      2、重定向的特点

        重定向地址任意

        重定向之后浏览器的地址会发生变化

        重定向之前,容器会清空response对象上存放的所有数据。也就是说实体内容内是没有任何数据的。

      3、如何实现 重定向?

        response.sendRedirect(String url),resoponse调用是因为发回的响应信息是由response对象控制

        

    转发

     1、什么是转发?

        在Web服务器端处理用户请求的时候,会有需要多个Web组件配合才能完成的情况。一个Web组件(Servlet/JSP)将未完成的处理通过容器转交给另外一个Web组件继续完成,这个转交的过程叫做转发。

        常见情况是Servlet负责获取数据,然后将数据转交给JSP进行展现。
     
      2、如何实现转发?
        a.绑定数据到request对象
          在转交的过程中一定会有数据的传递,并且涉及到的Web组件都是针对同一个请求,所以利用request来保存共同处理的数据不仅仅能让数据共享,也能够随着请求响应的结束而销毁,不会占用服务器更多的资源

          request.setAttribute(String name,Object obj);

        b.获得转发器
          说明转交下一个组件的路径 
          RequestDispatcher rd = request.getRequestDispatcher(String uri);
        c.实现转发
          使用转发器完成转发的动作,因下一个Web组件要针对同一个请求和响应继续完成后续的工作,所以在转发时要将本次的请求和响应对象作为参数传给下一个Web组件。
          rd.forward(request,response);
     
      3、转发和重定向的区别

          共享request和response:转发可以,重定向不行。因为请求和响应对象的生存时间是一次请求与响应。

          目的地有无限制:转发有限制(同一个应用),重定向无限制

          浏览器地址栏:转发无变化,重定向有变化。


    作者:danielJinyu

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意请保留此段声明,请在文章页面明显位置给出原文连接
    Github:https://github.com/DanielJinyu

  • 相关阅读:
    【Android】页面切换ViewFlipper、ViewPager、ViewFlow
    【Android】9patch图片以及例子说明
    【Android】proguard混淆代码
    【iOS】ios6.0 UINavigationController支持屏幕自动旋转
    【Android】Notification官方文档归纳
    c++第一天
    c++第二天
    java第七天(布局管理器)
    Linux第一讲(韩顺平)
    java第四讲(类与对象)
  • 原文地址:https://www.cnblogs.com/danielJinyu/p/11394574.html
Copyright © 2011-2022 走看看