Servlet——转发与重定向

当我们在浏览网页或者进行相关网页操作时常常会遇到页面跳转,为了避免在页面跳转过程中发生不必要的麻烦,我们需要掌握其中的原理及其操作。这一点对于一个程序员,特别是从事java web开发方面的程序员来说尤为重要。

先来看一张图:

在这里插入图片描述

此图形象生动的描绘了转发的原理:转发即为请求处理器(ServletA)将请求交给另一个处理器处理(ServletB),再讲结果返回的过程

转发过程大体为: 客户首先发送一个请求到服务器端,服务器端发现匹配的servlet,并指定它去执行,当这个servlet执行完之后,它要调用getRequestDispacther()方法,把请求转发给指定的student_list.jsp,整个流程都是在服务器端完成的,而且是在同一个请求里面完成的,因此servlet和jsp共享的是同一个request,在servlet里面放的所有东西,在student_list中都能取出来,因此,student_list能把结果getAttribute()出来,getAttribute()出来后执行完把结果返回给客户端。整个过程是一个请求,一个响应。

在转发过程中,用户浏览器的地址栏不会被更改,也就是说,用户访问什么地址就跳转到什么地址,和用户的输入地址一致。

特点:

  1. 转发是服务器行为;
  2. 转发是浏览器只做了一次访问请求;
  3. 转发浏览器地址不变;
  4. 转发两次跳转之间传输的信息不会丢失,所以可以通过request进行数据的传递;
  5. 转发只能将请求转发给同一个web应用中的组件。

那么,何为重定向呢?

在这里插入图片描述

 如图所示,重定向即为客户端与服务器多次进行请求与响应的过程,但服务器并为对客户端发出的请求做出相应处理,而是告诉用户需要发送哪几个请求

此过程大体为:客户发送一个请求到服务器,服务器匹配servlet,servlet处理完之后调用了sendRedirect()方法,立即向客户端返回这个响应,响应行告诉客户端你必须要再发送一个请求,去访问student_list.jsp,紧接着客户端收到这个请求后,立刻发出一个新的请求,去请求student_list.jsp,这里两个请求互不干扰,相互独立,在前面request里面setAttribute()的任何东西,在后面的request里面都获得不了。由此可见,在sendRedirect()里面是两个请求,两个响应。

特点:

1.重定向是客户端行为;
2.重定向是浏览器向服务器发出不止一次请求的过程;
3.重定向浏览器地址改变;
4.重定向两次跳转之间传输的信息会丢失;
5.重定向可以指向任何的资源,包括当前应用程序中的其他资源,同一个站点上的其他应用程序中的资源,其他站点的资源。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

忱遥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值