请求转发(forward)和重定向(redirect)的区别
- 概念
转发forward:转发是服务器把本次请求对象和响应对象直接交给下一个资源,只有一次请求,数据可以共享。
重定向redirect:服务器强制性地要求浏览器再次发出新请求去访问指定路径,多次请求,数据无法共享。 - 区别
请求的个数:转发只有一个请求,重定向多个请求;
请求内数据共享:转发共享数据,重定向不共享数据;
地址栏:转发地址栏不会变化,重定向地址栏变化;
跨域访问:转发不可以跨域,重定向可以跨域访问;
访问WEB-INF的资源:转发可以访问,重定向不能访问。 - 使用场景
如果需要共享请求中的数据,只能用请求转发;
若要访问WEB-INF中的资源 ,只能用请求转发;
若要跨域访问,只能用重定向;
请求转发可能造成表单重复提交问题;
开发阶段用户登录可以使用请求转发,提高开发效率,但是上线后需要改为重定向。