跳转(媛媛提供)

1 篇文章 0 订阅

1.同步
(1)页面----------页面
(2)页面----------servlet
三种:

  1. A链接
    <a href=”cxx?key=value&key1=value1”>xx
  2. Form表单: input check…
  3. Js的方式实现 A链接或者form表单提交:
    (1) Window.location.href=”xxx?key=value…”
    (2) Xxform.submit();

(3)Servlet--------页面
(4)Servlet--------Servlet
*请求转发:浏览器发出一次请求,转发动作发生在服务器端,客户端不知道。
在这里插入图片描述

浏览器地址栏只保留到Servlet1的地址
转发是指浏览器发送请求到servlet1之后,servlet1需要访问servlet2,因此在服务器内部跳转到的servlet2,转发有时也称为服务器内跳转(用户不知道)。整个过程浏览器只发出一次请求,服务器只发出一次响应。所以,无论是servlet1还是servlet2,整个过程中,只存在一次请求,即用户所提交的请求。因此servlet1和servlet2均可从这个请求中获取到用户提交请求时所携带的相关数据。
1)转发器:RequestDispatcher
2)获得转发器的方式?
a. request.getRequestDispatcher(“…”).forward(request,response)
3)ServletContext.getRequestDispatcher(“”).forward…

*重定向:浏览器发出第一次请求之后,服务器返回302并且携带地址,浏览器再次发出请求。两次请求。 客户端参与两次。
在这里插入图片描述

重定向是浏览器发送请求到servlet1之后,servlet1需要访问servlet2,但并未在服务器内直接访问,而是由服务器自动向浏览器发送一个响应,浏览器再自动提交一个新的请求,这个请求就是对servlet2 的请求。
对于servlet2的访问,是先由服务器响应客户端浏览器,再由客户端浏览器向服务器发送对servlet2的请求,所以重定向有时又称为服务器外跳转。
整个过程中,浏览器共提交了两次请求,服务器共发送了两次响应。只不过,第一次响
应与第二次请求,对于用户来说是透明的,是感知不到的。用户认为,自己只提交了一次请求,且只收到了一次响应。
这样的话,就会有一个问题:servlet2中是无法获取到用户手动提交请求中的数据的,它只能获取到第二次请求中所携带的数据。
转发和重定向的区别
请求转发:
1.浏览器只发出一次请求,收到一次响应
2.请求所转发到的servlet2中可以直接获取到请求中所携带的数据
3.浏览器地址栏显示的为用户所提交的请求路径servlet1
4.只能跳转到当前应用的资源中
重定向:
1.浏览器发出两次请求,接收到两次响应
2.重定向到的servlet2不能直接获取到用户提交请求中所携带的数据
3.浏览器地址栏显示的为重定向的请求路径,而非用户提交请求的路径。也正因为如此,重定向的一个很重要作用是:防止表单重复提交
4.重定向不仅可以跳转到当前应用的其它资源,也可以跳转到到其它应用中资源
请求转发与重定向的选择
若需要跳转到其它应用,则使用重定向。
若是处理表单数据的Servlet1要跳转到另外的Servlet2上,则需要选择重定向。为了防止表单重复提交。
若对某一请求进行处理的 Servlet 的执行需要消耗大量的服务器资源(CPU、内存),此时这个 Servlet 执行完毕后,也需要重定向。
其它情况,一般使用请求转发。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值