这次博客主要写本人对重定向和转发的感悟
一、转发(forward)
转发是一种在服务器内部的资源跳转方式
1、通过request对象获取请求转发器对象:RequestDispatcher,getRequestDispatcher(String path)
2、然后使用RequestDispatcher对象来进行转发:forward(ServletRequest request, ServletResponse response)
简单的来说,就是客户发送一次请求,服务器接收,然后内部处理(转发)完成之后,再回馈结果的一个过程
注意:服务器虽然访问到了多个处理层,但是实际上却是一次请求
二、重定向(redirect)
客户首先给一号处理层发送请求,不过请求实际路径在二号处理层,这时候一号处理层会返回一个二号处理层的路径,让客户再次发送请求给二号处理层,再通过二号处理完成后返回结果
重定向实际上是作了两次请求
三、重定向和转发的区别
- 转发的地址栏不变,而重定向变成转发后的资源
- 转发是一次请求,而重定向是两次请求。所以一般可以说重定向是2次转发
- 转发只能在自己内部服务器资源内相互转发,而重定向可以访问其他站点