动力节点首页 全国咨询热线:400-8080-105

绑定手机号,登录
手机号

验证码

微信登录
手机号登录
手机号

验证码

微信登录与注册
微信扫码登录与注册

扫码关注微信公众号完成登录与注册
手机号登录
首页 > 文章

JavaWeb重定向与请求转发

07-09 10:29 728浏览
举报 T字号
  • 大字
  • 中字
  • 小字

Web组件之间的跳转方式:

请求转发(forward)

URL重定向(redirect)

请求包含(include)

1. 请求转发

从servlet1请求转发到servlet2 , 在servlet1完成一部分的功能,再跳转到servlet2,继续完成剩下的功能.请求转发是服务器内部把对一个request/response的处理权,移交给另外一个对于客户端而言,它只知道自己最早请求的那个A,而不知道中间的B,甚至C、D。 传输的信息不会丢失。

语法 :

request.getRequestDispatcher(String path).forward(request,response);

参数 :

path : 要转发的路径(资源的名称)

特点 :

(1)浏览器地址栏不发生改变,不会变为目标地址

(2)整个流程都是在服务器端完成的

(3)整个过程是一个请求,一个响应

(4)共享同一个请求中的数据

(5)最终响应给浏览器的 是由servlet2来决定

(6)请求转发不能跨域访问,只能跳转到当前应用中的资源

(7)请求转发可以访问WEB-INF目录中的资源

2. 重定向

语法 :

response.sendRedirect(String url);

参数 :

url : 目标资源地址

特点 :

(1)浏览器地址栏发生改变 , 变成目标地址

(2)在sendRedirect()里面是两个请求,两个响应

(3)因为URL重定向是两个请求互不干扰,相互独立 , 所以不共享请求中的数据

(4)最终响应给浏览器的 是由servlet2来决定(相当于把目标地址拷贝到浏览器地址栏 , 敲回车)

(5)URL重定向能跨域访问 , 可以访问其他应用中的资源

(6)URL重定向不能访问WEB-INF目录中的资源

(7)因为是从客户端浏览器进行再次发送请求,所以在重定向过程中,之前传输的信息会被丢失。

3. 请求包含 :

在一个页面中可以包含其他页面的内容

servlet中没有意义

语法:

request.getRequestDispartcher(String path).include(req,resp)

4. 注意点:

如果需要跨域访问 , 避免表单的重复提交 , 只能使用URL重定向

如果需要共享请求中的数据 , 访问WEB-INF中的资源 , 只能用请求转发

例如一个网银接口,因为web容器中想要访问到网银接口,必须要使用重定向,而重定向会把之前的信息丢失,所以不能再request或者session中存数据给它使用,只能通过在重定向的location中加入数据进行请求。

动力节点在线课程涵盖零基础入门,高级进阶,在职提升三大主力内容,覆盖Java从入门到就业提升的全体系学习内容。全部Java视频教程免费观看,相关学习资料免费下载!对于火爆技术,每周一定时更新!如果想了解更多相关技术,可以到动力节点在线免费观看JavaWeb视频教程学习哦!

0人推荐
共同学习,写下你的评论
0条评论
代码小兵652
程序员代码小兵652

113篇文章贡献392215字

相关课程 更多>

作者相关文章更多>

推荐相关文章更多>

Java面试题及答案整理

提枪策马乘胜追击04-21 20:01

Spring常见面试题

代码小兵92504-17 16:07

Java零基础实战项目——五子棋

代码小兵98804-25 13:57

Java string类详解

杨晶珍05-11 14:54

6道经典算法面试题

杨晶珍05-12 16:39

发评论

举报

0/150

取消