* jsp:attribute
The jsp:attribute standard action has two uses: 
</p><ul>
<li>It allows the page author to define the value of an action attribute in the body of an XML element instead of in the value of an XML attribute. 
<li>It allows the page author to specify the attributes of an element dynamically generated by the <code>jsp:element</code> action, which can only appear as a subelement of a standard or custom action.
</ul><p>
All JSP standard actions and custom actions can contain a <code>jsp:attribute</code> standard element as a substitute for any of its attributes. One use case in which <code>jsp:attribute</code> is particularly helpful is where the value of an attribute is the result of a multi-line expression, which would not fit in the value of an attribute in the start tag of the action.
</p><p>
If an action contains any <code>jsp:attribute</code> elements and the action also has a body, it must use the <code>jsp:body</code> tag to represent the body. The body of <code>jsp:attribute</code> is restricted according to the type of attribute being specified:

</p><ul>
<li>For simple attributes that accept an EL expression, the body can be any JSP content.
<li>For simple attributes that do not accept an EL expression, the body can contain only static text.
<li>For fragment attributes, the body must not contain any scripting elements.
</ul>
 - name true
Identifies which tag attribute is being specified. When used with jsp:element, this attribute specifies the name of the attribute to be included in the generated element.

If the jsp:attribute tag is not being used with jsp:element and the action does not accept dynamic attributes, the name must match the name of an attribute for the action being invoked, as declared in the Tag Library Descriptor for a custom action, or as specified for a standard action. If it doesn't match, a translation error results.

If the jsp:attribute element is being used with a jsp:element tag, a translation error results if both an XML element attribute and a jsp:attribute element are used to specify the value for the same attribute.

The value of name can be a QName. If so, a translation error must occur if the prefix does not match that of the action it applies to, unless the action supports dynamic attributes or the action is jsp:element.

 - trim false
        The optional trim attribute determines whether or not whitespace appearing at the beginning and end of the element body should be discarded. By default, the leading and trailing whitespace (including spaces, carriage returns, line feeds, and tabs) is discarded. The whitespace is trimmed when the JSP page is translated. If a body contains a custom tag that produces leading or trailing whitespace, that whitespace is preserved regardless of the value of the trim attribute.

* jsp:body
Normally, the body of a standard or custom action invocation is defined implicitly as the body of the XML element used to represent the invocation. The body of a standard or custom action can also be defined explicitly using the <code>jsp:body</code> standard action. This is required if one or more <code>jsp:attribute</code> elements appear in the body of the tag.

</p><p>
If one or more <code>jsp:attribute</code> elements appear in the body of a tag invocation but no <code>jsp:body</code> element appears or an empty <code>jsp:body</code> element appears, it is the equivalent of the tag having an empty body.
</p><p>
It is also legal to use the <code>jsp:body</code> standard action to supply bodies to any standard actions that accepts a body (except for <code>jsp:body</code>, <code>jsp:attribute</code>, <code>jsp:scriptlet</code>, <code>jsp:expression</code>, and <code>jsp:declaration</code>). The body standard action accepts no attributes.
* jsp:element
The <code>jsp:element</code> action is used to dynamically define the value of the tag of an XML element. This action can be used in JSP pages, tag files and JSP documents.
</p><p>

A <code>jsp:element</code> action has one mandatory attribute, name, of type String. The value of the name attribute is used as that of the tag of the element generated. The <code>jsp:element</code> action can have a body. Two forms are valid, depending on whether the element is to have attributes or not. In the first form, no attributes are present:
</p><blockquote><pre>&lt;jsp:element name="name"&gt;	
&nbsp;&nbsp;&nbsp;optional body	
&lt;/jsp:element&gt;
</pre></blockquote><p>
In the second form, zero or more attributes are requested, using jsp:attribute and <code>jsp:body</code>, as appropriate.

</p><blockquote><pre>&lt;jsp:element name="name"&gt;	
&nbsp;&nbsp;&nbsp;[jsp:attribute]+	
&nbsp;&nbsp;&nbsp;[jsp:body]	
&lt;/jsp:element&gt;
</pre></blockquote><p>
The one valid, mandatory, attribute of <code>jsp:element</code> is its name. Unlike other standard actions, the value of the name attribute must be given as an XML-style attribute and cannot be specified using <code>jsp:attribute</code> This is because <code>jsp:attribute</code> has a special meaning when used in the body of <code>jsp:element</code>. 
 - name true
        The value of name is that of the element generated. The name can be a QName; JSP 2.0 places no constraints on this value: it is accepted as is. A request-time attribute value may be used for this attribute.

* jsp:fallback
An optional child element of <code>jsp:plugin</code>.  A text message to display for the user if the plug-in cannot be started. If the plug-in starts but the applet or bean does not, the plug-in usually displays a popup window explaining the error to the user.

* jsp:forward
The <code>jsp:forward</code> element forwards the <code>request</code> object containing the client request information from one JSP page to another resource. The target resource can be an HTML file, another JSP page, or a servlet, as long as it is in the same application context as the forwarding JSP page. The lines in the source JSP page after the <code>jsp:forward</code> element are not processed.
</p><p>
You can pass parameter names and values to the target resource by using a <code>jsp:param</code> clause. An example of this would be passing the parameter name <code>username</code> (with <code>name="username"</code>) and the value <code>scott</code> (with <code>value="scott"</code>) to a servlet as part of the request. If you use <code>jsp:param</code>, the target resource should be a dynamic resource that can handle the parameters.

</p><p>
Be careful when using <code>jsp:forward</code> with unbuffered output. If you have used the page directive with <code>buffer="none"</code> to specify that the output of your JSP page should not be buffered, and if the JSP page has any data in the out object, using <code>jsp:forward</code> will cause an <code>IllegalStateException</code>.
 - 	page true
    A String or an expression representing the relative URL of the component to which you are forwarding the request. The component can be another JSP page, a servlet, or any other object that can respond to a request.

    The relative URL looks like a path--it cannot contain a protocol name, port number, or domain name. The URL can be absolute or relative to the current JSP page. If it is absolute (beginning with a /), the path is resolved by your web or application server.

* jsp:getProperty
<p>
The <code>jsp:getProperty</code> element gets a bean property value using the property's getter methods and inserts the value into the response. You must create or locate a bean with &lt;jsp:useBean&gt; <em>before</em> you use <code>jsp:getProperty</code>.
</p><p>
The <code>jsp:getProperty</code> element has a few limitations you should be aware of:

</p><ul>
<li>You cannot use <code>jsp:getProperty</code> to retrieve the values of an indexed property.
<li>You can use <code>jsp:getProperty</code> with JavaBeans components, but not with enterprise beans. As alternatives, you can write a JSP page that retrieves values from a bean that in turn retrieves values from an enterprise bean, or you can write a custom tag that retrieves values from an enterprise bean directly.
</ul>

 - name true
    The name of an object (usually an instance of a bean) as declared in a <jsp:useBean> element.
 - property true
	The name of the bean property whose value you want to display. The property is declared as a variable in a bean and must have a corresponding getter method (for more information on declaring variables and writing getter methods in beans, see http://java.sun.com/javase/technologies/desktop/javabeans/docs/).

* jsp:include
<p>
The <code>jsp:include</code> element allows you to include either a <em>static </em>or <em>dynamic</em> <em>resource</em> in a JSP page. The results of including static and dynamic resources are quite different. If the resource is static, its content is included in the calling JSP page. If the resource is dynamic, it acts on a request and sends back a result that is included in the JSP page. When the include action is finished, the JSP container continues processing the remainder of the JSP page.

</p><p>
You cannot always determine from a pathname if a resource is static or dynamic. For example, <em>http://server:8080/index.html</em> might map to a servlet through a server alias. The <code>jsp:include</code> element handles both types of resources, so it is convenient to use when you don't know whether the resource is static or dynamic.
</p><p>
If the included resource is dynamic, you can use a <code>jsp:param</code> clause to pass the name and value of a parameter to the resource. As an example, you could pass the string <code>username</code> and a user's name to a login form that is coded in a JSP page.

 - page true
    The relative URL that locates the resource to be included, or an expression that evaluates to a String equivalent to the relative URL.

    The relative URL looks like a pathname--it cannot contain a protocol name, port number, or domain name. The URL can be absolute or relative to the current JSP page. If it is absolute (beginning with a /), the pathname is resolved by your web or application server. 
 - flush false
If the page output is buffered and the flush attribute is given a true value, the buffer is flushed prior to the inclusion, otherwise the buffer is not flushed. The default value for the flush attribute is false.
 
* jsp:invoke
The <code>jsp:invoke</code> standard action takes the name of an attribute that is a fragment, and invokes the fragment, sending the output of the result to the <code>JspWriter</code>, or to a scoped attribute that can be examined and manipulated. If the fragment identified by the given name is null, <code>jsp:invoke</code> will behave as though a fragment was passed in that produces no output.
</p><p>
The most basic usage of this standard action will invoke a fragment with the given name with no parameters. It is also possible to invoke the fragment and send the results to a scoped attribute for further examination and manipulation. This can be accomplished by specifying the <code>var</code> or <code>varReader</code> attribute in the action. If var is specified, the container stores the result in an EL variable of type <code>String</code> with the name specified by <code>var</code>. If <code>varReader</code> is specified, the container stores the result in an EL variable of type <code>java.io.Reader</code>, with the name specified by <code>varReader</code>. The <code>Reader</code> object can then be passed to a custom tag for further processing. A translation error occurs if both <code>var</code> and <code>varReader</code> are specified.
 - fragment true
The name used to identify this fragment during this tag invocation. 
 - var false
The name of a scoped attribute to store the result of the fragment invocation in, as a java.lang.String object. A translation error must occur if both var and varReader are specified. If neither var nor varReader are specified, the result of the fragment goes directly to the JspWriter. 
 - varReader false
The name of a scoped attribute to store the result of the fragment invocation in, as a java.io.Reader object. A translation error must occur if both var and varReader are specified. If neither var nor varReader is specified, the result of the fragment invocation goes directly to the JspWriter. 
 - scope false [*page|scope|request|application]
The scope in which to store the resulting variable. A translation error must result if the value is not one of page, request, session, or application. A translation error will result if this attribute appears without specifying either the var or varReader attribute as well. Note that a value of session should be used with caution since not all calling pages may be participating in a session. A container must throw an IllegalStateException at runtime if scope is session and the calling page does not participate in a session. Defaults to page.var="scopedAttributeName".

* jsp:output
The <code>jsp:output</code> element specifies the XML declaration or the document type declaration in the request output of the JSP document. 
</p><p>
The XML declaration and document type declaration that are declared by the <code>jsp:output</code> element are not interpreted by the JSP container. Instead, the container simply directs them to the request output.
</p>
<br>
<h5> Generating a Document Type Declaration</h5>
<p>
A document type declaration (DTD) defines the structural rules for the XML document in which the document type declaration occurs. XML documents are not required to have a DTD associated with them.
</p><p>
Specifying the document type declaration in the jsp:output element will not cause the JSP container to validate the JSP document against the DTD.
</p><p>
If you want the JSP document to be validated against the DTD, you must manually include the document type declaration within the JSP document, just as you would with any XML document.
</p>
<br>
<h5> Generating XML Declarations</h5>
<p>
Here is an example of an XML declaration:

</p><blockquote><pre>&lt;?xml version="1.0" encoding="UTF-8" ?&gt; 
</pre></blockquote><p>
This declaration is the default XML declaration. It means that if the JSP container is generating an XML declaration, this is what the JSP container will include in the output of your JSP document.
</p><p>
Neither a JSP document nor its request output is required to have an XML declaration. In fact, if the JSP document is not producing XML output then it shouldn't have an XML declaration.
</p><p>
The JSP container will not include the XML declaration in the output when either of the following is true:
</p><ul>
<li>You set the <code>omit-xml-declaration</code> attribute of the <code>jsp:output</code> element to either <code>true</code> or <code>yes</code>.
<li>You have a <code>jsp:root</code> element in your JSP document, and you do not specify <code>omit-xml-declaration="</code><em>false</em><code>"</code> in <code>jsp:output</code>.
</ul><p>
The JSP container will include the XML declaration in the output when either of the following is true:

</p><ul>
<li>You set the <code>omit-xml-declaration</code> attribute of the <code>jsp:output</code> element to either <code>false</code> or <code>no</code>.
<li>You do not have a <code>jsp:root</code> action in your JSP document, and you do not specify the <code>omit-xml-declaration</code> attribute in <code>jsp:output</code>.
</ul><p>
The <code>jsp:output</code> element has three attributes that you use to generate the document type declaration:
</p><ul>
<li><code>doctype-root-element</code>: Indicates the root element of the XML document
<li><code>doctype-system</code>: Indicates the URI reference to the DTD
<li><code>doctype-public</code>: A more flexible way to reference the DTD. This identifier gives more information about the DTD without giving a specific location. A public identifier resolves to the same actual document on any system even though the location of that document on each system may vary. See the XML 1.0 specification for more information.
</ul><p>
The rules for using the attributes are as follows:
</p><ul>
<li>The doctype attributes can appear in any order
<li>The <code>doctype-root</code> attribute must be specified if the <code>doctype-system</code> attribute is specified
<li>The <code>doctype-public attribute</code> must not be specified unless <code>doctype-system</code> is specified
</ul>
 - omit-xml-declaration false [yes|no|true|false]
Indicates whether to omit the generation of an XML declaration. 
 - doctype-root-element false
Must be specified if and only if doctype-system is specified or a translation error must occur. Indicates the name that is to be output in the generated DOCTYPE declaration. 
 - doctype-system
Specifies that a DOCTYPE declaration is to be generated and gives the value for the System Literal. 
 - doctype-public
Must not be specified unless doctype-system is specified. Gives the value for the Public ID for the generat

* jsp:param
Sends one or more name/value pairs as parameters to a dynamic resource. The target resource should be dynamic, that is, a JSP page, servlet, or other resource that can process the data that is sent to it as parameters.

You can use more than one jsp:param clause if you need to send more than one parameter to the target resource. The name attribute specifies the parameter name and takes a case-sensitive literal string as a value. The value attribute specifies the parameter value and takes either a case-sensitive literal string or an expression that is evaluated at request time.
 - name true
 - value true

* jsp:params
The parameters and values that you want to pass to the applet or bean. To specify more than one parameter value, you can use more than one jsp:param element within the jsp:params element. The name attribute specifies the parameter name and takes a case-sensitive literal string. The value attribute specifies the parameter value and takes either a case-sensitive literal string or an expression that is evaluated at runtime. If the dynamic resource you are passing the parameter to is an applet, it reads the parameter with the java.applet.Applet.getParameter method.

See <code>jsp:param</code>.

* jsp:plugin
The <code>jsp:plugin</code> element plays or displays an object (typically an applet or bean) in the client web browser, using a Java plug-in that is built in to the browser or downloaded from a specified URL.
</p><p>
When the JSP page is translated and compiled and Java and sends back an HTML response to the client, the <code>jsp:plugin</code> element is replaced by either an <code>&lt;object&gt;</code> or <code>&lt;embed&gt;</code> element, according to the browser version. The <code>&lt;object&gt;</code> element is defined in HTML 4.0 and <code>&lt;embed&gt;</code> in HTML 3.2.

</p><p>
In general, the attributes to the <code>jsp:plugin</code> element specify whether the object is a bean or an applet, locate the code that will be run, position the object in the browser window, specify an URL from which to download the plug-in software, and pass parameter names and values to the object. The attributes are described in detail in the next section.
 - type true [bean|applet]
The type of object the plug-in will execute. You must specify either bean or applet, as this attribute has no default value. 
 - code true
The name of the Java class file the plug-in will execute. You must include the .class extension in the name. The class file you specify should be in the directory named in the codebase attribute.
 - codebase true
The directory (or path to the directory) that contains the Java class file the plug-in will execute. If you do not supply a value, the path of the JSP page that calls jsp:plugin is used. 
 - name false
A name for the instance of the bean or applet, which makes it possible for applets or Beans called by the same JSP page to communicate with each other. 
 - archive false
A comma-separated list of pathnames that locate archive files that will be preloaded with a class loader located in the directory named in codebase. The archive files are loaded securely, often over a network, and typically improve the applet's performance. 
 - align false [*bottom|top|middle|left|right]
    The position of the image, object, or applet. The position descriptions listed below use the term text line to mean the line in the viewable JSP page that corresponds to the line in the JSP page where the jsp:plugin element appears. The allowed values for align are listed below:

    bottom   Aligns the bottom of the image with the baseline of the text line.

    top   Aligns the top of the image with the top of the text line.

    middle   Aligns the vertical center of the image with the baseline of the text line.

    left   Floats the image to the left margin and flows text along the image's right side.

    right   Floats the image to the right margin and flows text along the image's left side. 
 - height false
The initial height, in pixels, of the image the applet or bean displays, not counting any windows or dialog boxes the applet or bean brings up. 
 - width false
The initial width, in pixels, of the image the applet or bean displays, not counting any windows or dialog boxes the applet or bean brings up. 
 - hspace false
The amount of space, in pixels, to the left and right of the image the applet or bean displays. The value must be a nonzero number. Note that hspace creates space to both the left and right and vspace creates space to both the top and bottom. 
 - vspace false
The amount of space, in pixels, to the top and bottom of the image the applet or bean displays. The value must be a nonzero number. Note that hspace creates space to both the left and right and vspace creates space to both the top and bottom. 
 - jreversion false
The version of the Java Runtime Environment (JRE) the applet or bean requires. The default value is 1.2. 
 - nspluginurl false
The URL where the user can download the JRE plug-in for Netscape Navigator. The value is a full URL, with a protocol name, optional port number, and domain name.
 - iepluginurl false
The URL where the user can download the JRE plug-in for Internet Explorer. The value is a full URL, with a protocol name, optional port number, and domain name. 

* jsp:setProperty
The <code>jsp:setProperty</code> element sets the value of one or more properties in a bean, using the bean's setter methods. You must declare the bean with &lt;jsp:useBean&gt; <em>before</em> you set a property value with <code>jsp:setProperty</code>. Because <code>jsp:useBean</code> and <code>jsp:setProperty</code> work together, the bean instance names they use must match (that is, the value of <code>name</code> in <code>jsp:setProperty</code> and the value of <code>id</code> in <code>jsp:useBean</code> must be the same).

</p><p>
You can use <code>jsp:setProperty</code> to set property values in several ways:
</p><ul>
<li>By passing all of the values the user enters (stored as parameters in the <code>request</code> object) to matching properties in the bean
<li>By passing a specific value the user enters to a specific property in the bean
<li>By setting a bean property to a value you specify as either a <code>String</code> or an expression that is evaluated at runtime
</ul><p>
Each method of setting property values has its own syntax, as described in the next section.
 - name true
The name of an instance of a bean that has already been created or located with a jsp:useBean element. The value of name must match the value of id in jsp:useBean. The jsp:useBean element must appear before jsp:setProperty in the JSP page. 
 - property true
The name of the property to set.
 - param false
The name of a request parameter to set the property's value to.

Note that if the bean property and request parameter have the same name, you may omit <code>param</code>.

You cannot use both the <code>param</code> and <code>value</code> attributes in a jsp:setProperty element.
 - value false
Sets <code>property</code> to a specific value. The value can be a String or an expression that is evaluated at runtime. If the value is a String, it is converted to the bean property's data type according to the conversion rules shown above in TABLE 2. If it is an expression, its value must have a data type that matches the data type of the value of the expression must match the data type of the bean property.

If the parameter has an empty or null value, the corresponding bean property is not set. You cannot use both the <code>param</code> and <code>value</code> attributes in a jsp:setProperty element.
 
* jsp:useBean
The <code>&lt;jsp:useBean&gt;</code> element locates or instantiates a JavaBeans component. <code>&lt;jsp:useBean&gt;</code> first attempts to locate an instance of the bean. If the bean does not exist, <code>&lt;jsp:useBean&gt;</code> instantiates it from a class or serialized template.
</p><p>
To locate or instantiate the bean, <code>&lt;jsp:useBean&gt;</code> takes the following steps, in this order:

</p><ol>
<li>Attempts to locate a bean with the scope and name you specify.
<li>Defines an object reference variable with the name you specify.
<li>If it finds the bean, stores a reference to it in the variable. If you specified <code>type</code>, gives the bean that type.
<li>If it does not find the bean, instantiates it from the class you specify, storing a reference to it in the new variable. If the class name represents a serialized template, the bean is instantiated by <code>java.beans.Beans.instantiate</code>.
<li>If <code>jsp:useBean</code> has <em>instantiated</em> (rather than located) the bean, and if it has body tags or elements (between &lt;<code>jsp:useBean&gt;</code> and <code>&lt;/jsp:useBean&gt;</code>), executes the body tags.
</ol>
<p>

The body of a <code>jsp:useBean</code> element often contains a <code>jsp:setProperty</code> element that sets property values in the bean. As described in Step&nbsp;5, the body tags are only processed if <code>jsp:useBean</code> instantiates the bean. If the bean already exists and <code>jsp:useBean</code> locates it, the body tags have no effect.
</p><p>

You can use a <code>jsp:useBean</code> element to locate or instantiate a JavaBeans component, but not an enterprise bean. To create enterprise beans, you can write a <code>jsp:useBean</code> element that calls a bean that in turn calls the enterprise bean, or you can write a custom tag that calls an enterprise bean directly.
 - id true
A variable that identifies the bean in the scope you specify. You can use the variable name in expressions or scriptlets in the JSP page.

The name is case sensitive and must conform to the naming conventions of the scripting language used in the JSP page. If you use the Java programming language, the conventions in the Java Language Specification. If the bean has already been created by another jsp:useBean element, the value of id must match the value of id used in the original jsp:useBean element. 
 - scope true [*page|request|session|application]
    The scope in which the bean exists and the variable named in id is available. The default value is page. The meanings of the different scopes are shown below:

    page   You can use the bean within the JSP page with the jsp:useBean element or any of the page's static include files, until the page sends a response back to the client or forwards a request to another resource.

    request   You can use the bean from any JSP page processing the same request, until a JSP page sends a response to the client or forwards the request to another resource. You can use the request object to access the bean, for example, request.getAttribute(beanInstanceName).

    session   You can use the bean from any JSP page in the same session as the JSP page that created the bean. The bean exists across the entire session, and any page that participates in the session can use it. The page in which you create the bean must have a page directive with session="true".

    application   You can use the bean from any JSP page in the same application as the JSP page that created the bean. The bean exists across an entire JSP application, and any page in the application can use the bean.
 - class false
Instantiates a bean from a class, using the new keyword and the class constructor. The class must not be abstract and must have a public, no-argument constructor. The package and class name are case sensitive.
 - type false
If the bean already exists in the scope, gives the bean a data type other than the class from which it was instantiated. The value of type must be a superclass of class or an interface implemented by class.

If you use type without class or beanName, no bean is instantiated. The package and class name are case sensitive. 
 - beanName false
    Instantiates a bean from a class, a serialized template, or an expression that evaluates to a class or serialized template. When you use beanName, the bean is instantiated by the java.beans.Beans.instantiate method. The Beans.instantiate method checks whether the package and class you specify represents a class or a serialized template. If they represent a serialized template, Beans.instantiate reads the serialized form (which has a name like package.class.ser) using a class loader.

    The value of type can be the same as beanName, a superclass of beanName, or an interface implemented by beanName. The package and class names you use with both beanName and type are case sensitive. 
    