重定向和转发页面的后续代码是否执行

重定向:会在当前页面代码执行完毕后,跳转到指定的页面执行其他代码。 
转 发:在本页面代码执行到转发语句后,即跳转到指定的页面执行其他代码,执行完毕后返回接着执行转发语句后的代码。

测试

在重定向之前和之后让程序各循环sleep五秒,在控制台打印输出,看页面在什么阶段跳转

//重定向前循环sleep五秒
for (int i = 0; i < 5; i++) {
    System.out.println("before redirect:" + i);
    try {
        Thread.sleep(1000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}

//重定向
response.sendRedirect("result.jsp");

//重定向后循环sleep五秒
for (int i = 0; i < 5; i++) {
    System.out.println("after redirect:" + i);
    try {
        Thread.sleep(1000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}


可以发现:控制台打印了5个before redirect和5个after redirect之后,页面刷新,浏览器地址改变,页面内容改变
1. 重定向之后的代码会继续执行
2. 当前程序所有代码执行完毕后,才会执行重定向跳转

引申
重定向之后,加上return,可让之后的代码不再执行

boolean flag = true;
if (flag) {
response.sendRedirect("result.jsp");
return;
}

控制台打印了5个before redirect之后,页面刷新,浏览器地址改变,页面内容改变

原文地址:https://www.cnblogs.com/wcxcc/p/10681183.html