Class StaticFileServer

java.lang.Object
com.vaadin.flow.server.StaticFileServer
All Implemented Interfaces:
StaticFileHandler, Serializable

public class StaticFileServer extends Object implements StaticFileHandler
Handles sending of resources from the WAR root (web content) or META-INF/resources in the case that VaadinServlet is mapped using "/*".

This class is primarily meant to be used during developing time. For a production mode site you should consider serving static resources directly from the servlet (using a default servlet if such exists) or through a stand alone static file server.

Since:
1.0
Author:
Vaadin Ltd
See Also:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final Pattern
     
  • Constructor Summary

    Constructors
    Constructor
    Description
    Constructs a file server.
  • Method Summary

    Modifier and Type
    Method
    Description
    protected boolean
    browserHasNewestVersion(jakarta.servlet.http.HttpServletRequest request, long resourceLastModifiedTimestamp)
    Checks if the browser has an up to date cached version of requested resource using the "If-Modified-Since" header.
    protected int
    getCacheTime(String filenameWithPath)
    Calculates the cache lifetime for the given filename in seconds.
    protected URL
    Returns a URL to the static Web resource at the given URI or null if no file found.
    boolean
    serveStaticResource(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response)
    Serves a static resource for the requested path if a resource can be found.
    protected void
    writeCacheHeaders(String filenameWithPath, jakarta.servlet.http.HttpServletResponse response)
    Writes cache headers for the file into the response.
    protected long
    writeModificationTimestamp(URL resourceUrl, jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response)
    Writes the modification timestamp info for the file into the response.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • APP_THEME_ASSETS_PATTERN

      public static final Pattern APP_THEME_ASSETS_PATTERN
  • Constructor Details

    • StaticFileServer

      public StaticFileServer(VaadinService vaadinService)
      Constructs a file server.
      Parameters:
      vaadinService - vaadin service for the deployment, not null
  • Method Details

    • serveStaticResource

      public boolean serveStaticResource(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) throws IOException
      Description copied from interface: StaticFileHandler
      Serves a static resource for the requested path if a resource can be found.
      Specified by:
      serveStaticResource in interface StaticFileHandler
      Parameters:
      request - the request object to read from
      response - the response object to write to
      Returns:
      true if a file was served and the request has been handled, false otherwise.
      Throws:
      IOException - if the underlying servlet container reports an exception
    • getStaticResource

      protected URL getStaticResource(String path)
      Returns a URL to the static Web resource at the given URI or null if no file found.

      The resource will be exposed via HTTP (available as a static web resource). The null return value means that the resource won't be exposed as a Web resource even if it's a resource available via ServletContext.

      Parameters:
      path - the path for the resource
      Returns:
      the resource located at the named path to expose it via Web, or null if there is no resource at that path or it should not be exposed
      See Also:
    • writeModificationTimestamp

      protected long writeModificationTimestamp(URL resourceUrl, jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response)
      Writes the modification timestamp info for the file into the response.
      Parameters:
      resourceUrl - the internal URL of the file
      request - the request object
      response - the response object
      Returns:
      the written timestamp or -1 if no timestamp was written
    • writeCacheHeaders

      protected void writeCacheHeaders(String filenameWithPath, jakarta.servlet.http.HttpServletResponse response)
      Writes cache headers for the file into the response.
      Parameters:
      filenameWithPath - the name and path of the file being sent
      response - the response object
    • getCacheTime

      protected int getCacheTime(String filenameWithPath)
      Calculates the cache lifetime for the given filename in seconds.

      By default filenames containing ".nocache." return 0, filenames containing ".cache." return one year and all other files return 1 hour.

      Parameters:
      filenameWithPath - the name of the file being sent
      Returns:
      cache lifetime for the given filename in seconds
    • browserHasNewestVersion

      protected boolean browserHasNewestVersion(jakarta.servlet.http.HttpServletRequest request, long resourceLastModifiedTimestamp)
      Checks if the browser has an up to date cached version of requested resource using the "If-Modified-Since" header.
      Parameters:
      request - The HttpServletRequest from the browser.
      resourceLastModifiedTimestamp - The timestamp when the resource was last modified. -1 if the last modification time is unknown.
      Returns:
      true if the If-Modified-Since header tells the cached version in the browser is up to date, false otherwise