始终要记住一点就是这种跳转是让客户端浏览器本身去访问指定的页面,这个指定页面的地址就是sendRedirect("")参数的内容。若是跳转的页面是webapp里面的页面,客户端须要两层访问服务器。若是是其余网址的话,客户端则再也不访问此服务器,转而访问其余的服务器。是服务器端与客户端的两次往返。速度仍是慢些。web
(1)地址栏内容有变化。浏览器
(2)sendRedirect("")后的语句依旧执行,因此在此语句后面的有向客户端传送信息的语句时候会出现闪烁现象,通常状况下能够作个判断来,若是怎么样则转向指定的页面,不然执行其余的代码。服务器
(3)sendRedirect("")里的参数能够是网页也能够是jsp页面等。app
如sendRedirect(“http://www.baidu.com”)//转到webapp外面去。webapp
sendRedirect(“a.jsp”) //转到webapp里面的其余页面去。jsp
(4)若是写成sendRedirect(“/a.jsp”)此时的/表明的是http://127.0.0.1/,它并不包含这个页面所在的webapp。因此要在/后面加上a.jsp的路径。对象
(5)它们不共用一个request对象。并且跳转页面a.jsp是接收不到传递给包含此跳转指令的页面的参数的。可是包含此跳转指令的页面能够向跳转页面中传递参数,此时跳转页面a.jsp可以接收到传递的参数。如sendRedirect(“a.jsp?name=123”),因此说用此种跳转的话可让包含此跳转指令的页面接收到参数,而后将参数再往跳转页面中传递。get
始终要记住一点就是这种跳转是让服务器端内部进行跳转。并且只能在服务器的内部转换,并将跳转到最后一个页面的执行结果返回给客户端,速度快。服务器端
(1) 地址栏内容没有变化。request
(2) <jsp:forward page=""/>后面的语句不会被执行的。
(3)若是写成<jsp:forward page=“/a.jsp”/>,此时的/表明的是http://127.0.0.1/工程名,此时在后面要跟上a.jsp的路径。
(4)跳转页面a.jsp和包含跳转页面不共用一个request对象。可是跳转页面能够访问到传递给包含此跳转指令的页面的参数的, 跳转的页面的request包含的参数比包含跳转指令的页面的参数要大。这种状况和静态包含和动态包含类似。
(5)包含此跳转指令的页面能够向要跳转到的页面传递参数。
传参方式一:<jsp:forward page=“a.jsp?param=123”/>时被包含的jsp页面是能够访问该参数的。
传参方式二:
<jsp:forward page=“a.jsp”>
<jsp:param name=“” value=“”/>
</ jsp:include >