Class ServletHelper


  • @ThreadSafe
    public final class ServletHelper
    extends Object
    Very basic servlet API helper
    Since:
    8.6.3
    Author:
    Philip Helger
    • Field Detail

      • DEFAULT_LOG_EXCEPTIONS

        public static final boolean DEFAULT_LOG_EXCEPTIONS
        See Also:
        Constant Field Values
    • Method Detail

      • setLogExceptions

        public static void setLogExceptions​(boolean bLog)
        Enable or disable the logging of caught exceptions. By default they are not logged.
        Parameters:
        bLog - true to enable logging, false to disable logging.
        Since:
        8.8.2
      • isLogExceptions

        public static boolean isLogExceptions()
        Returns:
        true to log exceptions, false to omit caught exceptions.
        Since:
        8.8.2
      • setRequestAttribute

        public static void setRequestAttribute​(@Nonnull
                                               jakarta.servlet.ServletRequest aServletRequest,
                                               @Nonnull
                                               String sAttrName,
                                               @Nullable
                                               Object aAttrValue)
        Safe version of ServletRequest.setAttribute (String, Object) to work around an error in certain Tomcat versions.
          java.lang.NullPointerException
          1.: org.apache.catalina.connector.Request.notifyAttributeAssigned(Request.java:1493)
          2.: org.apache.catalina.connector.Request.setAttribute(Request.java:1483)
          3.: org.apache.catalina.connector.RequestFacade.setAttribute(RequestFacade.java:539)
         
        Parameters:
        aServletRequest - Servlet request. May not be null.
        sAttrName - Attribute name. May not be null.
        aAttrValue - Attribute value. May be null.
      • getRequestContextPath

        @Nonnull
        public static String getRequestContextPath​(@Nullable
                                                   jakarta.servlet.http.HttpServletRequest aHttpRequest)
        Work around an exception that can occur on Tomcat 8.0.20:
          java.lang.NullPointerException: null
          at org.apache.catalina.connector.Request.getServletContext(Request.java:1593) ~[catalina.jar:8.0.20]
          at org.apache.catalina.connector.Request.getContextPath(Request.java:1910) ~[catalina.jar:8.0.20]
          at org.apache.catalina.connector.RequestFacade.getContextPath(RequestFacade.java:783) ~[catalina.jar:8.0.20]
          at com.helger.web.servlet.request.RequestLogger.getRequestFieldMap(RequestLogger.java:81) ~[ph-web-8.6.3.jar:8.6.3]
         
        Parameters:
        aHttpRequest - Source request. May be null.
        Returns:
        Empty string if request is null or a String specifying the portion of the request URI that indicates the context of the request
      • getRequestContextPath

        @Nonnull
        public static String getRequestContextPath​(@Nullable
                                                   jakarta.servlet.http.HttpServletRequest aHttpRequest,
                                                   @Nullable
                                                   String sFallback)
        Work around an exception that can occur on Tomcat 8.0.20:
          java.lang.NullPointerException: null
          at org.apache.catalina.connector.Request.getServletContext(Request.java:1593) ~[catalina.jar:8.0.20]
          at org.apache.catalina.connector.Request.getContextPath(Request.java:1910) ~[catalina.jar:8.0.20]
          at org.apache.catalina.connector.RequestFacade.getContextPath(RequestFacade.java:783) ~[catalina.jar:8.0.20]
          at com.helger.web.servlet.request.RequestLogger.getRequestFieldMap(RequestLogger.java:81) ~[ph-web-8.6.3.jar:8.6.3]
         
        Parameters:
        aHttpRequest - Source request. May be null.
        sFallback - Fallback context path to use, if none could be determined from the request. May be null.
        Returns:
        Empty string if request is null or a String specifying the portion of the request URI that indicates the context of the request
        Since:
        9.1.10
      • getRequestPathInfo

        @Nonnull
        public static String getRequestPathInfo​(@Nullable
                                                jakarta.servlet.http.HttpServletRequest aHttpRequest)
        Get the path info of an request, supporting sync and async requests.
        Parameters:
        aHttpRequest - Source request. May be null.
        Returns:
        Empty string if request is null or a the path info.
      • getRequestQueryString

        @Nullable
        public static String getRequestQueryString​(@Nullable
                                                   jakarta.servlet.http.HttpServletRequest aHttpRequest)
        Work around an exception that can occur in Jetty 9.3.13:
          java.lang.NullPointerException: null
          at org.eclipse.jetty.server.Request.getQueryString(Request.java:1119) ~[jetty-server-9.3.13.v20161014.jar:9.3.13.v20161014]
          at com.helger.web.servlet.request.RequestHelper.getURL(RequestHelper.java:340) ~[ph-web-8.6.2.jar:8.6.2]
         
        Parameters:
        aHttpRequest - Source request. May be null.
        Returns:
        null if request is null or if no query string could be determined, or if none is present
      • getRequestRequestURI

        @Nonnull
        public static String getRequestRequestURI​(@Nullable
                                                  jakarta.servlet.http.HttpServletRequest aHttpRequest)
        Get the request URI of an request, supporting sync and async requests.
        Parameters:
        aHttpRequest - Source request. May be null.
        Returns:
        Empty string if request is null or the request URI.
      • getRequestRequestURL

        @Nonnull
        public static StringBuffer getRequestRequestURL​(@Nullable
                                                        jakarta.servlet.http.HttpServletRequest aHttpRequest)
        Get the request URL of an request, supporting sync and async requests.
        Parameters:
        aHttpRequest - Source request. May be null.
        Returns:
        Empty StringBuffer if request is null or the request URL.
      • getRequestServletPath

        @Nonnull
        public static String getRequestServletPath​(@Nullable
                                                   jakarta.servlet.http.HttpServletRequest aHttpRequest)
        Get the servlet path of an request, supporting sync and async requests.
        Parameters:
        aHttpRequest - Source request. May be null.
        Returns:
        Empty string if request is null or the servlet path.
        Since:
        8.8.0
      • getRequestCookies

        @Nullable
        public static jakarta.servlet.http.Cookie[] getRequestCookies​(@Nullable
                                                                      jakarta.servlet.http.HttpServletRequest aHttpRequest)
        Work around an exception that can occur on Tomcat 8.0.20:
          java.lang.NullPointerException: null
          at org.apache.catalina.connector.Request.parseCookies(Request.java:2943) ~[catalina.jar:8.0.20]
          at org.apache.catalina.connector.Request.convertCookies(Request.java:2958) ~[catalina.jar:8.0.20]
          at org.apache.catalina.connector.Request.getCookies(Request.java:1987) ~[catalina.jar:8.0.20]
          at org.apache.catalina.connector.RequestFacade.getCookies(RequestFacade.java:662) ~[catalina.jar:8.0.20]
         
        Parameters:
        aHttpRequest - Source request. May be null.
        Returns:
        getRequestCookies
      • setRequestCharacterEncoding

        public static void setRequestCharacterEncoding​(@Nonnull
                                                       jakarta.servlet.http.HttpServletRequest aHttpRequest,
                                                       @Nullable
                                                       Charset aCharset)
        Safely set the request character encoding.
        Parameters:
        aHttpRequest - Http request to change. May not be null.
        aCharset - Character set to use. May be null.
        Since:
        9.1.9
      • setRequestCharacterEncoding

        public static void setRequestCharacterEncoding​(@Nonnull
                                                       jakarta.servlet.http.HttpServletRequest aHttpRequest,
                                                       @Nullable
                                                       String sCharset)
        Safely set the request character encoding.
        Parameters:
        aHttpRequest - Http request to change. May not be null.
        sCharset - Character set to use. May be null.
        Since:
        9.1.9
      • getServletContextBasePath

        @Nonnull
        public static String getServletContextBasePath​(@Nonnull
                                                       jakarta.servlet.ServletContext aSC)
        Get the servlet context base path (for ".")
        Parameters:
        aSC - Servlet context. May not be null.
        Returns:
        The non-null base path.