请求跳转、重定向、定时刷新的区别
请求转发:
一次请求,一次响应 request对象是同一个
地址栏不会发生变化
只能用于服务器内部的资源跳转, 并且只能是同一应用中的不同资源上进行跳转, 不可用在不同应用和不同服务器中的资源跳转
请求重定向:
两次请求,两次响应 request对象不是同一个
地址栏会发生变化
可以用于服务器内部的资源跳转, 也可以用于不同应用和不同服务器之间的资源跳转
定时刷新:
两次请求,两次响应 request对象不是同一个
地址栏会发生变化
可以用于服务器内部的资源跳转, 也可以用于不同应用和不同服务器之间的资源跳转
和重定向不同的是, 定时刷新可以在刷新到新的地址之间设置一个时间, 在间隔的这段时间内可以输出文本到浏览器并维系一段时间
那什么时候用哪种方式进行资源的跳转呢?
如果是同一服务器中的同一应用内部的资源跳转:
~如果需要利用request域在跳转的资源之间传输数据, 只能用请求转发
~如果不想让地址栏发生变化, 只能用请求转发
~如果需要地址栏发生变化, 只能用重定向或定时刷新
~如果没有什么特殊需求, 三种方式都可以, 但是推荐使用转发, 可以减少请求次数降低服务器的压力.
~如果只是想更新刷新操作, 最好使用重定向或定时刷新, 使用请求转发, 在刷新时会把刚才的操作再做一遍, 可能会导致一些问题, 比如表单重复提交或重复支付订单等
如果是不同服务器或不同应用内部的资源跳转, 只能用重定向或者定时刷新:
重定向和定时刷新的主要区别在于: 重定向会立即跳转, 而定时刷新可以设置一个时间间隔, 在指定时间后再进行跳转.
如果在跳转之前需要输出提示信息(如: 注册成功, xx秒后跳转到xxx)只能用定时刷新, 否则两种方式都可以.