forward()和sendRedirect(),你们太可爱了

来源:互联网 发布:weblogic端口配置文件 编辑:程序博客网 时间:2024/04/30 01:29

Dispatcher 名词n:调度者,发送员。

Redirect    re+direct  ,direct这里为vt:对准,指导。合起来为重新对准。

跳转有两个如题的方法,我这里谈谈我对RequestDispatcher.forward()和HttpServletResponse.sendRedirect()的理解:

我是这么用的:

RequestDispatcher rd = request.getRequestDispatcher(page);

rd.forward(request, response);

既然是调度员,那么很容易理解,它只能调度自己web内的资源。也就是说,该方法只能将请求转发给同一个web应用中的组件。

很容易理解它们调度来调度去,用的是同一个request和response!所以内置对象的一些方法都能用啦,getParameter之类的ok~~

我是这么用的:

 response.sendRedirect(page); 

重新对准sendRedirect()就不一样了。它可以定向到任何能定向到的地方,只要你方向对。其实它的原理是向浏览器发送的一个特殊的Header,让浏览器去转向指定的页面,所以很明显看到浏览器地址栏的变化。这已经是不同的请求了,不同的请求的request不一样。

注意两点:

1.用完之后return,因为你已经定向到别的地方,不再需要向浏览器response输出什么了。

2.用该方法之前,不能向浏览器发送HTML了。因为cache才8k~~~一下是sendRedirect的原理: