Servlet中的两种跳转方法:

来源:互联网 发布:苹果mac安装搜狗输入法 编辑:程序博客网 时间:2024/06/05 19:09
方法一: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地址不变。
 
 在什么地方用就是看自己的需求了。具体问题具体分析。
 
   response.sendRedirect=把地址发送到浏览器端,让浏览器再请求,这是地址栏变的原因
request.getRequestDispatcher().forward=服务端的控制权转向,等于从一个servletClass跳到另一个servletClass或jsp继续运行,最后才返回所有的结果,所以地址栏不会变
request中attribute与parameter的有效期是在一次请求后,而实际使用第一种情况后发生了再次请求,所以是attribute与parameter丢失的原因。
效率上讲1肯定不如2,但有时候你必须得用1,其他时候用2即可。
原创粉丝点击