什么时候使用转发和重定向

什么时候使用转发和重定向

1、什么时候用转发forward?什么时候用重定向redirect?
  1. 如果希望跳转前后地址栏地址不会发生变化, 只能使用转发; 如果希望跳转前后地址栏地址会发生变化, 只能使用重定向
  2. 如果希望在跳转前后, 能够通过request对象带数据到目的地, 只能使用转发
  3. 如果仅仅是做一个跳转,没有其他要求,此时推荐使用转发(转发是一次请求,一次响应,可以减少访问服务器的次数,降低服务器的压力)

转发

request在实现转发时,通过request.setAttribute方法和request.getAttribute方法带数据到目的地时,就是通过request对象中的map集合带数据,这个request对象上的map集合以及request对象所在的范围即称之为是一个域对象。

如果一个对象具备可以被访问的范围,通过这个对象上的map集合可以在整个范围内实现数据的共享。这样的对象就叫做域对象。

在request对象上提供了往域对象(map)中存数据的方法以及取数据的方法:

request.setAttribute(String attrName, Object attrValue);

往request域中存入一个域属性,属性名(key)只能是字符串,属性值(value)可以是任意类型。

request.getAttribute(String attrName);

根据属性名(key)获取对应的属性值(value)。返回的是一个Object类型的对象。

1、转发代码
request.getRequestDispatcher(url地址/转发到资源的地址).forward(req, res);

getRequestDispatcher()的参数可以是jsp文件或者是请求的url地址

2、转发图解

在这里插入图片描述

3、转发注意点
  • 一次请求, 一次响应
  • 进行转发的两个资源(A和B)必须是同一个项目下的Web应用(jsp或servlet类等) 否则转发会失败!
  • 转发时的路径中不能出现当前Web应用的访问路径, 因为服务器会帮我们加上
  • 因为转发是一次请求, 因此服务器会创建一个request对象和一个response对象, 因此转发时, 会将当前Servlet中的request和response对象, 通过forward方法传递给要转发的资源

重定向

当浏览器向服务器发请求访问某一个资源A,资源A在响应时通知浏览器需要再进一步请求才能获取到对应的资源,浏览器再次发请求访问服务器中的资源B,最终由资源B响应浏览器要获取的资源,这个过程叫做重定向。

1、重定向代码
response.sendRedirect(所重定向到资源的URL地址);
2、重定向图解

在这里插入图片描述

3、重定向特点
  • 重定向是两次请求、两次响应
  • 重定向前后,浏览器的地址栏地址会发生变化。(因为两次请求都是通过浏览器发起,浏览器知道这个跳转的过程,因此地址栏地址会变化)
  • 重定向前后的request对象不是同一个(因为重定向是两次请求,服务器会根据两次请求创建两个不同的request对象,request对象不是同一个,也就不能在重定向时通过request带数据到目的地。)
  • 重定向前后的两个资源可以是来自不同的web应用,甚至可以是来自不同的服务器。(进行跳转的两个资源之间没有限制)

本文转载于:https://www.cnblogs.com/zpKang/p/13099759.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值