页面的转发与重定向

请求转发:

浏览器首先发请求发送到ServletA,ServletA进过处理之后把请求传递到ServletB,由ServletB进行继续处理最后输出响应,这个传递的过程称之为请求转发。
这里写图片描述

原理:

浏览器首先发请求发送到ServletA进行处理,由于ServletA由于某种原因无法进行处理,也可能是设计的需求,所以交给ServletB继续进行服务这个时候ServletA就会调用forward()将请求转发给ServletB进行处理。

定义:

将当前的request和response对象交给指定的web组件处理。

说明:

其实在ServletA在调用请求转发的过程中,对于浏览器来说是透明的,浏览器并不知道为其服务的ServletA已经转化为ServletB,对于浏览器来说只是发出了一个请求然后获得一次响应。

注意:

在请求转发的过程中,浏览器的URL地址是不会变的。

转发对象RequestDispatcher:

1.要做请求转发首先要获取转发对象,然后调用转发对象的forward()
2.*RequestDispatcher:转发对象,它是由Servlet容器自动创建的,主要封装一个由路径所标识的服务器资源
–forward():请求转发到对应的服务器资源进行请求处理
–include():把请求发送给另外的web组件之后,原有的组件与被转发的组件都可以输出响应信息
3.可以通过两种方式获取转发对象RequestDispatcher:
(1.通过HttpServletRequest获取,也就是说从当前的请求中获取转发对象;
(2.通过ServletContext获取。

请求重定向:

用户请求用于登陆请求的ServletA,服务器端想在用户登录成功之后直接进入到用户的页面,也就是说服务器端在ServletA处理完之后,ServletB继续为用户进行服务,
此时ServletA用了sendRedirect()将客户端的请求重定向到ServletB,这个过程就是请求重定向的过程。
这里写图片描述

定义:

*服务器的Servlet通过response对象发送给浏览器一个新URL地址,让其重新请求。
*两次请求,两次响应

重定向用户登录举例:

例子:

平时上网的时候访问某些网站都有一个用户登录的流程,其实就是用户发送一个登陆请求,然后服务器端返回一个登陆响应,在登陆验证完成之后,浏览器通常会跳转到另外一个页面,并且浏览器的地址栏也改变了,我们只做了一次请求,会出现另外一个页面。

原因:

在我们登陆完成之后,服务器端向浏览器返回另外一个URL地址的响应信息,浏览器接收到该响应信息之后会自动的请求服务器端返回的URL地址,最后服务器端返回对应的跳转结果,这样用户就进入了另外的一个页面。

转发和重定向的区别

转发

a、转发不会改变浏览器的地址栏
b、转发共享同一个request
c、转发只能在同一个web应用中使用
d、使用转发跳转时,跳转是在服务器端实现的,客户端浏览器并不知道该浏览的动作。
如下图:
这里写图片描述

重定向:

a、重定向会改变浏览器的地址栏
b、重定向不共享request
c、可以重定向到任意URL
d、使用重定向跳转的社会化,跳转实在客户端实现的,也就是说客户端浏览器实际上请求了两次服务器
如下图:
这里写图片描述

一句话总结:转发是服务器行为,重定向是客户端行为

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值