Java Programming, Lecture Notes # 754
April 20, 2000
With JSP, fragments of Java code embedded into special HTML tags are presented to a JSP engine. The JSP engine automatically creates, compiles, and executes servlets to implement the behavior of the combined HTML and embedded Java code.
Previous lessons have explained the use of the following syntax elements:
A scriptlet can contain any number of language statements, variable or method declarations, or expressions.
What is the syntax?
The syntax of a scriptlet is as follows:
<% code fragment %> |
What are they good for?
According to Sun, you can do any of the following things using scriptlets:
You must write any needed plain text, HTML-encoded text, or other JSP tags outside the scriptlet.
When are scriptlets executed?
Scriptlets are executed when the JSP engine processes the client request.
If the scriptlet produces output, the output is stored in the out object, from which you can display it.
<% c = a/b; %> |
This scriptlet divides the variable a by the variable b
and assigns the quotient to c.
<% myDate = new java.util.Date(); %> |
This scriptlet instantiates a new object of the Date class and assigns the reference to that object to the variable named myDate.
The two scriptlets shown above are very straightforward. They consist simply of a simple Java expression embedded inside a scriptlet tag.
Have you noticed anything odd?
Those of you who are familiar with HTML and XML may have noticed something
a little odd about this syntax. In particular, the typical syntax
of HTML and XML elements is as follows:
<tagName attribute=”attributeValue”>
Element Content </tagName> |
In other words, a typical element in HTML or XML consists of
Of course, in HTML, there are some elements that don't require an end tag. In XML jargon, those elements are not “well-formed.”
XML has special format for empty elements
In XML, if the element doesn't contain any content, there is a special format that can be used which, in effect, causes the beginning tag to also serve as the end tag.
However, what we have seen so far regarding JSP doesn't match any of these. I won't bore you with the details, but if this is of interest to you, you might want to pursue the matter further by taking a look at some of my XML articles.
Another sample scriptlet
That brings me to another sample scriptlet. The following sample
consists of two scriptlets. One forms the beginning of a Java for
loop, and the other forms the end of a Java for loop. The
body of the loop consists of a standard HTML break tag <br> and
a JSP expression.
<% for (int i=0; i<11; i++) { %>
<br> <%= i %> <% }//end for loop %> |
More effort required
As you can see from this sample, sometimes a lot more effort is required to write scriptlets than would be required to write the same Java code in a Java application, bean, applet, or servlet.
In addition, if you make an error in your Java code, you don't get much in the way of helpful compilation error messages to help you correct the problem. (At least that is true with the JSWDK from Sun that I am currently using.)
Using beans
This will lead us later to the concept of packaging the bulk of our Java code in servlets or Java Beans, and to use JSP to execute them.
The results produced by the beans will be embedded in the HTML-encoded text stream. In other words, the combined use of JSP, servlets, and Java Beans will give us the best of all three worlds.
I have highlighted the scriptlets in boldface to make them easier to identify.
Standard Java comments
Note that in addition to using the comment tags discussed in an earlier lesson, it is also acceptable to use standard Java comments inside the scriptlet, as evidenced by the last scriptlet shown in Figure 1.
Figure 2 shows the output produced by loading this JSP page into my Netscape 4.7 browser while running the Sun JSWDK-1.0.1 server.
Output comments:
<!-- comment
[ <%= expression %> ] -->
Hidden comments:
<%-- hidden comment --%>
Declarations:
<%! declarations %>
Expressions:
<%= expression %>
Scriptlets:
<% code fragment %>
Copyright 2000, Richard G. Baldwin. Reproduction in whole or in part in any form or medium without express written permission from Richard Baldwin is prohibited.
Richard has participated in numerous consulting projects involving Java, XML, or a combination of the two. He frequently provides onsite Java and/or XML training at the high-tech companies located in and around Austin, Texas. He is the author of Baldwin's Java Programming Tutorials, which has gained a worldwide following among experienced and aspiring Java programmers. He has also published articles on Java Programming in Java Pro magazine.
Richard holds an MSEE degree from Southern Methodist University and has many years of experience in the application of computer technology to real-world problems.
-end-