CodeSteps

Python, C, C++, C#, PowerShell, Android, Visual C++, Java ...

JSP – Action Elements

We have discussed JSP scripting elements and directive elements in our previous articles. In this article, we are going to discuss JSP Action elements.

Action elements in JSP are another type of syntactic element; translated into Java code that performs an operation. The web server processes these action elements when processing a client’s HTTP request.

Here we are going to discuss nine JSP pre-defined standard action elements and their usage. We can also develop our own actions called custom actions in JSP by using pre-defined classes available in JSP.

JSP Action tags are used for runtime communication between:

  • JSP page to JSP page
  • JSP page to a Servlet
  • JSP page to a Java Applet
  • JSP page to a Java Bean

JSP Actions are three types:

  • Standard actions
  • Custom actions and
  • JSP Standard Tag Library (JSTL)

In JSP, there are nine standard actions are available; all actions are prefixed with “jsp:”. We no need to import any tag library while using JSP standard actions. The nine JSP standard action elements are:

  1. <jsp:useBean>
  2. <jsp:setProperty>
  3. <jsp:getProperty>
  4. <jsp:param>
  5. <jsp:forward>
  6. <jsp:include>
  7. <jsp:plugin>
  8. <jsp:fallback>
  9. <jsp:params>

1. <jsp:useBean>

This action element declares a new JSP scripting variable and associates a Java object to it.

For example:

<jsp:useBean id=”mb” class=”MyBean” scope=”request”/>

The above statement creates an instance of a class “MyBean”; it is the same as the below Java statement:

MyBean mb = new MyBean();

If the “MyBean” class with object name as “mb” is already available in the “request” scope, that object will be returned; otherwise, a new object of the “MyBean” class will create and store into the “request” scope. What do you mean by “request” scope? Like normal variables declared in a program; Bean objects declared through action tags also have the scope. In the case of normal variables; the scope is block scope, function scope, etc. but the Bean objects defined through action tags have the page, request, session, and application scopes.

While creating web applications, with JSP pages, usually we put the business logic and presentation logic both in the JSP pages only. Mixing both business logic and presentation logic in JSP pages will seriously raise re-usability issues. That means, if multiple JSP pages need the same business logic then we have to repeat the same business logic in multiple JSP pages. This is a serious re-usability issue.

To solve this problem we can use JSP with a Java Bean communication. In this, we place presentation logic into the JSP page and the business logic into Java Bean. So, business logic becomes reusable and can be used in multiple JSP pages.

If we want to invoke methods of a Java Bean from a JSP page, we need an object of the Bean in the JSP Page; <jsp:useBean> tag is used for creating a Java Bean object. <jsp:useBean> tag will first search for an object in the given scope; if it exists, then it uses the same object; otherwise, it creates a new object and then stores it in the given scope.

Bean scopes on the JSP page are page, request, session, and application.

2. <jsp:setProperty>

<jsp:setProperty> tag is used for calling setter methods of a Java Bean. This tag must be used under <jsp:useBean> tag. This tag can be set on both static and dynamic values of a Java Bean.

Attributes of this tag are:

  • name
  • property
  • param and
  • value

“name” and “property” attributes are mandatory. “param” and “value” attributes are not allowed at a time. One more important thing to remember is; Bean’s “id” and value of the “name” attribute should be the same.

For example:

<jsp:useBean id=”mb” class=”com.codesteps.MyBean” scope=”request">

    <jsp:setProperty name=”mb” property=”sno” value=”56”/>
    <jsp:setProperty name=”mb” property=”age” param=”age”/>

</jsp:useBean>

In the first tag, inside the <jsp:useBean> action element, we are assigning a static value “56″ to “sno” property of “MyBean” by calling Java Bean’s setter method, using <jsp:setProperty> action element.

Another statement sets the value of a request parameter “age” to “age” property of “MyBean”. We can also write this statement as:

<jsp:setProperty name="mb" property="age" />

because the request parameter name “age” matched with the property name “age” of a Java Bean.

I suppose, all request parameters are matched with the property names of a Java Bean, we can write the statement as:

<jsp:setProperty name="mb" property="*" />

If any uncommon property name is present, we need to separately assign the value to that particular uncommon property.

3. <jsp:getProperty>

Like <jsp:setProperty>, <jsp:getProperty> also works on Java Bean properties or attributes. This tag is used to retrieve the values of Java Bean attributes. This tag calls getter methods of a Java Bean. It should be used at outside of <jsp:useBean> tag; unlike <jsp:setProperty> tag, which should be used inside of <jsp:useBean> tag.

<jsp:getProperty> tag has only two attributes; “name” and “property” attributes. “name” attribute assign with Java Bean’s “id” and “property” attribute assign with the property name of a Java Bean.

For example:

<jsp:getProperty name=”mb” property=”sno”/>

This statement calls the getter method of “sno” attribute or property through “mb” object (MyBean object) and returns the “sno” value to the web browser; then the web browser will display the returned value.

One important thing to remember, when using <jsp:getProperty> tag is; unlike <jsp:setProperty>, we are not allowed to write “property=”*”” in <jsp:getProperty> tag.

4. <jsp:param>

<jsp:param> tag is used to provide additional information to the JSP page by appending information to the request object (HttpServletRequest object). Generally we use <jsp:param> tag within <jsp:include>, <jsp:forward>, or <jsp:plugin> tags.

For example:

<jsp:param name="key" value="6x7y8z" />

This statement sets the “key” parameter with the value “6x7y8z”.

5. <jsp:forward>

This action tag is used to forward an HTTP request from one JSP page to another JSP page, or a Servlet, or an HTML page. Internally this action tag will use RequestDispatcher’s “forward()” method to forward the requests.

If a JSP page needs more logic, then we divide the logic into multiple pages, and then we forward the requests between the JSP pages.

Along with the request, the request parameters sent from the web browser will be forwarded. If we want to forward a request with additional parameters then we can use <jsp:param> action tag under <jsp:forward> tag; then the parameters mentioned in <jsp:param> tag will forward with the request to another resource (A JSP page, or a Servlet, or an HTML page.).

For Example:

<jsp:forward page=”one.jsp”/>

This will forward the request to a JSP page “one.jsp” without adding any additional parameters.

And another example here is:

<jsp:forward page=”one.jsp”>
    <jsp:param name=”sno” value=”90”/>
</jsp:forward>

This will forward the request to “one.jsp” by adding the additional parameter “sno” with the value “90”.

6. <jsp:include>

<jsp:include> action tag is used to include the content of another resource (that means the response of another resource) into the JSP page.

For example:

<jsp:include page=”one.jsp” />

This will include the response of “one.jsp” on the current JSP page.

We can also send parameters to another resource. For example:

<jsp:include page=”one.jsp”>
    <jsp:param name=”sname” value=”steve”/>
</jsp:include>

This will include the response of “one.jsp” JSP page; and observe that we are passing a parameter “sname” to “one.jsp” using <jsp:param> action element.

Remember that including action elements is different than include directives. As discussed, the include action element is used to include the response of the resource; whereas the include directive is used to include the resource. That’s why including the action element is more useful for including dynamic content (even we can include static content); whereas including directive is useful for including only static content.

For example: Below is the included directive which includes “anotherfile.jsp”.

<%@include file=”anotherfile.jsp”/>

We have discussed more include directives in the “JSP: Directive Elements” article.

7. <jsp:plugin>

<jsp:plugin> tag is used to embed a Java component (an Applet or a Java Bean), inside a JSP page. We can pass arguments or parameters to the embedded object using <jsp:param> tag. <jsp:param> tag must be inside the <jsp:params> tag which should be inside the <jsp:plugin> tag.

This action element generates an HTML code that contains either <object> or <embed> tag;  as appropriate for the requesting client web-browser.

By any reason, if an embedded component is not shown in the web browser, then we can set an alternate message to display in the web browser with the help of the <jsp:fallback> tag. <jsp:fallback> tag is only allowed inside the <jsp:plugin> tag.

For example:

Let’s assume we have a “SampleApplet” Java applet. When we place the below code in our JSP page; and access the page, it will show a “SampleApplet” in the web browser, if it is available. Otherwise, it will simply display a message “Unable to load the applet.” in the web browser.

<jsp:plugin type="applet" code="SampleApplet" width="500" height="300">
    <jsp:params>
        <jsp:param name="width" value="200"/>
        <jsp:param name="height" value="70"/>
    </jsp:params>
    <jsp:fallback>Unable to load the applet.</jsp:fallback>
</jsp:plugin>

We have discussed more Java Applets in the “Java: Applet – Introduction and it’s life-cycle” article.

8. <jsp:fallback>

As mentioned above, <jsp:fallback> tag is used to display an alternate message when the Java component is not working on the JSP page.

For example:

<jsp:fallback>Unable to load the component.</jsp:fallback>

This tag must be placed inside the <jsp:plugin> tag.

9. <jsp:params>

This tag is used to add additional parameters to the request object; under this tag, we have to use <jsp:param> tag to provide additional parameters information.

These are the standard action elements available in JSP.

We will discuss JSTL and custom actions in our upcoming articles.

JSP – Action Elements

Leave a Reply

Your email address will not be published. Required fields are marked *

Scroll to top