javax.servlet.jsp

## Interface JspApplicationContext

-     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

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `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 © 1996-2013, Oracle and/or its affiliates. All Rights Reserved. Use is subject to license terms.