Home arrow Java arrow Page 2 - JavaServer Pages

JavaServer Pages

If you've taken a look at J2EE and JavaServer Pages technology, and want to examine JSP more closely, you've come to the right place. This article, the first of two parts, is excerpted from chapter three of Beginning J2EE 1.4 From Novice to Professional, written by James L. Weaver, Kevin Mukhar, and Jim Crume (Apress, 2004; ISBN: 1590593413).

Author Info:
By: Apress Publishing
Rating: 4 stars4 stars4 stars4 stars4 stars / 10
November 03, 2005
  1. · JavaServer Pages
  2. · Writing JSP Pages
  3. · Scriptlets
  4. · Template Data
  5. · Try It Out: Deploying the Web Application in J2EE
  6. · Try It Out: Deploying the Web Application in Tomcat
  7. · Action Elements

print this article

JavaServer Pages - Writing JSP Pages
(Page 2 of 7 )

So, now that weve seen how JSP pages work, lets look at what they contain, and how we go about writing them. Take a look at the following line of code:

  <html><body><p>Hello, World!</p></body></html>

Admittedly, this example is not a very good JSP example. However, these HTML tags do form a correct and valid JSP file. You could save the above file as HelloWorld.jsp, install it into a web application, and the server would access it as a JSP resource. The point I want to make is that JSP pages tend to look a lot like HTML pages. To make these pages dynamic, you can embed special tags and Java code in them. You can think of JSP pages as web pages with little bits of Java embedded in them.

The reason the example above is not very good is that it isnt dynamic in any way. If your JSP pages dont contain Java code, you might as well just make them static HTML pages. JSP pages are intended to have dynamic behavior; they are supposed to change in response to specific client requests. You give the page dynamic behavior by embedding Java code into the page.

JSP Elements

You can't just write Java code wherever you want in the page, though. You need some way to tell the server which bits are code, and which bits are regular HTML. To do this, the JSP specification defines HTML-like or XML tags that enclose the code in the JSP. Those tags come in three categories:

  • Directive elements


  • Scripting elements


  • Action elements


The original JSP specification used tag formats for these elements that were not compatible with XML; that is, they were not well-formed according to the XML specification. With the JSP 1.2 specification, alternative XML-compliant versions of all the above tags were introduced. You will see both formats in this book, with the original style referred to as JSP style, and the newer as XML style.

Directive Elements

Directive elements provide information to the JSP container about the page. There are three directives available: page, include, and taglib. We will look at page and include here, deferring discussion of taglib to the next chapter. The page and include directives have these forms:

JSP Style


<%@ page attributes %>

<jsp:directive.page attributes />

<%@ include attributes %>

<jsp:directive.include attributes />

You can find the complete list of attributes and their meanings in the JSP specification, which you can download at http://java.sun.com/products/jsp. Shown below are the attributes you are most likely to be using as you start developing JSP pages:







Lists the Java packages to be imported into the page. Just as



with a Java source file, the Java code embedded in a JSP



page must import the packages of the classes used with the



code. Multiple package statements are delimited by



commas, for example import="java.io.*,java.util.*".



The valid values are "true" or "false". The default value



is "true". If "true", the page participates in a session; if



"false", then it does not, and cannot access any session



information. Sessions are covered later in the chapter.



Whether the page is thread-safe or not. If "true", the



container can use the JSP for multiple concurrent request



threads. The default is "true".



An arbitrary string. This can have any value. It is provided



so that the JSP can provide information to a management



tool about its contents, purpose, name, etc.



The URL of the web page that should be sent to the client if



an error occurs in a page.



Whether the current page is an error page. The default is






Defines the content type of the page. The content type can



appear as a simple type specification, or as a type



specification and a charset. The default value is



"text/html" for JSP-style JSP tags and "text/xml" for



XML-style JSP tags. When including the charset, the syntax



for the attribute is contentType="text/html;charset=



char_set_identifier". Whitespace can follow the



semicolon in the attribute value. Charsets indicate how



written characters are encoded, so that pages can support



languages that use different scripts. Information about



charsets can be found at






The charset of the current page. The default is ISO-8859-1



(Latin script) for JSP-style and UTF-8 (an 8-bit Unicode



encoding) for XML-style tags.



The file to be included at the current position in the file.



The included file can be any HTML or JSP page or



fragment of a page. The file is specified using a URI to a file



within the web application.

A single JSP page can have multiple instances of the page directive.

The include directive is used, as stated in the table, to include another page within the current page. This might typically be a standard header or footer, but it can include any content. You would use this when you have standard data that you want to include in multiple JSP pages. The file is included when the page is translated into its Java form. Later we will see a function that allows you to include content at request time.

Scripting Elements

The scripting elements are the elements in the page that include the Java code. There are three subforms of this element: declarations, scriptlets, and expressions. Their forms are:


JSP Style


<%! declaration %>


<% scriptlet code %>

<jsp:scriptlet>code fragment</jsp:scriptlet>

<%= expression %>



A declaration is used to declare, and optionally define, a Java variable or a method. It works just like any declaration within a Java source code file. The declaration only appears within the translated JSP page, but not in the output to the client. For example, to declare a Vector in your JSP, you would use one of these forms:

  <%! Vector v = new Vector(); %>
  <jsp:declaration>Vector v = new Vector

This JSP fragment declares a variable v of type Vector and initializes it by calling the Vector constructor. Any variable you declare within a declaration element becomes an instance variable of the JSP page implementation class, and thus is global to the entire page. Thus, you must take care when initializing variables with a declaration, because instance variables are not thread-safe. By default, the server can send multiple requests to the same page simultaneously. You dont want one thread to change the variable while another thread is using the variable.

You can also declare and define methods within a declaration element:

public int void countTokens(String s) {
    StringTokenizer st = new StringTokenizer(s);
    return st.countTokens();
  public int countTokens(String s) {
StringTokenizer st = new StringTokenizer(s);
return st.countTokens();

Variables or methods in a declaration element can be called by any other code in the page.

blog comments powered by Disqus

- Java Too Insecure, Says Microsoft Researcher
- Google Beats Oracle in Java Ruling
- Deploying Multiple Java Applets as One
- Deploying Java Applets
- Understanding Deployment Frameworks
- Database Programming in Java Using JDBC
- Extension Interfaces and SAX
- Entities, Handlers and SAX
- Advanced SAX
- Conversions and Java Print Streams
- Formatters and Java Print Streams
- Java Print Streams
- Wildcards, Arrays, and Generics in Java
- Wildcards and Generic Methods in Java
- Finishing the Project: Java Web Development ...

Watch our Tech Videos 
Dev Articles Forums 
 RSS  Articles
 RSS  Forums
 RSS  All Feeds
Write For Us 
Weekly Newsletter
Developer Updates  
Free Website Content 
Contact Us 
Site Map 
Privacy Policy 

Developer Shed Affiliates


© 2003-2019 by Developer Shed. All rights reserved. DS Cluster - Follow our Sitemap
Popular Web Development Topics
All Web Development Tutorials