请求转发 jsp:forward和sendRedirect的区别
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()是不行的
引用尚学堂的资料: