• 关于request、response转发与重定向的简述


      在做页面的请求与响应的时候我们多用request与response进行操作,而我们大家也知道,request是表示用户发向服务器的请求,而response是对用户请求的一个响应。

         关于转发和重定向,通俗的讲转发就像是你向售后技术支持打电话问问题,打过去是客服小王接的,但是小王无法解决,他让你等会儿,别挂电话,然后他去把问题告诉小李,让小李过来帮你解决,虽然换了人解决可是还是在这个售后处解决了问题。而重定向呢,就是小王说这个不归他们管,我们处理不了,让你打给12315投诉吧。然后你打电话给12315投诉解决了。大概就是这样的。

           因此在转发的时候你的地址栏内容不会变,发过去的请求也在,也就是说request中的内容没有改变,可以使用request进行值传递。

    而重定向的过程地址栏发生改变,你的请求也在重定向的时候丢失,原因是在第二次请求时,是再一次对服务器的访问,服务器会重写request内容。

    下面是转发和重定向的代码:

    转发:

    request.getRequestDispatcher("").forward(request, response);

    重定向:

    response.sendRedirect("");

    谈到转发和重定向就不得不提一下其中的区别:

     

    转发

    重定向

    请求次数

    浏览器仅发送一次请求、一次响应

    发送两次请求,两次响应

    地址栏是否变化

    地址栏不发生变化

    地址栏变成重定向的地址

    范围

    只能转到本项目的Servlet或其他页面

    能重定向到不只本项目的Servlet或者其他页面

    实施及地址

    是有服务器转发的,根目录为项目地址

    是由浏览器再次请求,根目录是浏览器目录

    *用到重定向和转发时要注意的问题:

    在做增删改请求操作的时候不可用转发,只能用重定向

    原因:由于转发之后地址栏不变,请求(request)内容不变,再次刷新页面的时候,请求将再次发送,造成重复操作执行,造成错误。

    在做查询操作时,只能转发,不能使用重定性。

    原因:重定向后请求会将原本的查询请求覆盖,刷新之后将得不到要查询的数据。

    以上为个人学习总结,欢迎技术大牛路过指定批评。

  • 相关阅读:
    LeetCode 282. Expression Add Operators (Hard,递归分治)
    LeetCode 279. Perfect Squares
    LeetCode 278. First Bad Version
    LeetCode 275. H-Index II
    工作笔记——使用Jest时遇到的一些问题
    RFC2616-HTTP1.1-Header Field Definitions(头字段规定部分—译文)
    RFC2616-HTTP1.1-Status Code(状态码规定部分—译文)
    RFC2616-HTTP1.1-Methods(方法规定部分—译文)
    RFC2616-HTTP1.1-Status Code(状态码规定部分—单词注释版)
    RFC2616-HTTP1.1-Methods(方法规定部分—单词注释版)
  • 原文地址:https://www.cnblogs.com/Mr-Dawei/p/7355933.html
Copyright © 2020-2023  润新知