對於<jsp:forward>和response.sendRedirect()這兩種跳轉,信心大家一定不會陌生了,<jsp:forward>屬於跳轉的一個指令,response.sendRedirect()是response對象裡的一個跳轉方法,更確切說應該一個轉向。但不管怎麼說,兩者都能實現由一個頁面跳轉到另一個頁面的跳轉功能。 那麼兩者有什麼區別呢?還是隨便用哪一個都行呢? 我們來共同看一下:
了解區別,舉個例子是最直觀的,看以下的例子:
我們要做兩個頁面:
一個跳轉頁面【turn_01.jsp(用<jsp:forward>),turn_02.jsp(用response.sendRedirect())】
一個跳轉之後的頁面(turnAfter.html).
turnAfter.html <html> <head> <title>web</title> </head> <body> <h1>編程入門網:http://www.bianceng.cn</h1> </body> </html>
turn_01.jsp <%@ page language="java" contentType="text/html" pageEncoding="gbk" %> <html> <head> <title>web</title> </head> <body> <% System.out.println("====forward跳轉之前========="); %> <jsp:forward page="turnAfter.html"/> <% System.out.println("====forward跳轉之後========="); %> </body> </html>
運行一下,看浏覽器的結果,的確是跳轉了,但是地址欄並沒有發生改變,更有趣的是看一下服務器的結果,如下圖所示:
根據結果顯示,只有跳轉之前,而沒有跳轉之後。我們再來看另一種跳轉方式會怎麼樣。
turn_02.jsp <%@ page language="java" contentType="text/html" pageEncoding="gbk" %> <html> <head> <title>web</title> </head> <body> <% System.out.println("====response跳轉之前========="); %> <% response.sendRedirect("turnAfter.html");%> <% System.out.println("====response跳轉之後 ========="); %> </body> </html>