All Topics  
JavaServer Pages

 

   Email Print
   Bookmark   Link






 

JavaServer Pages



 
 
JavaServer Pages (JSP) is a Java
Java (programming language)

Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java ....
 technology that allows software developer
Software developer

A software developer is a person or organization concerned with facets of the software development process wider than design and coding, a somewhat broader scope of computer programming or a specialty of project manager including some aspects of Software product management....
s to create dynamically-generated web sites
Dynamic web page

Classical hypertext navigation occurs among "static" documents, and, for "web users," this experience is reproduced using static web pages. However, Web browser can also provide an "interactive experience" that is termed "dynamic." Content on a web page can change, in response to different contexts or conditions....
, with HTML
HTML

HTML, an Acronym and initialism of HyperText Markup Language, is the predominant markup language for Web pages. It provides a means to describe the structure of text-based information in a document?by denoting certain text as links, headings, paragraphs, lists, and so on?and to supplement that text with interactive forms, embedded '...
, XML, or other document types, in response to a Web client request. The technology allows Java code and certain pre-defined actions to be embedded into static content.

The JSP syntax adds additional XML-like tags, called JSP actions, to be used to invoke built-in functionality. Additionally, the technology allows for the creation of JSP tag libraries that act as extensions to the standard HTML or XML tags.






Discussion
Ask a question about 'JavaServer Pages'
Start a new discussion about 'JavaServer Pages'
Answer questions from other users
Full Discussion Forum



Encyclopedia


JavaServer Pages (JSP) is a Java
Java (programming language)

Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java ....
 technology that allows software developer
Software developer

A software developer is a person or organization concerned with facets of the software development process wider than design and coding, a somewhat broader scope of computer programming or a specialty of project manager including some aspects of Software product management....
s to create dynamically-generated web sites
Dynamic web page

Classical hypertext navigation occurs among "static" documents, and, for "web users," this experience is reproduced using static web pages. However, Web browser can also provide an "interactive experience" that is termed "dynamic." Content on a web page can change, in response to different contexts or conditions....
, with HTML
HTML

HTML, an Acronym and initialism of HyperText Markup Language, is the predominant markup language for Web pages. It provides a means to describe the structure of text-based information in a document?by denoting certain text as links, headings, paragraphs, lists, and so on?and to supplement that text with interactive forms, embedded '...
, XML, or other document types, in response to a Web client request. The technology allows Java code and certain pre-defined actions to be embedded into static content.

The JSP syntax adds additional XML-like tags, called JSP actions, to be used to invoke built-in functionality. Additionally, the technology allows for the creation of JSP tag libraries that act as extensions to the standard HTML or XML tags. Tag libraries provide a platform independent way of extending the capabilities of a Web server
Web server

The term web server can mean one of two things:# A computer program that is responsible for accepting Hypertext Transfer Protocol requests from clients , and Server them HTTP responses along with optional data contents, which usually are web pages such as Hypertext Markup Language documents and linked objects ....
.

JSPs are compiled into Java Servlet
Java Servlet

Servlets are Java programming language objects that dynamically process requests and construct responses. The Java Servlet API allows a software developer to add dynamic content to a Web server using the Java platform....
s by a JSP compiler. A JSP compiler may generate a servlet in Java code that is then compiled by the Java compiler, or it may generate byte code for the servlet directly. JSPs can also be interpreted
JSP Weaver

JSP Weaver is a JavaServer Pages interpreter. Unlike JSP compilers it evaluates the JSP files directly, without generating or compiling intermediate Java source files for the JSP Java servlet....
 on-the-fly, reducing the time taken to reload changes.

JSP and Servlets

Architecturally, JSP may be viewed as a high-level abstraction of servlets that is implemented as an extension of the Servlet 2.1 API. Both servlets and JSPs were originally developed at Sun Microsystems
Sun Microsystems

Sun Microsystems, Inc. is a multinational corporation vendor of computers, computer components, computer software, and information technology services, founded on February 24, 1982....
. Starting with version 1.2 of the JSP specification, JavaServer Pages have been developed under the Java Community Process
Java Community Process

The Java Community Process or JCP, established in 1998, is a formalized process that allows interested parties to get involved in the definition of future versions and features of the Java platform....
. JSR 53 defines both the JSP 1.2 and Servlet 2.3 specifications and JSR 152 defines the JSP 2.0 specification. As of May 2006 the JSP 2.1 specification has been released under JSR 245 as part of Java EE 5.

JSP syntax

A JavaServer Page may be broken down into the following pieces:
  • static data such as HTML
  • JSP directives such as the include directive
  • JSP scripting elements and variables
  • JSP actions
  • custom tags with correct library


JSP directives control how the JSP compiler generates the servlet. The following directives are available:

include : The include directive informs the JSP compiler to include a complete file into the current file. It is as if the contents of the included file were pasted directly into the original file. This functionality is similar to the one provided by the C preprocessor
C preprocessor

The C preprocessor is the preprocessor for the C . In many C implementations, it is a separate computer program invoked by the compiler as the first part of translation....
. Included files generally have the extension "jspf" (for JSP Fragment): <%@ include file="somefile.jspf" %> page : The page directive has several attributes.
; import : Results in a Java import statement being inserted into the resulting file.
; contentType : specifies the content that is generated. This should be used if HTML is not used or if the character set is not the default character set.
; errorPage : Indicates the page that will be shown if an exception occurs while processing the HTTP request.
; isErrorPage : If set to true, it indicates that this is the error page. Default value is false.
; isThreadSafe : Indicates if the resulting servlet is thread
Thread (computer science)

In computer science, a thread of execution is a Fork of a computer program into two or more Concurrency running task s. The implementation of threads and process es differs from one operating system to another, but in most cases, a thread is contained inside a process....
 safe.
; autoFlush : To autoflush the contents.A value of true, the default, indicates that the buffer should be flushed when it is full. A value of false, rarely used, indicates that an exception should be thrown when the buffer overflows. A value of false is illegal when also using buffer="none".
; session: To maintain session. A value of true (the default) indicates that the predefined variable session (of type HttpSession) should be bound to the existing session if one exists, otherwise a new session should be created and bound to it. A value of false indicates that no sessions will be used, and attempts to access the variable session will result in errors at the time the JSP page is translated into a servlet.
; buffer: To set Buffer Size. The default is 8k and it is advisable that you increase it.
; isELIgnored: Defines whether EL expressions are ignored when the JSP is translated.
; language: Defines the scripting language used in scriptlets, expressions and declarations. Right now, the only possible value is "java".
;extends: Defines the superclass of the class this JSP will become. You won't use this unless you REALLY know what you're doing - it overrides the class hierarchy provided by the Container.
;info: Defines a String that gets put into the translated page, just so that you can get it using the generated servlet's inherited getServletInfo method.
;pageEncoding: Defines the character encoding for the JSP. The default is "ISO-8859-1"(unless the contentType attribute already defines a character encoding, or the page uses XML document syntax).
<%@ page import="java.util.*" %> <%-- example import --%> <%@ page contentType="text/html" %> <%-- example contentType --%> <%@ page isErrorPage="false" %> <%-- example for non error page --%> <%@ page isThreadSafe="true" %> <%-- example for a thread safe JSP --%> <%@ page session="true" %> <%-- example for using session binding --%> <%@ page autoFlush="true" %> <%-- example for setting autoFlush --%> <%@ page buffer="20kb" %> <%-- example for setting Buffer Size --%>
Note: Only the "import" page directive can be used multiple times in the same JSP.
taglib : The taglib directive indicates that a JSP tag library is to be used. The directive requires that a prefix be specified (much like a namespace in C++) and the URI for the tag library description. <%@ taglib prefix="myprefix" uri="taglib/mytag.tld" %>

JSP scripting elements and objects


JSP implicit objects
The following JSP implicit objects are exposed by the JSP container and can be referenced by the programmer: out : The used to write the data to the response stream(output page). page : The servlet itself. pageContext : A instance that contains data associated with the whole page. A given HTML page may be passed among multiple JSPs. request : The object that provides HTTP request information. response : The object that can be used to send data back to the client. session : The object that can be used to track information about a user from one request to another. config : Provides servlet configuration data. application : Data shared by all JSPs and servlets in the application. exception : Exceptions not caught by application code.

Scripting elements
There are three basic kinds of scripting elements that allow java code to be inserted directly into the servlet.
  • A declaration tag places a variable definition inside the body of the java servlet class. Static data members may be defined as well. Also inner classes should be defined here.
<%! int serverInstanceVariable = 1; %> Declaration tags also allow methods to be defined. <%! /** * Converts the Object into a string or if * the Object is null, it returns the empty string. */ public String toStringOrBlank( Object obj ) %>
  • A scriptlet tag places the contained statements inside the _jspService method of the java servlet class.
<% int localStackBasedVariable = 1; out.println(localStackBasedVariable); %>
  • An expression tag places an expression to be evaluated inside the java servlet class. Expressions should not be terminated with a semi-colon .
<%= "expanded inline data " + 1 %>
  • Also we can use the following tag to give comments in jsp:
<%-- Give your comments here --%>

JSP actions

JSP actions are XML tags that invoke built-in web server functionality. They are executed at runtime. Some are standard and some are custom (which are developed by Java developers). The following list contains the standard ones:

jsp:include : Similar to a subroutine, the Java servlet temporarily hands the request and response off to the specified JavaServer Page. Control will then return to the current JSP, once the other JSP has finished. Using this, JSP code will be shared between multiple other JSPs, rather than duplicated. jsp:param : Can be used inside a jsp:include, jsp:forward or jsp:params block. Specifies a parameter that will be added to the request's current parameters. jsp:forward : Used to hand off the request and response to another JSP or servlet. Control will never return to the current JSP. jsp:plugin : Older versions of Netscape Navigator
Netscape Navigator

Netscape Navigator and Netscape are the names for the proprietary software web browser popular in the 1990s, and the flagship product of the Netscape Communications Corporation, and the dominant web browser in terms of Usage share of web browsers....
 and Internet Explorer
Internet Explorer

Windows Internet Explorer , commonly abbreviated to IE, is a series of graphical user interface web browsers developed by Microsoft and included as part of the Microsoft Windows line of operating systems starting in 1995....
 used different tags to embed an applet
Java applet

A Java applet is an applet delivered to the users in the form of Java bytecode. Java applets can run in a Web browser using a Java Virtual Machine , or in Sun Microsystems's AppletViewer, a stand-alone tool for testing applets....
. This action generates the browser specific tag needed to include an applet. jsp:fallback : The content to show if the browser does not support applets. jsp:getProperty : Gets a property from the specified JavaBean
JavaBeans

JavaBeans are Code reuse Component-based software engineering for Java that can be manipulated visually in a builder tool. Practically, they are classes written in the Java conforming to a particular convention....
. jsp:setProperty : Sets a property in the specified JavaBean. jsp:useBean : Creates or re-uses a JavaBean available to the JSP page.

Examples of tags

jsp:include
name:<%=request.getParameter("extraparam")%>

jsp:forward
In this forwarding example, the request is forwarded to "subpage.jsp". The request handling does not return to this page.

jsp:plugin
Your browser does not support applets. The plugin
Plugin

In computing, a plug-in consists of a computer program that interacts with a host application software to provide a certain, usually very specific, function "on demand"....
 example illustrates a uniform way of embedding applet
Applet

An applet is a software component that runs in the context of another program, for example a web browser. An applet usually performs a very narrow function that has no independent use....
s in a web page. Before the advent of the <OBJECT> tag, there was no common way of embedding applets. Currently, the jsp:plugin tag does not allow for dynamically called applets. For example, jsp:params cannot be used with a charting applet that requires the data points to be passed in as parameters unless the number of data points is constant. You cannot, for example, loop through a ResultSet to create the jsp:param tags. Each jsp:param tag must be hand-coded. However, each of those jsp:param tags can have a dynamic name and a dynamic value.

JSP Tag Libraries

In addition to the pre-defined JSP actions, developers may add their own custom actions using the JSP Tag Extension API. Developers write a Java class that implements one of the Tag interfaces and provide a tag library XML description file that specifies the tags and the java classes that implement the tags.

Consider the following JSP.

<%@ taglib uri="mytaglib.tld" prefix="myprefix" %> … <%-- The start tag %> … <%-- The end tag %> …

The JSP compiler will load the mytaglib.tld XML file and see that the tag 'myaction' is implemented by the java class 'MyActionTag'. The first time the tag is used in the file, it will create an instance of 'MyActionTag'. Then (and each additional time that the tag is used), it will invoke the method doStartTag when it encounters the starting tag. It looks at the result of the start tag, and determines how to process the body of the tag. The body is the text between the start tag and the end tag. The doStartTag method may return one of the following: SKIP_BODY : The body between the tag is not processed. EVAL_BODY_INCLUDE : Evaluate the body of the tag. EVAL_BODY_TAG : Evaluate the body of the tag and push the result onto stream (stored in the body content property of the tag).

Note: If tag extends the BodyTagSupport class, the method doAfterBody will be called when the body has been processed just prior to calling the doEndTag. This method is used to implement looping constructs.

When it encounters the end tag, it invokes the doEndTag method. The method may return one of two values: EVAL_PAGE : This indicates that the rest of the JSP file should be processed. SKIP_PAGE : This indicates that no further processing should be done. Control leaves the JSP page. This is what is used for the forwarding action.

The myaction tag above would have an implementation class that looked like something below: public class MyActionTag extends TagSupport Add Body Tag description.

If you want to iterate the body a few times, then the java class (tag handler) implements IterationTag interface. It returns EVAL_BODY_AGAIN - which means to invoke the body again.

JSP Standard Tag Library (JSTL)

The JavaServer Pages Standard Tag Library (JSTL) is a component of the Java EE Web application development platform. It extends the JSP specification by adding a tag library of JSP tags for common tasks, such as XML data processing, conditional execution, loops and internationalization.

JSP Technology in the Java EE 5 Platform


The focus of Java EE 5 has been ease of development by making use of Java language annotations that were introduced by J2SE 5.0. JSP 2.1 supports this goal by defining annotations for dependency injection on JSP tag handlers and context listeners.

Another key concern of the Java EE 5 specification has been the alignment of its webtier technologies, namely JavaServer Pages (JSP), JavaServer Faces
JavaServer Faces

is a Java -based Web application framework intended to simplify Software of user interfaces for Java EE applications. Unlike request-driven Model-view-controller web frameworks, JSF uses a component-based approach....
 (JSF), and JavaServer Pages Standard Tag Library
JavaServer Pages Standard Tag Library

The JavaServer Pages Standard Tag Library , is a component of the Java EE Web application development platform. It extends the JavaServer Pages specification by adding a tag library of JSP tags for common tasks, such as XML data processing, conditional execution, loops and internationalization....
 (JSTL).

The outcome of this alignment effort has been the Unified Expression Language (EL), which integrates the expression languages defined by JSP 2.0 and JSF 1.1.

The main key additions to the Unified EL that came out of the alignment work have been:

A pluggable API for resolving variable references into Java objects and for resolving the properties applied to these Java objects, Support for deferred expressions, which may be evaluated by a tag handler when needed, unlike their regular expression counterparts, which get evaluated immediately when a page is executed and rendered, and Support for lvalue expression, which appear on the left hand side of an assignment operation. When used as an lvalue, an EL expression represents a reference to a data structure, for example: a JavaBeans property, that is assigned some user input. The new Unified EL is defined in its own specification document, which is delivered along with the JSP 2.1 specification.

Thanks to the Unified EL, JSTL tags, such as the JSTL iteration tags, can now be used with JSF components in an intuitive way.

JSP 2.1 leverages the Servlet 2.5 specification for its web semantics

Internationalization

Internationalization in JSP is accomplished the same way as in a normal Java application, that is by using resource bundles.

JSP 2.0

The new version of the JSP specification includes new features meant to improve programmer productivity. Namely:
  • An Expression Language
    Expression Language

    Expression Language is a scripting language which allows access to Java components through JavaServer Pages. Since JavaServer Pages#JSP 2.0, it has been used inside JavaServer Pages tags to separate Java code from JSP, and to allow easier access to Java components ....
     (EL) which allows developers to create Velocity
    Jakarta Velocity

    Apache Velocity is an open source software project directed by the Apache Software Foundation. Velocity is a Java -based template engine that provides a simple yet powerful Web template#Template languages to reference object s defined in Java code....
    -style templates
    Template (programming)

    Templates are a feature of the C++ programming language that allow functions and classes to operate with Generic programming. This allows a function or class to work on many different datatype without being rewritten for each one....
     (among other things).
  • A faster/easier way to display parameter values.
Hello, $ <%-- Same as: Hello, <%=request.getParameter("visitor")%> --%>
  • A clearer way to navigate nested beans
// Consider some beans.
 class Person 

class Organization

// Then, if an instance of Person was to be placed onto a request attribute under the name "person" Hello, $, of company $ <%-- Second expression same as <% Person p = (Person) request.getAttribute("person"); if (p != null) %> --%>


Model-view-controller paradigm

Sun recommends that the Model-view-controller
Model-view-controller

Model?View?Controller is an Architectural pattern used in software engineering. Successful use of the pattern isolates business logic from user interface considerations, resulting in an application where it is easier to modify either the visual appearance of the application or the underlying business rules without affecting the other....
 pattern be used with the JSP files in order to split the presentation
Presentation

Presentation is the process of showing and explaining the content of a topic to an audience. A presentation program, such as OpenOffice.org#Components, Keynote or Microsoft PowerPoint, is often used to generate the presentation content....
 from request processing and computer data storage. Either regular servlets or separate JSP files are used to process the request. After the request processing has finished, control is passed to a JSP used only for creating the output. There are several platforms based on Model-view-controller pattern for web tiers (such as Barracuda
Barracuda (Java)

Barracuda MVC is an open-source web application framework for developing Java EE web applications....
, Apache Struts
Apache Struts

Apache Struts is an open-source web application framework for developing Java EE web applications. It uses and extends the Java Servlet application programming interface to encourage developers to adopt a model-view-controller architecture....
 or Spring MVC framework).

Example

Regardless of whether the JSP compiler generates Java source code for a servlet or emits the byte code directly, it is helpful to understand how the JSP compiler transforms the page into a Java servlet. For example, consider the following input JSP and its resulting generated Java Servlet.

Input JSP
 <%@ page errorPage="myerror.jsp" %>
 <%@ page import="com.foo.bar" %>

<%! int serverInstanceVariable = 1;%>

<% int localStackBasedVariable = 1; %>

Resulting servlet package jsp_servlet; import java.util.*; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*;

import com.foo.bar; // Imported as a result of <%@ page import="com.foo.bar" %> import …

class _myservlet implements javax.servlet.Servlet, javax.servlet.jsp.HttpJspPage

See also

  • JSTL
  • Java EE
  • JavaServer Faces
    JavaServer Faces

    is a Java -based Web application framework intended to simplify Software of user interfaces for Java EE applications. Unlike request-driven Model-view-controller web frameworks, JSF uses a component-based approach....
  • Java Servlet
    Java Servlet

    Servlets are Java programming language objects that dynamically process requests and construct responses. The Java Servlet API allows a software developer to add dynamic content to a Web server using the Java platform....
  • WAR (Sun file format)
  • EAR (file format)
    EAR (file format)

    An Enterprise ARchive, or EAR, is a file format used by Java EE for packaging one or more modules into a single archive so that the deployment of the various J2EE applications onto an application server happens simultaneously and coherently....
  • JAR (file format)
    JAR (file format)

    In computing, a JAR file aggregates many files into one. Software developers generally use .jar files to distribute Java platform class and associated metadata....
  • Apache Tomcat
    Apache Tomcat

    Apache Tomcat is a servlet container developed by the Apache Software Foundation . Tomcat implements the Java Servlet and the JavaServer Pages specifications from Sun Microsystems, and provides a "pure Java " Hypertext Transfer Protocol web server environment for Java code to run....
  • Sun Java System Web Server
    Sun Java System Web Server

    Sun Java System Web Server is a web server designed for medium and large business applications. Sun Java System Web Server builds on the earlier Sun ONE Web Server, iPlanet Web Server, and Netscape Enterprise Server products....
  • ASP
    Active Server Pages

    Active Server Pages , also known as Classic ASP, was Microsoft's first server-side scripting Active Scripting for dynamic web page. Initially released as an add-on to Internet Information Services via the Windows_NT_4.0#Option_Pack, it was subsequently included as a free component of Windows Server ....
  • CFM
    ColdFusion

    ColdFusion is an application server and software language used for Internet application development such as for dynamic web page. In this regard, ColdFusion is a similar product to Microsoft Active Server Pages, JavaServer Pages or PHP....


Further reading


External links


  • (JSP 2.1)
  • (JSP 2.0)
  • (JSP 1.2)


<%= toStringOrBlank( "expanded inline data " + 1 ) %>