forward与redirect的区别

1. forward是服务器的转向而redirect是客户端的跳转

2. 使用forward浏览器的地址不会发生改变,而redirect会发生改变

3. forward是一次请求中完成,而redirect是重新发起请求

4.forward是在服务器完成(必须是同一个服务器),而不用客户端重新发起请求,效率高

 

是servlet种的2种主要的跳转方式:forward又叫转发,redirect叫做重定向。

区别:

地址栏是否变化,数据共享,应用场景,效率,本质,次数

两者的区别总结:

1. 地址栏是否变化

1> forword是服务器内部的重定向,服务器直接访问目标地址的 url网址,把里面的东西读取出来,但是客户端l浏览器并不知道,因此用forward的话,客户端浏览器的网址是不会发生变化的。

必须在同一个服务器中,否则只能使用重定向

2> redirect是服务器根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址

地址栏显示的是新的地址。

2. 数据是否共享

1> 由于转发整个过程是同一个request,因此forward会将request的信息带到被重定向的jsp或者servlet中使用。即可以共享数据

2> redirect不能共享

3. 使用场景

1>forword 一般用于用户登录,成功登录后转发到首页

2>redirect一般用于用户注销登录,成功注销后,返回主页面或者跳转到其他网站

4. 从效率来说

1>forword效率高(一次请求),而redirect效率低(二次请求)

5. 从本质来说

forword转发是服务器上的行为,而redirect重定向是客户端浏览器的行为

6. 请求的次数

forword只有一次请求;而redirect有两次请求,

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class MyServlet extends HttpServlet {
    public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.getRequestDispatcher("/other/page.html?para=some").forward(req, resp);
        resp.sendRedirect(req.getContextPath() + "/index.html");
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值