code: protected final String servicePathForRequest(HttpServletRequest request) {
          String pathInfo = request.getPathInfo();
          String queryString = request.getQueryString();
  
          String path = "";
  
          if (pathInfo != null) {
              path += pathInfo;
          }
  
          if (queryString != null) {
              path += "?" + queryString;
          }
  
          return path;
      }
docs: @return The url for the request with the context and the servlet path
  stripped out, which leaves whatever wild cards were left that matched
  this servlet.
  
  <p>
  For example:
  <ul>
  <li>Given the request,
  "http://my.site.com/app/get/the/thing?foo=bar"</li>
  <li>and some servlet which maps to, "/get/*"</li>
  <li>in an application with context, "/app"</li>
  <li>then this method would return, "/the/thing?foo=bar"</li>
  </ul>