1.转发与重定向是什么?
浏览器请求在服务器的跳转方式。服务器告诉浏览器去请求另一台服务器,这叫做重定向;从服务器的A资源跳转到B资源这叫做转发,这个资源者的就是servlet在SpringMVC中就是Controller中的一个方法。
转发与重定向产生的根本原因就是本服务的AServlet服务搞不定浏览器请求进而寻找帮手完成浏览器的请求;寻找帮手是自家的就叫做转发,其他家的就叫做重定向。
2.转发
2.1 转发的贴点
- 转发是服务器行为,所以浏览器中url是不会发生改变的,这也意味着浏览器只向服务器发起了一次请求。
- 转发只能跳转的当前网站的资源,不能跳转到百度服务器;
- 请求AServlet使用的get请求方式,转发到BServlet后使用的依然是get请求
2.2 转发的应用场景
从servlet跳转到了jsp就是使用的转发;从Servlet跳转到html也是使用了转发(一般不会这么使用,除非跳转的是thymeleaf模板化的html);
2.3 转发的影响
转发可以共享数据,从servlet跳转到jsp,jsp就可以获取servlet继续使用servlet的request作用域,这是因为转发的时候把servle的request作用域传递给了jsp;有了request作用域,我们就可以动态修改jsp页面,然后相应给浏览器一个html页面,进行全局刷新。
后来有了局部刷新,我们就可以使用js在浏览器动态修改数据。所以你会感觉controller中有两个方法一模一样,但是返回结果不同,一个是转发到了html页面(thymelef模板化后),一个是返回json数据,用来作为异步请求;
3.重定向
3.1 重定型的特点
3.2 重定向的应用场景
3.3 重定向的影响
4.转发重定向有什么区别?
转发是request对象触发的,重定向是response对象触发的;
转发只能跳转到本网站的服务;重定向既能跳转到本网站服务,又能跳转到其他网站服务;
转发的状态码是200;重定向的状态码是3**;
转发的url地址栏不变;重定向发生改变;
5.转发和重定向和http协议的关系
转发和重定向就是操作就是浏览器的请求;既然是请求肯定要实现http协议;
转发的请求方式是不能改变的。重定向可以改变请求方式。