Class PageContextImpl


public class PageContextImpl extends PageContext
Implementation of the PageContext class from the JSP spec.
  • Field Details

    • log

      private static Logger log
    • outs

      private BodyContentImpl[] outs
    • depth

      private int depth
    • servlet

      private javax.servlet.Servlet servlet
    • config

      private javax.servlet.ServletConfig config
    • context

      private javax.servlet.ServletContext context
    • factory

      private JspFactory factory
    • needsSession

      private boolean needsSession
    • errorPageURL

      private String errorPageURL
    • bufferSize

      private int bufferSize
    • jspApplicationContext

      private JspApplicationContextImpl jspApplicationContext
    • elResolver

      private javax.el.ELResolver elResolver
    • elContext

      private javax.el.ELContext elContext
    • attributes

      private HashMap<String,Object> attributes
    • isNametableInitialized

      private boolean isNametableInitialized
    • request

      private javax.servlet.ServletRequest request
    • response

      private javax.servlet.ServletResponse response
    • session

      private javax.servlet.http.HttpSession session
    • out

      private JspWriter out
    • baseOut

      private JspWriterImpl baseOut
  • Constructor Details

    • PageContextImpl

      PageContextImpl(JspFactory factory)
  • Method Details

    • initialize

      public void initialize(javax.servlet.Servlet servlet, javax.servlet.ServletRequest request, javax.servlet.ServletResponse response, String errorPageURL, boolean needsSession, int bufferSize, boolean autoFlush) throws IOException
      Description copied from class: PageContext

      The initialize method is called to initialize an uninitialized PageContext so that it may be used by a JSP Implementation class to service an incoming request and response within it's _jspService() method.

      This method is typically called from JspFactory.getPageContext() in order to initialize state.

      This method is required to create an initial JspWriter, and associate the "out" name in page scope with this newly created object.

      This method should not be used by page or tag library authors.

      Specified by:
      initialize in class PageContext
      Parameters:
      servlet - The Servlet that is associated with this PageContext
      request - The currently pending request for this Servlet
      response - The currently pending response for this Servlet
      errorPageURL - The value of the errorpage attribute from the page directive or null
      needsSession - The value of the session attribute from the page directive
      bufferSize - The value of the buffer attribute from the page directive
      autoFlush - The value of the autoflush attribute from the page directive
      Throws:
      IOException - during creation of JspWriter
    • _initialize

      private void _initialize(javax.servlet.Servlet servlet, javax.servlet.ServletRequest request, javax.servlet.ServletResponse response, String errorPageURL, boolean needsSession, int bufferSize, boolean autoFlush) throws IOException
      Throws:
      IOException
    • initializePageScopeNameTable

      private void initializePageScopeNameTable()
    • release

      public void release()
      Description copied from class: PageContext

      This method shall "reset" the internal state of a PageContext, releasing all internal references, and preparing the PageContext for potential reuse by a later invocation of initialize(). This method is typically called from JspFactory.releasePageContext().

      Subclasses shall envelope this method.

      This method should not be used by page or tag library authors.

      Specified by:
      release in class PageContext
    • getAttribute

      public Object getAttribute(String name)
      Description copied from class: JspContext
      Returns the object associated with the name in the page scope or null if not found.
      Specified by:
      getAttribute in class JspContext
      Parameters:
      name - the name of the attribute to get
      Returns:
      the object associated with the name in the page scope or null if not found.
    • doGetAttribute

      private Object doGetAttribute(String name)
    • getAttribute

      public Object getAttribute(String name, int scope)
      Description copied from class: JspContext
      Return the object associated with the name in the specified scope or null if not found.
      Specified by:
      getAttribute in class JspContext
      Parameters:
      name - the name of the attribute to set
      scope - the scope with which to associate the name/object
      Returns:
      the object associated with the name in the specified scope or null if not found.
    • doGetAttribute

      private Object doGetAttribute(String name, int scope)
    • setAttribute

      public void setAttribute(String name, Object attribute)
      Description copied from class: JspContext
      Register the name and value specified with page scope semantics. If the value passed in is null, this has the same effect as calling removeAttribute( name, PageContext.PAGE_SCOPE ).
      Specified by:
      setAttribute in class JspContext
      Parameters:
      name - the name of the attribute to set
      attribute - the value to associate with the name, or null if the attribute is to be removed from the page scope.
    • doSetAttribute

      private void doSetAttribute(String name, Object attribute)
    • setAttribute

      public void setAttribute(String name, Object o, int scope)
      Description copied from class: JspContext
      Register the name and value specified with appropriate scope semantics. If the value passed in is null, this has the same effect as calling removeAttribute( name, scope ).
      Specified by:
      setAttribute in class JspContext
      Parameters:
      name - the name of the attribute to set
      o - the object to associate with the name, or null if the attribute is to be removed from the specified scope.
      scope - the scope with which to associate the name/object
    • doSetAttribute

      private void doSetAttribute(String name, Object o, int scope)
    • removeAttribute

      public void removeAttribute(String name, int scope)
      Description copied from class: JspContext
      Remove the object reference associated with the specified name in the given scope. Does nothing if there is no such object.
      Specified by:
      removeAttribute in class JspContext
      Parameters:
      name - The name of the object to remove.
      scope - The scope where to look.
    • doRemoveAttribute

      private void doRemoveAttribute(String name, int scope)
    • getAttributesScope

      public int getAttributesScope(String name)
      Description copied from class: JspContext
      Get the scope where a given attribute is defined.
      Specified by:
      getAttributesScope in class JspContext
      Parameters:
      name - the name of the attribute to return the scope for
      Returns:
      the scope of the object associated with the name specified or 0
    • doGetAttributeScope

      private int doGetAttributeScope(String name)
    • findAttribute

      public Object findAttribute(String name)
      Description copied from class: JspContext
      Searches for the named attribute in page, request, session (if valid), and application scope(s) in order and returns the value associated or null.
      Specified by:
      findAttribute in class JspContext
      Parameters:
      name - the name of the attribute to search for
      Returns:
      the value associated or null
    • doFindAttribute

      private Object doFindAttribute(String name)
    • getAttributeNamesInScope

      public Enumeration<String> getAttributeNamesInScope(int scope)
      Description copied from class: JspContext
      Enumerate all the attributes in a given scope.
      Specified by:
      getAttributeNamesInScope in class JspContext
      Parameters:
      scope - the scope to enumerate all the attributes for
      Returns:
      an enumeration of names (java.lang.String) of all the attributes the specified scope
    • doGetAttributeNamesInScope

      private Enumeration<String> doGetAttributeNamesInScope(int scope)
    • removeAttribute

      public void removeAttribute(String name)
      Description copied from class: JspContext
      Remove the object reference associated with the given name from all scopes. Does nothing if there is no such object.
      Specified by:
      removeAttribute in class JspContext
      Parameters:
      name - The name of the object to remove.
    • doRemoveAttribute

      private void doRemoveAttribute(String name)
    • getOut

      public JspWriter getOut()
      Description copied from class: JspContext
      The current value of the out object (a JspWriter).
      Specified by:
      getOut in class JspContext
      Returns:
      the current JspWriter stream being used for client response
    • getSession

      public javax.servlet.http.HttpSession getSession()
      Description copied from class: PageContext
      The current value of the session object (an HttpSession).
      Specified by:
      getSession in class PageContext
      Returns:
      the HttpSession for this PageContext or null
    • getServlet

      public javax.servlet.Servlet getServlet()
    • getServletConfig

      public javax.servlet.ServletConfig getServletConfig()
      Description copied from class: PageContext
      The ServletConfig instance.
      Specified by:
      getServletConfig in class PageContext
      Returns:
      the ServletConfig for this PageContext
    • getServletContext

      public javax.servlet.ServletContext getServletContext()
      Description copied from class: PageContext
      The ServletContext instance.
      Specified by:
      getServletContext in class PageContext
      Returns:
      the ServletContext for this PageContext
    • getRequest

      public javax.servlet.ServletRequest getRequest()
      Description copied from class: PageContext
      The current value of the request object (a ServletRequest).
      Specified by:
      getRequest in class PageContext
      Returns:
      The ServletRequest for this PageContext
    • getResponse

      public javax.servlet.ServletResponse getResponse()
      Description copied from class: PageContext
      The current value of the response object (a ServletResponse).
      Specified by:
      getResponse in class PageContext
      Returns:
      the ServletResponse for this PageContext
    • getException

      public Exception getException()
      Returns the exception associated with this page context, if any. Added wrapping for Throwables to avoid ClassCastException (see Bugzilla 31171 for details).
      Specified by:
      getException in class PageContext
      Returns:
      The Exception associated with this page context, if any.
    • getPage

      public Object getPage()
      Description copied from class: PageContext
      The current value of the page object (In a Servlet environment, this is an instance of javax.servlet.Servlet).
      Specified by:
      getPage in class PageContext
      Returns:
      the Page implementation class instance associated with this PageContext
    • getAbsolutePathRelativeToContext

      private final String getAbsolutePathRelativeToContext(String relativeUrlPath)
    • include

      public void include(String relativeUrlPath) throws javax.servlet.ServletException, IOException
      Description copied from class: PageContext

      Causes the resource specified to be processed as part of the current ServletRequest and ServletResponse being processed by the calling Thread. The output of the target resources processing of the request is written directly to the ServletResponse output stream.

      The current JspWriter "out" for this JSP is flushed as a side-effect of this call, prior to processing the include.

      If the relativeUrlPath begins with a "/" then the URL specified is calculated relative to the DOCROOT of the ServletContext for this JSP. If the path does not begin with a "/" then the URL specified is calculated relative to the URL of the request that was mapped to the calling JSP.

      It is only valid to call this method from a Thread executing within a _jspService(...) method of a JSP.

      Specified by:
      include in class PageContext
      Parameters:
      relativeUrlPath - specifies the relative URL path to the target resource to be included
      Throws:
      javax.servlet.ServletException - if the page that was forwarded to throws a ServletException
      IOException - if an I/O error occurred while forwarding
    • include

      public void include(String relativeUrlPath, boolean flush) throws javax.servlet.ServletException, IOException
      Description copied from class: PageContext

      Causes the resource specified to be processed as part of the current ServletRequest and ServletResponse being processed by the calling Thread. The output of the target resources processing of the request is written directly to the current JspWriter returned by a call to getOut().

      If flush is true, The current JspWriter "out" for this JSP is flushed as a side-effect of this call, prior to processing the include. Otherwise, the JspWriter "out" is not flushed.

      If the relativeUrlPath begins with a "/" then the URL specified is calculated relative to the DOCROOT of the ServletContext for this JSP. If the path does not begin with a "/" then the URL specified is calculated relative to the URL of the request that was mapped to the calling JSP.

      It is only valid to call this method from a Thread executing within a _jspService(...) method of a JSP.

      Specified by:
      include in class PageContext
      Parameters:
      relativeUrlPath - specifies the relative URL path to the target resource to be included
      flush - True if the JspWriter is to be flushed before the include, or false if not.
      Throws:
      javax.servlet.ServletException - if the page that was forwarded to throws a ServletException
      IOException - if an I/O error occurred while forwarding
    • getVariableResolver

      public VariableResolver getVariableResolver()
      Description copied from class: JspContext
      Returns an instance of a VariableResolver that provides access to the implicit objects specified in the JSP specification using this JspContext as the context object.
      Specified by:
      getVariableResolver in class JspContext
      Returns:
      A valid instance of a VariableResolver.
    • getELResolver

      private javax.el.ELResolver getELResolver()
    • getELContext

      public javax.el.ELContext getELContext()
      Description copied from class: JspContext
      Returns the ELContext associated with this JspContext.

      The ELContext is created lazily and is reused if it already exists. There is a new ELContext for each JspContext.

      The ELContext must contain the ELResolver described in the JSP specification (and in the javadocs for JspApplicationContext.addELResolver(javax.el.ELResolver)).

      Specified by:
      getELContext in class JspContext
      Returns:
      The ELContext associated with this JspContext.
    • getJspApplicationContext

      JspApplicationContextImpl getJspApplicationContext()
    • forward

      public void forward(String relativeUrlPath) throws javax.servlet.ServletException, IOException
      Description copied from class: PageContext

      This method is used to re-direct, or "forward" the current ServletRequest and ServletResponse to another active component in the application.

      If the relativeUrlPath begins with a "/" then the URL specified is calculated relative to the DOCROOT of the ServletContext for this JSP. If the path does not begin with a "/" then the URL specified is calculated relative to the URL of the request that was mapped to the calling JSP.

      It is only valid to call this method from a Thread executing within a _jspService(...) method of a JSP.

      Once this method has been called successfully, it is illegal for the calling Thread to attempt to modify the ServletResponse object. Any such attempt to do so, shall result in undefined behavior. Typically, callers immediately return from _jspService(...) after calling this method.

      Specified by:
      forward in class PageContext
      Parameters:
      relativeUrlPath - specifies the relative URL path to the target resource as described above
      Throws:
      javax.servlet.ServletException - if the page that was forwarded to throws a ServletException
      IOException - if an I/O error occurred while forwarding
    • pushBody

      public BodyContent pushBody()
      Description copied from class: PageContext
      Return a new BodyContent object, save the current "out" JspWriter, and update the value of the "out" attribute in the page scope attribute namespace of the PageContext.
      Overrides:
      pushBody in class PageContext
      Returns:
      the new BodyContent
    • pushBody

      public JspWriter pushBody(Writer writer)
      Description copied from class: JspContext
      Return a new JspWriter object that sends output to the provided Writer. Saves the current "out" JspWriter, and updates the value of the "out" attribute in the page scope attribute namespace of the JspContext.

      The returned JspWriter must implement all methods and behave as though it were unbuffered. More specifically:

      • clear() must throw an IOException
      • clearBuffer() does nothing
      • getBufferSize() always returns 0
      • getRemaining() always returns 0
      Overrides:
      pushBody in class JspContext
      Parameters:
      writer - The Writer for the returned JspWriter to send output to.
      Returns:
      a new JspWriter that writes to the given Writer.
    • popBody

      public JspWriter popBody()
      Description copied from class: JspContext
      Return the previous JspWriter "out" saved by the matching pushBody(), and update the value of the "out" attribute in the page scope attribute namespace of the JspContext.
      Overrides:
      popBody in class JspContext
      Returns:
      the saved JspWriter.
    • getExpressionEvaluator

      public ExpressionEvaluator getExpressionEvaluator()
      Provides programmatic access to the ExpressionEvaluator. The JSP Container must return a valid instance of an ExpressionEvaluator that can parse EL expressions.
      Specified by:
      getExpressionEvaluator in class JspContext
      Returns:
      A valid instance of an ExpressionEvaluator.
    • handlePageException

      public void handlePageException(Exception ex) throws IOException, javax.servlet.ServletException
      Description copied from class: PageContext

      This method is intended to process an unhandled 'page' level exception by forwarding the exception to the specified error page for this JSP. If forwarding is not possible (for example because the response has already been committed), an implementation dependent mechanism should be used to invoke the error page (e.g. "including" the error page instead).

      If no error page is defined in the page, the exception should be rethrown so that the standard servlet error handling takes over.

      A JSP implementation class shall typically clean up any local state prior to invoking this and will return immediately thereafter. It is illegal to generate any output to the client, or to modify any ServletResponse state after invoking this call.

      This method is kept for backwards compatiblity reasons. Newly generated code should use PageContext.handlePageException(Throwable).

      Specified by:
      handlePageException in class PageContext
      Parameters:
      ex - the exception to be handled
      Throws:
      IOException - if an I/O error occurred while invoking the error page
      javax.servlet.ServletException - if an error occurs while invoking the error page
      See Also:
    • handlePageException

      public void handlePageException(Throwable t) throws IOException, javax.servlet.ServletException
      Description copied from class: PageContext

      This method is intended to process an unhandled 'page' level exception by forwarding the exception to the specified error page for this JSP. If forwarding is not possible (for example because the response has already been committed), an implementation dependent mechanism should be used to invoke the error page (e.g. "including" the error page instead).

      If no error page is defined in the page, the exception should be rethrown so that the standard servlet error handling takes over.

      This method is intended to process an unhandled "page" level exception by redirecting the exception to either the specified error page for this JSP, or if none was specified, to perform some implementation dependent action.

      A JSP implementation class shall typically clean up any local state prior to invoking this and will return immediately thereafter. It is illegal to generate any output to the client, or to modify any ServletResponse state after invoking this call.

      Specified by:
      handlePageException in class PageContext
      Parameters:
      t - the throwable to be handled
      Throws:
      IOException - if an I/O error occurred while invoking the error page
      javax.servlet.ServletException - if an error occurs while invoking the error page
      See Also:
    • doHandlePageException

      private void doHandlePageException(Throwable t) throws IOException, javax.servlet.ServletException
      Throws:
      IOException
      javax.servlet.ServletException
    • getExpressionFactory

      private static javax.el.ExpressionFactory getExpressionFactory(PageContext pageContext)
    • evaluateExpression

      public static Object evaluateExpression(String expression, Class expectedType, PageContext pageContext, ProtectedFunctionMapper functionMap) throws javax.el.ELException
      Evaluates an EL expression
      Parameters:
      expression - The expression to be evaluated
      expectedType - The expected resulting type
      pageContext - The page context
      functionMap - Maps prefix and name to Method
      Returns:
      The result of the evaluation
      Throws:
      javax.el.ELException
    • getValueExpression

      public static javax.el.ValueExpression getValueExpression(String expression, PageContext pageContext, Class expectedType, javax.el.FunctionMapper functionMap)
    • getMethodExpression

      public static javax.el.MethodExpression getMethodExpression(String expression, PageContext pageContext, javax.el.FunctionMapper functionMap, Class expectedType, Class[] paramTypes)
    • setValueVariable

      public static void setValueVariable(PageContext pageContext, String variable, javax.el.ValueExpression expression)
    • setMethodVariable

      public static void setMethodVariable(PageContext pageContext, String variable, javax.el.MethodExpression expression)