三分钟看图学习 快速理解javaweb中转发和重定向

2022年08月13日12:48:20 科技 1583

前言:

用最通俗易懂的例子和风趣幽默的图片,带你领略java的语言之美

大家在学javaweb的时候,有个很重要的知识点,就是通过转发和重定向来实现我们的共享信息与页面跳转。那为什么需要跳转和数据共享?

  1. 跳转:需要做责任分离(Servlet擅长写代码即处理业务逻辑,jsp擅长展示页面)通过后台经过代码的逻辑处理后跳转到对应的显示界面。如:点击登录按钮,经过后台代码验证跳转到登录成功或者失败的界面;
  2. 共享:Http是无状态的,我们跳转的时候数据无法传递,因此需要做数据共享;

我们先看下转发和重定向在代码中是如何应用的

转发的方式:

req.getRequestDispatcher("要跳转的路径").forward(request, response);

重定向跳转的方式:

resp.sendRedirect("要跳转的路径");

请求转发(RequestDispatcher)的过程:

客户首先发送一个请求到服务器端,服务器端发现匹配的servlet,并指定它去执行,当这个servlet执行完之后,它要调用getRequestDispacther()方法,把请求转发给指定的jsp页面,整个流程都是在服务器端完成的。

而且是在同一个请求里面完成的,因此servlet和jsp共享的是同一个request,在servlet里面放的所有东西,在jsp中都能取出来,因此,jsp能把结果getAttribute()出来,getAttribute()出来后执行完把结果返回给客户端。整个过程是一个请求,一个响应。

重定向(sendRedirect)的工作原理:

客户发送一个请求到服务器,服务器匹配servlet,这都和请求转发一样,servlet处理完之后调用了sendRedirect()这个方法,这个方法是response的方法,所以,当这个servlet处理完之后,看到response.senRedirect()方法,立即向客户端返回这个响应,响应行告诉客户端你必须要再发送一个请求,去访问jsp页面。

紧接着客户端收到这个请求后,立刻发出一个新的请求,去请求jsp页面,这里两个请求互不干扰,相互独立,在前面request里面setAttribute()的任何东西,在后面的request里面都获得不了。可见,在sendRedirect()里面是两个请求,两个响应。

我们再用一张图片快速理解转发和重定向

三分钟看图学习 快速理解javaweb中转发和重定向 - 天天要闻

转发和重定向大家都知道他们的区别是不同的请求次数,地址栏中的地址是否发生变化,是否能访问web-inf下面的资源和能否访问外部资源。最重要的一点是是否能共享数据,很多人对此表示疑惑,转发是如何实现数据共享或者重定向为什么不支持数据共享的。

下面我们对图片进行举例解析

我向班长借是15元钱,班长说没有(其实是不想借我),班长说小王有,让我去向小王借钱。没办法我只能去找小王借钱,小王很大方直接借我100,说不够再找他。其实这里这就是我们讲的重定向,大家可以看到,我们是发送了两次请求的,一次是和班长借钱一次是和小王借钱。

而转发不同的是我去找班长借钱,班长虽然没有钱,但是班长说我去给你借钱去,班长去找小王借钱,并把借到的钱给我。相对我来说我只发了一次请求,是发送给班长的,而班长把请求进行了转发,但是班长和小王都是在本次请求中的。

那何为数据共享呢,大家可以看到,我向班长发送了一个15元的请求数据,班长把15元的请求数据转发给小王。最后我还钱的时候,我是直接把钱还给班长的,班长再把这一百元发送给小王,而不是我直接还给小王。

班长相当于中间人,起到的作用就是数据的共享和交互。而重定向为什么不能实现数据共享呢?

首先我向班长发送借钱请求,班长说没有,请求到这里就结束了,并没有发生数据的共享,而我和小王借钱只是简单的数据交互,不是数据的共享因为和班长没有任何关系。

这就是我对重定向和转发内容的总结,希望可以帮助大家理解。

科技分类资讯推荐

长安与东风重组新进展:朱华荣称不会改变长安既定战略 - 天天要闻

长安与东风重组新进展:朱华荣称不会改变长安既定战略

2月9日,长安汽车和东风集团股份(00489.HK)同步发布了控股股东“正在与其他国资央企集团筹划重组事项”的信息。长安汽车的控股股东是兵装集团,而东风集团股份的控股股东是东风公司。随即,长安汽车和东风集团这两家汽车央企将合并重组,成为业内关注的焦点。
公安部出手了!年龄限制放宽10年、送考下乡,2025年考驾照不难了 - 天天要闻

公安部出手了!年龄限制放宽10年、送考下乡,2025年考驾照不难了

电动车加强管理以后,要求机动车类型的车辆需要持证上路,但是老年人考驾照却受阻,一方面有年龄的限制,另一方面偏远山区考驾照不方便,所以在2025年公安部出手了,年龄限制放宽10年,同时推出送考下乡服务,还进一步的降低考驾照的费用,2025年起考摩托车驾照不难了。
从“星灵安全守护体系”到昊铂HL,看懂广汽科技日 - 天天要闻

从“星灵安全守护体系”到昊铂HL,看懂广汽科技日

发布会以技术切入,并全程围绕安全展开。广汽集团董事长、总经理冯兴亚率先登场,宣布2025年四季度将正式上市支持L3级智能驾驶的车型,他同时强调面向自动驾驶时代对智能驾驶技术、整车安全架构以及突发风险处理能力的要求更高。如何才能满足更高的要求?冯兴亚提到了“广汽
关税大棒下,最受伤的车企出现了 - 天天要闻

关税大棒下,最受伤的车企出现了

特朗普的关税大棒刚挥出,尚未吓退“外敌”,却先刺痛了自己。近日,拥有玛莎拉蒂、Jeep等14个品牌的全球第四大车企斯泰兰蒂斯突然宣布裁撤900名美国工人,关闭加拿大和墨西哥两家工厂,北美生产线陷入瘫痪。几乎同一时间,捷豹路虎宣布暂停对美出口一个月,奥迪更是直接