JSP中两种跳转的区别
1、<jsp:forward page=“”/>
l 地址栏不改变跳转—服务器端跳转
l 执行到跳转语句后无条件立即跳转—之后的代码不再被执行
l 注意:如果使用forward跳转,则要在跳转前释放掉所有的资源
l 使用forward时,request设置的属性依然能保存到下一个页面(setAttribute)
l 通过<jsp:param name=”” value=””/ >传递参数
2、response.sendRedirect(“地址”)
l 地址栏改变跳转---客户端跳转
l 所有代码执行完毕之后再跳转
l 不能保存request属性---地址改变了,客户端跳转
l 通过对URL地址的重写传递参数
使用客户端跳转,可以通过重写URL的方式将内容传递过去
Servlet中跳转的有两种方法:
方法一:response.sendRedirect("../success.jsp")
利用这个方法如果跳转前有request.setAttribute("a","b")的话,那么参数是传不到success.jsp,因为它在客户端重定向到success.jsp了,本质上跳了2次。所以参数失效,使用这个的时候会发现浏览器的URL地址发生了变化。
方法二:RequestDispatcher rd = getServletContext().getRequestDispatcher("/login.jsp"); rd.forward(request,response); 利用这个方法跳转,参数可以被正确传送,而且效率比第一种高,IE的URL地址不变。