Class ServerPagesFilter

  • All Implemented Interfaces:
    javax.servlet.Filter

    public class ServerPagesFilter
    extends java.lang.Object
    implements javax.servlet.Filter
    The main filter, implementing server pages support. Filter is applied above assets servlet. For each request, file call detected using pre-defined regexp (by default, looking if request end with en extensions - most likely it's a file). Detected file extension checked if it's a template file. If not template then redirected to assets servlet (normal dropwizard assets processing). In all other cases, request is redirected into rest (with "{app name}" prefix) to be handled by rest resource (dropwizard views).

    Such logic is required in order to merge assets and views worlds so overall it could be used as good old JSP.

    Filter detect direct http errors from assets or views and if custom error page registered for current error code - redirect to error page (which could also be a template). If no special page registered - server error response as is.

    Exceptions inside rest resources are tracked by request event listener TemplateExceptionListener which allows to use more informative exception objects in error page (note that it means exception mappers are executed, but their response is ignored). Direct error responses are tracked with response filter TemplateErrorResponseFilter (applied only for template resources).

    When SPA support is enabled, intercepted 404 error is checked if spa routing detected and do index redirect instead of showing error page.

    Since:
    22.10.2018
    • Constructor Summary

      Constructors 
      Constructor Description
      ServerPagesFilter​(java.lang.String uriPath, java.lang.String filePattern, java.lang.String index, TemplateRedirect redirect, SpaSupport spa, java.lang.Iterable<io.dropwizard.views.ViewRenderer> renderers)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void destroy()  
      void doFilter​(javax.servlet.ServletRequest servletRequest, javax.servlet.ServletResponse servletResponse, javax.servlet.FilterChain chain)  
      void init​(javax.servlet.FilterConfig filterConfig)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • ServerPagesFilter

        public ServerPagesFilter​(java.lang.String uriPath,
                                 java.lang.String filePattern,
                                 java.lang.String index,
                                 TemplateRedirect redirect,
                                 SpaSupport spa,
                                 java.lang.Iterable<io.dropwizard.views.ViewRenderer> renderers)
    • Method Detail

      • init

        public void init​(javax.servlet.FilterConfig filterConfig)
                  throws javax.servlet.ServletException
        Specified by:
        init in interface javax.servlet.Filter
        Throws:
        javax.servlet.ServletException
      • doFilter

        public void doFilter​(javax.servlet.ServletRequest servletRequest,
                             javax.servlet.ServletResponse servletResponse,
                             javax.servlet.FilterChain chain)
                      throws java.io.IOException,
                             javax.servlet.ServletException
        Specified by:
        doFilter in interface javax.servlet.Filter
        Throws:
        java.io.IOException
        javax.servlet.ServletException
      • destroy

        public void destroy()
        Specified by:
        destroy in interface javax.servlet.Filter