code:     public static String getPathWithinApplication(HttpServletRequest request) {
          String contextPath = getContextPath(request);
          String requestUri = getRequestUri(request);
          if (StringUtils.startsWithIgnoreCase(requestUri, contextPath)) {
              // Normal case: URI contains context path.
              String path = requestUri.substring(contextPath.length());
              return (StringUtils.hasText(path) ? path : "/");
          } else {
              // Special case: rather unusual.
              return requestUri;
          }
      }
  
      /**
       * Return the request URI for the given request, detecting an include request
       * URL if called within a RequestDispatcher include.
       * <p>As the value returned by <code>request.getRequestURI()</code> is <i>not</i>
       * decoded by the servlet container, this method will decode it.
       * <p>The URI that the web container resolves <i>should</i> be correct, but some
       * containers like JBoss/Jetty incorrectly include ";" strings like ";jsessionid"
       * in the URI. This method cuts off such incorrect appendices.
       *
       * @param request current HTTP request
       * @return the request URI
       */
  