Class PageContextImpl


public class PageContextImpl extends PageContext
Implementation of the PageContext class from the JSP spec. Also doubles as a VariableResolver for the EL.
Author:
Anil K. Vijendran, Larry Cable, Hans Bergsten, Pierre Delisle, Mark Roth, Jan Luehe, Jacob Hookom
  • Method Details

    • initialize

      public void initialize(Servlet servlet, ServletRequest request, ServletResponse response, String errorPageURL, boolean needsSession, int bufferSize, boolean autoFlush) throws IOException
      Description copied from class: jakarta.servlet.jsp.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
    • release

      public void release()
      Description copied from class: jakarta.servlet.jsp.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: jakarta.servlet.jsp.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.
    • getAttribute

      public Object getAttribute(String name, int scope)
      Description copied from class: jakarta.servlet.jsp.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.
    • setAttribute

      public void setAttribute(String name, Object attribute)
      Description copied from class: jakarta.servlet.jsp.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.
    • setAttribute

      public void setAttribute(String name, Object o, int scope)
      Description copied from class: jakarta.servlet.jsp.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
    • removeAttribute

      public void removeAttribute(String name, int scope)
      Description copied from class: jakarta.servlet.jsp.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.
    • getAttributesScope

      public int getAttributesScope(String name)
      Description copied from class: jakarta.servlet.jsp.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
    • findAttribute

      public Object findAttribute(String name)
      Description copied from class: jakarta.servlet.jsp.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
    • getAttributeNamesInScope

      public Enumeration<String> getAttributeNamesInScope(int scope)
      Description copied from class: jakarta.servlet.jsp.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 (String) of all the attributes the specified scope
    • removeAttribute

      public void removeAttribute(String name)
      Description copied from class: jakarta.servlet.jsp.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.
    • getOut

      public JspWriter getOut()
      Description copied from class: jakarta.servlet.jsp.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 HttpSession getSession()
      Description copied from class: jakarta.servlet.jsp.PageContext
      The current value of the session object (an HttpSession).
      Specified by:
      getSession in class PageContext
      Returns:
      the HttpSession for this PageContext or null
    • getServletConfig

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

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

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

      public ServletResponse getResponse()
      Description copied from class: jakarta.servlet.jsp.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: jakarta.servlet.jsp.PageContext
      The current value of the page object (In a Servlet environment, this is an instance of jakarta.servlet.Servlet).
      Specified by:
      getPage in class PageContext
      Returns:
      the Page implementation class instance associated with this PageContext
    • include

      public void include(String relativeUrlPath) throws ServletException, IOException
      Description copied from class: jakarta.servlet.jsp.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:
      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 ServletException, IOException
      Description copied from class: jakarta.servlet.jsp.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:
      ServletException - if the page that was forwarded to throws a ServletException
      IOException - if an I/O error occurred while forwarding
    • forward

      public void forward(String relativeUrlPath) throws ServletException, IOException
      Description copied from class: jakarta.servlet.jsp.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:
      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: jakarta.servlet.jsp.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: jakarta.servlet.jsp.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: jakarta.servlet.jsp.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.
    • handlePageException

      public void handlePageException(Exception ex) throws IOException, ServletException
      Description copied from class: jakarta.servlet.jsp.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 compatibility 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
      ServletException - if an error occurs while invoking the error page
      See Also:
    • handlePageException

      public void handlePageException(Throwable t) throws IOException, ServletException
      Description copied from class: jakarta.servlet.jsp.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
      ServletException - if an error occurs while invoking the error page
      See Also:
    • proprietaryEvaluate

      public static Object proprietaryEvaluate(String expression, Class<?> expectedType, PageContext pageContext, ProtectedFunctionMapper functionMap) throws ELException
      Proprietary method to evaluate EL expressions. XXX - This method should go away once the EL interpreter moves out of JSTL and into its own project. For now, this is necessary because the standard machinery is too slow.
      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:
      ELException - If an error occurs during the evaluation
    • getELContext

      public ELContext getELContext()
      Description copied from class: jakarta.servlet.jsp.JspContext
      Obtain the ELContext for this JSPContext. Each JSPContext has a dedicated ELContext.
      Specified by:
      getELContext in class JspContext
      Returns:
      the ELContext for this JSPContext