两者之间的主要区别在于forward()方法将在调用输出流后关闭它,而include方法将输出流保留为OPEN。
举例说明: 让我们有一个名为xxx.java的servlet页面和一个名为yy.jsp的jsp页面
在yy.jsp中
WELCOME to yy.jsp
在xxx.java中//使用forward()
.forward()
输出
WELCOME to yy.jsp
在xxx.java中//使用include()
.forward()
输出
WELCOME to yy.jsp back to servlet
但是最重要的是它与控制无关,因为如果我们将
.forward()
在.forward()或.include()调用之后,每种情况都会生成控制台输出,这与对客户端的响应有关
因此,基本部分是 如果我们正在服务器端组件中进行处理,然后转发到JSP或Servlet以便为客户端生成标记,则一旦该JSP或Servlet完成处理,我们就无法再调用任何其他组件来生成可以 发送给客户。 一旦执行了转发,就为当前请求和响应周期生成标记。
或者,通过包含,输出流保持打开状态,因此我们可以调用尽可能多的不同文件来生成所需的客户端标记。 因此,我们可以在生成基于客户端标记的组件链中包括两个或三个JSP文件,甚至一个Servlet。 当我们使用include时,调用后不会关闭输出流。