Class ServerPagesFilter

java.lang.Object
ru.vyarus.guicey.gsp.app.filter.ServerPagesFilter
All Implemented Interfaces:
jakarta.servlet.Filter

public class ServerPagesFilter extends Object implements jakarta.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 Details

  • Method Details

    • init

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

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

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