转发跟重定向的特点与区别
转发
1.请求转发:一种在服务器内部的资源跳转方式
- 步骤:
- 通过request对象获取请求转发器对象:RequestDispatcher getRequestDispatcher(String path)
- 使用RequestDispatcher对象来进行转发:forward(ServletRequest request, ServletResponse response)
比如:
req.getRequestDispatcher("/failServlet").forward(req,resp);
- 特点:
- 浏览器地址栏路径不发生变化
- 只能转发到当前服务器内部资源中。
- 转发是一次请求
- 简单点说就是一次请求然后连续访问几个服务器内部资源。
重定向
-
完成重定向
-
重定向:资源跳转的方式
-
代码实现:
//1. 设置状态码为302
response.setStatus(302);
//2.设置响应头location
response.setHeader(“location”,"/day15/responseDemo2");//简单的重定向方法
response.sendRedirect("/day15/responseDemo2"); -
重定向的特点:redirect
- 地址栏发生变化
- 重定向可以访问其他站点(服务器)的资源
- 重定向是两次请求。不能使用request对象来共享数据
路径写法
- 路径分类
- 相对路径:通过相对路径不可以确定唯一资源
-
如:./index.html
-
不以/开头,以.开头路径
-
规则:找到当前资源和目标资源之间的相对位置关系
- ./:当前目录
- …/:后退一级目录
-
- 绝对路径:通过绝对路径可以确定唯一资源
-
如:http://localhost/day15/responseDemo2 /day15/responseDemo2
-
以/开头的路径
-
规则:判断定义的路径是给谁用的?判断请求将来从哪儿发出
- 给客户端浏览器使用:需要加虚拟目录(项目的访问路径)
- 建议虚拟目录动态获取:request.getContextPath()
<a> , <form> 重定向...
- 给客户端浏览器使用:需要加虚拟目录(项目的访问路径)
-
给服务器使用:不需要加虚拟目录
* 转发路径
-
- 相对路径:通过相对路径不可以确定唯一资源
-