public interface JspApplicationContext
 The JSP container must create a single instance of JspApplicationContext for each
 ServletContext instance.
 
 An instance of JspApplicationContext is obtained by invoking the static
 JspFactory.getJspApplicationContext(jakarta.servlet.ServletContext) method, passing the ServletContext of the corresponding web
 application.
 
 The JspApplicationContext provides the following services to JSP applications:
 
ELResolvers, which are used to resolve variables in EL expressions contained
 in JSP pages and tag files.ExpressionFactory for those applications or frameworks that need to perform
 programmatic evaluation of EL expressions instead of allowing the JSP container to do it for them.ELContextListener instances for notification whenever a new
 ELContext is created. This is necessary when an application wishes to make custom context objects
 available to their pluggable ELResolvers.ServletContext, 
JspFactory, 
ELResolver, 
ExpressionFactory, 
ELContextListener| Modifier and Type | Method and Description | 
|---|---|
| void | addELContextListener(ELContextListener listener)Registers a  ELContextListeners so that context objects can be added whenever a newELContextis created. | 
| void | addELResolver(ELResolver resolver)Adds an  ELResolverto affect the way EL variables and properties are resolved for EL expressions
 appearing in JSP pages and tag files. | 
| ExpressionFactory | getExpressionFactory()Returns a factory used to create  ValueExpressions andMethodExpressions so that EL
 expressions can be parsed and evaluated. | 
void addELResolver(ELResolver resolver)
ELResolver to affect the way EL variables and properties are resolved for EL expressions
 appearing in JSP pages and tag files.
 
 For example, in the EL expression ${employee.lastName}, an ELResolver determines what object
 "employee" references and how to find its "lastName" property.
 
When evaluating an expression, the JSP container will consult a set of standard resolvers as well as any resolvers registered via this method. The set of resolvers are consulted in the following order:
ImplicitObjectELResolverELResolvers registered via this method, in the order in which they are registered.MapELResolverListELResolverArrayELResolverBeanELResolverScopedAttributeELResolver
 It is illegal to register an ELResolver after the application has received any request from the
 client. If an attempt is made to register an ELResolver after that time, an
 IllegalStateException is thrown.
 
 This restriction is in place to allow the JSP container to optimize for the common case where no additional
 ELResolvers are in the chain, aside from the standard ones. It is permissible to add
 ELResolvers before or after initialization to a CompositeELResolver that is already in
 the chain.
 
 It is not possible to remove an ELResolver registered with this method, once it has been registered.
 
resolver - The new ELResolverjava.lang.IllegalStateException - if an attempt is made to call this method after all
                               ServletContextListeners have had their contextInitialized
                               methods invoked.ExpressionFactory getExpressionFactory()
ValueExpressions and MethodExpressions so that EL
 expressions can be parsed and evaluated.ExpressionFactory.void addELContextListener(ELContextListener listener)
ELContextListeners so that context objects can be added whenever a new
 ELContext is created.
 
 At a minimum, the ELContext objects created will contain a reference to the JspContext
 for this request, which is added by the JSP container. This is sufficient for all the default
 ELResolvers listed in addELResolver(jakarta.el.ELResolver). Note that JspContext.class is used as the
 key to ELContext.putContext() for the JspContext object reference.
 
 This method is generally used by frameworks and applications that register their own ELResolver that
 needs context other than JspContext. The listener will typically add the necessary context to the
 ELContext provided in the event object. Registering a listener that adds context allows the
 ELResolvers in the stack to access the context they need when they do a resolution.
 
listener - The listener to be notified when a new ELContext is created.