jsp:forward和sendRedirect的區別
response.sendRedirect():
Index.jsp
<%out.println("aaaaaaaaaaaaa");response.sendRedirect("/Forward_sendRedirect/Jsp1.jsp?name=ken");out.println(".....");%>
翻譯成index_jsp.java後:
。。。。。。。。。。。。。。。。。。。。。。
try { response.setContentType("text/html"); pageContext =_jspxFactory.getPageContext(this, request, response, null, true, 8192, true); _jspx_page_context = pageContext; application =pageContext.getServletContext(); config = pageContext.getServletConfig(); session = pageContext.getSession(); out = pageContext.getOut(); _jspx_out = out; out.println("aaaaaaaaaaaaa");response.sendRedirect("/Forward_sendRedirect/Jsp1.jsp?name=ken");out.println("....."); } catch (java.lang.Throwable t)
。。。。。。。。。。。。。。。。。。。。。。。。
<jsp:forwardpage=" "/>
Index.jsp:
<html><body><p> this isindex.jsp </p><%System.out.println("000"); %><jsp:forward page="Jsp1.jsp"/><%System.out.println("111");%></body></html>
翻譯成index_jsp.java後:
。。。。。。。。。。。。。。。。。。。。。。
try { response.setContentType("text/html"); pageContext =_jspxFactory.getPageContext(this, request, response, null, true, 8192, true); _jspx_page_context = pageContext; application =pageContext.getServletContext(); config = pageContext.getServletConfig(); session = pageContext.getSession(); out = pageContext.getOut(); _jspx_out = out; out.write("<html>\r\n"); out.write("<body>\r\n"); out.write("<p> this is index.jsp </p>\r\n");System.out.println("000"); out.write('\r'); out.write('\n'); if (true) { _jspx_page_context.forward("Jsp1.jsp"); return; } out.write('\r'); out.write('\n');System.out.println("111"); out.write("\r\n"); out.write("</body>\r\n"); out.write("</html>");} catch (java.lang.Throwable t) {
<jsp:forward page="Jsp1.jsp"/>
等價於:
_jspx_page_context.forward("Jsp1.jsp");
return;
關於參數傳遞:
http://localhost:8080/Forward_sendRedirect/index.jsp?name=ken
跳轉後,等價於訪問
http://localhost:8080/Forward_sendRedirect/Jsp1.jsp?name=ken
訪問index.jsp時的參數被傳遞到了目標Jsp1.jsp
而response.sendRedirect()是不行的
引用尚學堂的資料: