浅谈Servlet 中 forward()方法 和 include()方法的区别

来源:互联网 发布:淘宝联盟旧版本4.3.2 编辑:程序博客网 时间:2024/06/08 18:19

在学习Servlet 中或者在面试过程中 往往会接触到这个问题,就是forward()方法 和 include()方法有什么区别

下面我来简单的描述下:

forward方法是把请求的内容转发到另外的一个servlet.  

include是把另一个servlet处理过后的内容调用过来

举例:

比如在 servlet1打out.print("1111"), 

             servlet2打out.print("22222"),

    

            在servlet1中用forward命令会转到servlet2中,

                                                                                           显示22222.

            而在servlet1中使用include方法会依然在servlet1的页面中,

                                                                                                                但是在1111后打出22222

简单的说 如果使用 forward()就是将页面转到另一个页面显示,而 如果使用include()就是在原有页面的基础上追加 内容。

用网页理解就是 在新窗口打开,还是在原窗口打开!简单的就这么理解!


相关 内容:

forward与redirect区别

forward仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;

redirect则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。

所以,forward更加高效,在forward可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接。

在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。


1.从地址栏显示来说 forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容 再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址. redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL.所 以redirect等于客户端向服务器端发出两次request,同时也接受两次response。