Difference Between Forward and Include in JSP

The <jsp:forward> action enables you to forward the request to a static HTML file, a servlet, or another JSP.

<jsp:forward page=”url” />

The JSP that contains the <jsp:forward> action stops processing, clears its buffer, and forwards the request to the target resource. Note that the calling JSP should not write anything to the response prior to the <jsp:forward> action.

You can also pass additional parameters to the target resource using the <jsp:param> tag.

<jsp:forward page=”test.htm” >

<jsp:param name=”name1″ value=”value1″ />

<jsp:param name=”name2″ value=”value2″ />

</jsp:forward>

In this example, test.jsp can access the value of name1 using request.getParameter(“name1”).

To “include” another resource with a JSP, you have two options: the include directive and the include action.The include directive executes when the JSP is compiled, which parses any JSP elements in the included file for a static result that is the same for every instance of that JSP. The syntax for the include directive is

<@ include file=”some-filename” %>.

The include action, on the other hand, executes for each client request of the JSP, which means the file is not parsed but included in place. This provides the capability to dynamically change not only the content that you want to include, but also the output of that content. The syntax for the include action is <jsp:include page=”some-filename” flush=”true” />. Note that the flush attribute must always be included (in JSP 1.1) to force a flush of the buffer in the output stream.

You can also pass parameters to the included file using the same process

<jsp:forward> action:

<jsp:include page=”template.htm” flush=”true” >

<jsp:param name=”name1″ value=”value1″ />

</jsp:include>