forward()与include()区别:


forward方法是把请求的内容转发到另外的一个servlet.而include是把另一个servlet处理过后的内容拿过来.举例来说比如在servlet1打一句out.print("1111"),servlet2打上out.print("22222"),在servlet1中用forward命令会转到servlet2中,显示22222.而在servlet1中使用include方法会依然在servlet1的页面中,但是在1111后打出22222.


forward()与redirect()区别:


forward仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;redirect则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,forward更加高效,在forward可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法.从地址栏显示来说 forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容 再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址. redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL.所 以redirect等于客户端向服务器端发出两次request,同时也接受两次response.




forward,include,redirect是servlet中web页面的三种不同的跳转关系:


forward、include由 javax.servlet.RequestDispatcher来封装,由包容器container提供RequestDispatcher接口的实现,其中声明如下:

void forward(ServletRequest req,ServletResponse res)

void include(ServeltRequest req,ServletResponse res)

可以通过两种方式得到 RequestDispatcher:

1、ServletContext.getRequestDispatcher(String path);

其中这里的path必须开始为"/",即这里的path必须相对于context的root.

2、 ServeltRequest.getRequestDispatcher(String path)

这里的path可以为相对路径,如果 path开始为"/",则也认为是从context的root开始的。


Redirect由 HttpServletResponse.sendRedirect(String location)来支持.


差别:3个都可以对用户的 request进行转发,但是还是有许多的不同,差别最主要集中在如下几个方面:


1、forward与include共亨Request范围内的对象,而redirect则不行,即:如果一个javabean被声明为request范围的话,则被forward到的资源也可以访问这个


javabean,而redriect则不行。

2、forward与include基本上都是转发到context内部的资源,而 redirect可以重定向到外部的资源,如: req.sendRedriect("http://www.mocuai.com");



动态INCLUDE与静态INCLUDE的区别


动态include:

   jsp:include动作实现

  <jsp:include page="included.jsp" flush="true" />

  它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数。

静态INCLUDE:

  <%@ include file="included.htm" %>  

   用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面。


二者区别分析:

静态include的结果是把其他jsp引入当前jsp,两者合为一体 .动态include的结构是两者独立,直到输出时才合并( 看看jsp生成的java文件就可以知道了) 正是因为这


样,动态include的jsp文件独立性很强,是一个单独的jsp文件,需要使用的对象,页面设置,都必须有自己创建,当然,  还好它和include它的页面的request范围是一致的.

而静态include纯粹是把代码写在外面的一种共享方法,所有的变量都是可以和include它的主文件共享,两者高度紧密结合,不能有变量同名的冲突.而页面设置也可以借用主文件的.

http://blog.csdn.net/jerryhui8411/article/details/6790217

http://blog.sina.com.cn/s/blog_62a04f5d0100gxqd.html