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

    重定向: 服务器发送一个302状态码及一个Location消息头(值是一个地址,称为重定向地址);通知浏览器立即向重定向地址发送请求

    用法:response.sendRedirect(String url)

    注意: 1重定向之前不要调用 out.close()会报错  

      2 重定向之前服务器会清空response 对象上缓存的数据,servlet只允许同时发送一个响应

    特点: 1 重定向的地址是任意的(提前是要存在否则报404)

       2 重定向之后浏览器的地址会变成重定向地址

    原理图

     

    转发:一个web组件(servlet/jsp)将未完成的处理   通过容器转交给另外一个web组件继续完成 通常的情况是 servlet 将数据处理之后转交给jsp 去展示

    如果转发 : 1.绑定数据到request  request里有一个hashMap  resquest.setAttribute(String name,Object obj); name 绑定名  obj 绑定值

    2.获得一个转发器: url 要转发给哪一个web组件

    RequstDispatcher  rd= request.getRequestDispathcher(String url);

    3.转发

    rd.forward(request,response);jsp和servlet会共享相同的请求和对象

    4,在转发的目的地,可以使用request.getAttribute 方法获取 绑定的数据,然后进行处理。

    1转发之前不要调用 out.close()或者out.flush()会报错    

     2 转发之前服务器会清空response 对象上缓存的数据,servlet只允许同时发送一个响应

    转发原理图

    转发的特点

    1.转发的目的地只能是同一个应用内部的某个组件地址

    2.转发之后浏览器的地址栏不会变化

    3.转发所涉及的各个web组件之间可以共享同一个request和response对象

    转发与重定向的区别

    1.转发的目的地址是同一个应用内部的某个组件的地址,而重定向的地址是任意的。

    2.转发之后浏览器的地址不变,而重定向会变。

    3.转发之后的各个web组件之间可以共享request对象。重定向不可以。

    4.转发是一件事没有完成,而重定向是一件事件已经做完。

     
  • 相关阅读:
    阻止所有普通账号登录服务器
    grep命令
    redis集群配置和节点管理
    redis的安装和配置
    shell特殊字符
    获取docker容器的ip地址
    mysql5.6.38误删除root用户后的一系列问题及解决办法
    CenrOS7.5安装msyql5.7.24
    使用163邮箱的smtp ssl端口发送邮件
    linux统计大文件行数的命令效率大对比
  • 原文地址:https://www.cnblogs.com/zjf6666/p/6541864.html
Copyright © 2011-2022 走看看