请求转发 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()是不行的

引用尚学堂的资料:

请求转发 jsp:forward和sendRedirect的区别