重定向和转发页面的后续代码是否执行
重定向:会在当前页面代码执行完毕后,跳转到指定的页面执行其他代码。
转 发:在本页面代码执行到转发语句后,即跳转到指定的页面执行其他代码,执行完毕后返回接着执行转发语句后的代码。
测试
在重定向之前和之后让程序各循环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之后,页面刷新,浏览器地址改变,页面内容改变