# Class JspServletWrapper

java.lang.Object
org.apache.jasper.servlet.JspServletWrapper

public class JspServletWrapper extends Object
The Jasper JSP engine. The servlet container is responsible for providing a URLClassLoader for the web application context Jasper is being used in. Jasper will try to get the Tomcat ServletContext attribute for its ServletContext class loader, if that fails, it uses the parent class loader. In either case, it must be a URLClassLoader.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `JspServletWrapper(ServletConfig config, Options options, String jspUri, JspRuntimeContext rctxt)`
  Constructs a JspServletWrapper for JSP pages.
  `JspServletWrapper(ServletContext servletContext, Options options, String tagFilePath, TagInfo tagInfo, JspRuntimeContext rctxt, Jar tagJar)`
  Constructs a JspServletWrapper for tag files.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `int`
  `decTripCount()`
  Decrements and returns the trip count.
  `void`
  `destroy()`
  Destroys the wrapped servlet, if any.
  `Map<String,Long>`
  `getDependants()`
  Get a list of files that the current page has source dependency on.
  `JspCompilationContext`
  `getJspEngineContext()`
  Returns the JSP compilation context.
  `String`
  `getJspUri()`
  Returns the JSP URI.
  `long`
  `getLastModificationTest()`
  Returns the timestamp of the last modification test.
  `long`
  `getLastUsageTime()`
  Returns the timestamp of the last usage.
  `boolean`
  `getReload()`
  Returns the reload flag.
  `Servlet`
  `getServlet()`
  Gets the servlet, compiling and loading it if necessary.
  `ServletContext`
  `getServletContext()`
  Returns the servlet context.
  `FastRemovalDequeue<JspServletWrapper>.Entry`
  `getUnloadHandle()`
  Returns the unload handle for managing JSP unloading.
  `protected JasperException`
  `handleJspException(Exception ex)`
  Attempts to construct a JasperException that contains helpful information about what went wrong.
  `int`
  `incTripCount()`
  Increments and returns the trip count.
  `boolean`
  `isTagFile()`
  Returns whether this wrapper is for a tag file.
  `Class<?>`
  `loadTagFile()`
  Compile (if needed) and load a tag file.
  `Class<?>`
  `loadTagFilePrototype()`
  Compile and load a prototype for the Tag file.
  `void`
  `service(HttpServletRequest request, HttpServletResponse response, boolean precompile)`
  Services the request, compiling and loading the servlet if necessary.
  `void`
  `setCompilationException(JasperException je)`
  Sets the compilation exception for this JspServletWrapper.
  `void`
  `setLastModificationTest(long lastModificationTest)`
  Sets the timestamp of the last modification test.
  `void`
  `setReload(boolean reload)`
  Sets the reload flag.
  `void`
  `setServletClassLastModifiedTime(long lastModified)`
  Sets the last-modified time of the servlet class file associated with this JspServletWrapper.

  ### Methods inherited from class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### JspServletWrapper

    public JspServletWrapper(ServletConfig config, Options options, String jspUri, JspRuntimeContext rctxt)
    Constructs a JspServletWrapper for JSP pages.
    Parameters:
      `config` - The servlet config
      `options` - The options
      `jspUri` - The JSP URI
      `rctxt` - The runtime context

  - ### JspServletWrapper

    public JspServletWrapper(ServletContext servletContext, Options options, String tagFilePath, TagInfo tagInfo, JspRuntimeContext rctxt, Jar tagJar)
    Constructs a JspServletWrapper for tag files.
    Parameters:
      `servletContext` - The servlet context
      `options` - The options
      `tagFilePath` - The tag file path
      `tagInfo` - The tag info
      `rctxt` - The runtime context
      `tagJar` - The tag JAR

- ## Method Details

  - ### getJspEngineContext

    public JspCompilationContext getJspEngineContext()
    Returns the JSP compilation context.
    Returns:
      the compilation context

  - ### setReload

    public void setReload(boolean reload)
    Sets the reload flag.
    Parameters:
      `reload` - The reload flag

  - ### getReload

    public boolean getReload()
    Returns the reload flag.
    Returns:
      the reload flag

  - ### getServlet

    public Servlet getServlet() throws ServletException
    Gets the servlet, compiling and loading it if necessary.
    Returns:
      the servlet
    Throws:
      `ServletException` - if an error occurs

  - ### getServletContext

    public ServletContext getServletContext()
    Returns the servlet context.
    Returns:
      the servlet context

  - ### setCompilationException

    public void setCompilationException(JasperException je)
    Sets the compilation exception for this JspServletWrapper.
    Parameters:
      `je` - The compilation exception

  - ### setServletClassLastModifiedTime

    public void setServletClassLastModifiedTime(long lastModified)
    Sets the last-modified time of the servlet class file associated with this JspServletWrapper.
    Parameters:
      `lastModified` - Last-modified time of servlet class

  - ### loadTagFile

    public Class<?> loadTagFile() throws JasperException
    Compile (if needed) and load a tag file.
    Returns:
      the loaded class
    Throws:
      `JasperException` - Error compiling or loading tag file

  - ### loadTagFilePrototype

    public Class<?> loadTagFilePrototype() throws JasperException
    Compile and load a prototype for the Tag file. This is needed when compiling tag files with circular dependencies. A prototype (skeleton) with no dependencies on other tag files is generated and compiled.
    Returns:
      the loaded class
    Throws:
      `JasperException` - Error compiling or loading tag file

  - ### getDependants

    public Map<String,Long> getDependants()
    Get a list of files that the current page has source dependency on.
    Returns:
      the map of dependent resources

  - ### isTagFile

    public boolean isTagFile()
    Returns whether this wrapper is for a tag file.
    Returns:
      `true` if this is a tag file

  - ### incTripCount

    public int incTripCount()
    Increments and returns the trip count.
    Returns:
      the trip count before incrementing

  - ### decTripCount

    public int decTripCount()
    Decrements and returns the trip count.
    Returns:
      the trip count after decrementing

  - ### getJspUri

    public String getJspUri()
    Returns the JSP URI.
    Returns:
      the JSP URI

  - ### getUnloadHandle

    public FastRemovalDequeue<JspServletWrapper>.Entry getUnloadHandle()
    Returns the unload handle for managing JSP unloading.
    Returns:
      the unload handle

  - ### service

    public void service(HttpServletRequest request, HttpServletResponse response, boolean precompile) throws ServletException, IOException, FileNotFoundException
    Services the request, compiling and loading the servlet if necessary.
    Parameters:
      `request` - The HTTP request
      `response` - The HTTP response
      `precompile` - Whether this is a precompile-only request
    Throws:
      `ServletException` - if a servlet error occurs
      `IOException` - if an I/O error occurs
      `FileNotFoundException` - if the JSP file is not found

  - ### destroy

    public void destroy()
    Destroys the wrapped servlet, if any.

  - ### getLastModificationTest

    public long getLastModificationTest()
    Returns the timestamp of the last modification test.
    Returns:
      the timestamp of the last modification test

  - ### setLastModificationTest

    public void setLastModificationTest(long lastModificationTest)
    Sets the timestamp of the last modification test.
    Parameters:
      `lastModificationTest` - The timestamp to set

  - ### getLastUsageTime

    public long getLastUsageTime()
    Returns the timestamp of the last usage.
    Returns:
      the timestamp of the last usage

  - ### handleJspException

    protected JasperException handleJspException(Exception ex)

    Attempts to construct a JasperException that contains helpful information about what went wrong. Uses the JSP compiler system to translate the line number in the generated servlet that originated the exception to a line number in the JSP. Then constructs an exception containing that information, and a snippet of the JSP to help debugging. Please see BZ 37062 for more details.

    Parameters:
      `ex` - the exception that was the cause of the problem.
    Returns:
      a JasperException with more detailed information