## javax.servlet.jsp
Interface JspApplicationContext

All Known Implementing Classes:
  JspApplicationContextImpl

    public interface JspApplicationContext

Stores application-scoped information relevant to JSP containers.

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(javax.servlet.ServletContext)` method, passing the `ServletContext` of the corresponding web application.

The `JspApplicationContext` provides the following services to JSP applications:

- Allows registration of `ELResolver`s, which are used to resolve variables in EL expressions contained in JSP pages and tag files.
- Provides an instance of `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.
- Allows the attachment of `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 `ELResolver`s.

Since:
  JSP 2.1
See Also:
  `ServletContext`, `JspFactory`, `ELResolver`, `ExpressionFactory`, `ELContextListener`

Method Summary
`void` `addELContextListener(ELContextListener listener)` Registers a `ELContextListener`s so that context objects can be added whenever a new `ELContext` is created.
`void` `addELResolver(ELResolver resolver)` Adds an `ELResolver` to 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 `ValueExpression`s and `MethodExpression`s so that EL expressions can be parsed and evaluated.

Method Detail

### addELResolver

    void addELResolver(ELResolver resolver)

  Adds an `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:

  - `ImplicitObjectELResolver`
  - `ELResolver`s registered via this method, in the order in which they are registered.
  - `MapELResolver`
  - `ListELResolver`
  - `ArrayELResolver`
  - `BeanELResolver`
  - `ScopedAttributeELResolver`

  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 `ELResolver`s are in the chain, aside from the standard ones. It is permissible to add `ELResolver`s 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.

  Parameters:
    `resolver` - The new `ELResolver`
  Throws:
    `IllegalStateException` - if an attempt is made to call this method after all `ServletContextListener`s have had their `contextInitialized` methods invoked.

### getExpressionFactory

    ExpressionFactory getExpressionFactory()

  Returns a factory used to create `ValueExpression`s and `MethodExpression`s so that EL expressions can be parsed and evaluated.

  Returns:
    A concrete implementation of the an `ExpressionFactory`.

### addELContextListener

    void addELContextListener(ELContextListener listener)

  Registers a `ELContextListener`s 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 `ELResolver`s listed in `addELResolver(javax.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 `ELResolver`s in the stack to access the context they need when they do a resolution.

  Parameters:
    `listener` - The listener to be notified when a new `ELContext` is created.

Copyright © 2008 Mort Bay Consulting. All Rights Reserved.