转发:
概述:此处的转发不是动态的转发,而是html中的请求转发,一种在服务器内部的资源跳转方式。
转发可以简单理解为:A去某机关办事,和前台B说完需求(请求)后,B把问题整理清楚(B的工作内容结束)后交给同时C去做,之后返回结果。期间没有通过A去找C,而是该机关中内部自己联系完成。
servlet中实现步骤:
1.通过request对象获取请求转发器对象 —— getRequestDispatchar(String path)
2.使用RequestDispatchar对象进行转发 —— forward(ServletRequest request , ServletResponse response)
特点:
1.浏览器地址栏路径没有不发生变化
2.只能转发到当前服务器内部资源
3.转发是一次请求
重定向:
重定向是html中的一种状态,状态码为302,实质上也是一种转发,但是与转发不同,不同处会在特点上指出,这也是一个面试题目。
重定向可以简单理解为:A去某机关办事,和前台B说明需求(请求)后,B告诉你,这件事不是在该机关处理,并把C所在的机关位置告诉你,叫你去找C处理。C能不能处理无所谓,当请求响应回来的是一串地址并且去访问了,那就是重定向。
设置重定向的方式:
方式一
设置状态码为302
设置响应头
方式二
使用sendRedirect(String s 跳转资源路径)方法
特点:
1.地址栏发生变化
2.重定向可以访问其他战点(服务器)的资源
3.重定向是两次请求
面试题:forward与redirect的区别(转发与重定向的区别):
1.转发是一次请求,而重定义是两次请求
2.转发时地址栏不会发生变化,而重定向地址栏会发生变化
3.转发只能访问该服务器内部资源,而重定向可以访问其他服务器的资源