转发和重定向的区别
1>转发是一次请求,重定向是两次请求 ;产生了两个request对象 ,重定向会导致request对象信息丢失 ;
转发是一次请求,请求url没有变化,转发是服务器内部request/response 控制权的移交;
2>本质区别:重定向是客户端行为,转发是服务器行为.
2.请求资源地址:
重定向:web组件可以将请求重定向到任意一个url,而不仅仅是同一个应用。
重定向的源组件与目标组件不共用同一个HttpServletRequest对象,因此不能在request范围内共享数据。
请求转发:转发的源组件与目标组件必须在同一个应用中,两者可以在request范围内共享数据。
工作流程:
1.重定向
浏览器发出http请求
>> 服务器接受请求并发送302状态码和新的对应的url到浏览器
>>
浏览器接收响应并自动请求新的url
>> 服务器接收请求并寻找客户所需的资源响应到浏览器
2.转发
浏览器发出http求其
>> 服务器接收请求
>> 服务器调用内部的一个方法在容器内完成请求处理和转发动作
>>
将客户所需资源发送到浏览器
调用方式:
1.重定向:
1).response.sendRedict(url);
2).response.setState(302);
response.setHeader("location",url);
2.转发:
1).request.getRequestDispatcher(url).forward(request,response);
2).request.getRequestDispatcher(url).include(request,response);
3).<jsp:forward page=url />