Skip to content
Home » Declarations in JSP

Declarations in JSP


Declarations in JSP

Introduction

In JavaServer Pages (JSP), declarations are used to declare variables, methods, and objects that become part of the generated servlet class. Declarations allow developers to define data and behavior that can be reused across multiple requests handled by the same JSP page.

Declarations are different from scriptlets because they do not belong to the _jspService() method; instead, they are placed at the class level of the generated servlet.


Syntax of JSP Declarations

<%! declaration %>
  • <%! and %> mark a declaration
  • Code written inside is treated as class-level code

Purpose of JSP Declarations

Declarations are used to:

  • Define instance variables
  • Declare helper methods
  • Maintain data shared across requests
  • Support reusable logic within a JSP page

Types of Declarations in JSP

  1. Variable Declarations
  2. Method Declarations

1. Variable Declarations

Description

Variables declared using JSP declarations become instance variables of the generated servlet class. These variables are shared across all requests handled by that JSP.

Example

<%! int count = 0; %>

This variable exists as long as the JSP servlet instance exists.

Usage

<% count++; %>
Total Visits: <%= count %>

Important Characteristics

  • Instance variables are shared among multiple threads
  • Improper use can lead to thread-safety issues
  • Synchronization may be required

2. Method Declarations

Description

Methods declared using JSP declarations become member methods of the generated servlet class. These methods can be called from scriptlets or expressions.

Example

<%! 
public int square(int n) {
    return n * n;
}
%>

Calling the Method

Square of 5: <%= square(5) %>

Scope of Declarations

  • Scope is page-wide
  • Available throughout the JSP page
  • Persist for the lifetime of the JSP servlet

Declarations vs Scriptlets

AspectDeclarationsScriptlets
Syntax<%! %><% %>
Location in ServletClass levelInside _jspService()
VariablesInstance variablesLocal variables
ScopeEntire JSPRequest-specific
Thread SafetyNot thread-safe by defaultThread-safe (local)

Best Practices for Using Declarations

  • Avoid mutable instance variables
  • Do not store user-specific data
  • Use methods instead of variables where possible
  • Prefer JavaBeans or helper classes for business logic
  • Keep JSP focused on presentation logic

Common Use Cases

  • Utility methods (formatting, calculations)
  • Constants
  • Read-only configuration values

Limitations of JSP Declarations

  • Risk of concurrency issues
  • Encourages mixing logic with presentation
  • Not suitable for complex business logic
  • Reduced maintainability in large applications

Conclusion

Declarations in JSP provide a mechanism to define class-level variables and methods within a JSP page. While they are powerful and reusable, they must be used carefully due to thread-safety concerns. Proper understanding of JSP declarations helps developers write efficient JSP pages, but for large and secure applications, business logic should be moved to JavaBeans or backend classes to maintain clean separation of concerns.