Given a specific design goal for including a JSP segment in another page, write the JSP code that uses the most appropriate inclusion mechanism (the include directive or the jsp:include standard action).

The include directive.

Includes a STATIC file in a JSP page, parsing the file's JSP elements. The include directive is processed when the JSP page is TRANSLATED into a servlet class.

JSP Syntax:


<%@ include file="relativeFileName" %>

					

XML Syntax:


<jsp:directive.include file="relativeFileName" />

					

Example:

include.jsp:


<html>	
	<head><title>An Include Test</title></head>	
	<body bgcolor="white">	

		The current date and time are :

		<%@ include file="date.jsp" %>	

	</body>	
</html>

					

date.jsp:


<%= (new java.util.Date() ).toLocaleString() %>

					

The jsp:include action.

Includes a static file OR the result from another web component. The difference with the include directive is that not the source of the JSP, but it's output is included. The include JSP page is being executed within the servlet engine and it's output is returned to the calling page.

The main benefit of using the jsp:include action is that the URL to include can be constructed during execution of the page. However, every included page results in a new request to the servlet engine, which means there is a bit of a performance impact when compared to the include directive.

JSP Syntax:


<jsp:include page="{relativeURL | <%= expression %>}"
	flush="true | false" />

					
or

<jsp:include page="{relativeURL | <%= expression %>}"
	flush="true | false" >
	<jsp:param name="parameterName"
		value="{parameterValue | <%= expression %>}" />+
</jsp:include>

					

XML Syntax:


<jsp:include page="{relativeURL | %= expression %}"	
	[ flush="true | false" ] />

					
or

<jsp:include page="{relativeURL | %= expression %}"	
[ flush="true | false" ] >
	[ <jsp:param name="parameterName" 	
		value="{parameterValue | %= expression %}" /> ]+
</jsp:include> 

					

Examples:


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

					
The following example shows that there are two ways of passing named variables: either pass them on directly in the URL, or add them using jsp:param tags:

<jsp:include page="includes/page.jsp?param1=value" flush="true">
	<jsp:param name="param2" value="value2" />
</jsp:include>

					

It is also possible to dynamically choose the file to include. This example determines the file to include from a request parameter:


<jsp:include page='<%= request.getParameter("incFile") %>' />

					

Defining Implicit Includes.

The include-prelude element is an optional subelement of jsp-property-group. It has no subelements. Its value is a context-relative path that must correspond to an element in the Web Application. When the element is present, the given path will be automatically included (as in an include directive) at the beginning of the JSP page in the jsp-property-group. When there are more than one include-prelude element in a group, they are to be included in the order they appear. When more than one jsp-property-group applies to a JSP page, the corresponding includeprelude elements will be processed in the same order as they appear in the JSP configuration section of web.xml.

The include-coda element is an optional subelement of jsp-property-group. It has no subelements. Its value is a context-relative path that must correspond to an element in the Web Application. When the element is present, the given path will be automatically included (as in an include directive) at the end of the JSP page in the jsp-property-group. When there are more than one include-coda element in a group, they are to be included in the order they appear. When more than one jsp-property-group applies to a JSP page, the corresponding include-coda elements will be processed in the same order as they appear in the JSP configuration section of web.xml. Note that these semantics are in contrast to the way url-patterns are matched for other configuration elements.

Preludes and codas follow the same rules as statically included JSP segments. In particular, start tags and end tags must appear in the same file.

For example, the following web.xml fragment defines two groups. Together they indicate that everything in directory /two/ have /WEB-INF/jspf/prelude1.jspf and /WEB-INF/jspf/prelude2.jspf at the beginning and /WEB-INF/jspf/coda1.jspf and /WEB-INF/jspf/coda2.jspf at the end, in that order, while other .jsp files only have /WEB-INF/jspf/prelude1.jspf at the beginning and /WEB-INF/jspf/coda1.jspf at the end:


<jsp-property-group>
	<url-pattern>*.jsp</url-pattern>
	<include-prelude>/WEB-INF/jspf/prelude1.jspf</include-prelude>
	<include-coda>/WEB-INF/jspf/coda1.jspf</include-coda>
</jsp-property-group>
<jsp-property-group>
	<url-pattern>/two/*</url-pattern>
	<include-prelude>/WEB-INF/jspf/prelude2.jspf</include-prelude>
	<include-coda>/WEB-INF/jspf/coda2.jspf</include-coda>
</jsp-property-group>

					

Professional hosting     Belorussian informational portal         Free SCBCD 1.3 Study Guide     Free SCDJWS 1.4 Study Guide     SCDJWS 1.4 Quiz     Free IBM Certified Associate Developer Study Guide     Free SCJP 5.0 (Tiger) Study Guide     Free Mock Exam Engine     IBM Test 000-287. Enterprise Application Development with IBM WebSphere Studio, V5.0 Study Guide