code: public void updateJspFromRequest(String servletPath, CmsFlexRequest request) {
  
          // assemble the RFS name of the requested jsp
          String jspUri = servletPath;
          String pathInfo = request.getPathInfo();
          if (pathInfo != null) {
              jspUri += pathInfo;
          }
  
          // check the file name
          if ((jspUri == null) || !jspUri.startsWith(m_jspWebAppRepository)) {
              // nothing to do, this kind of request are handled by the CmsJspLoader#service method
              return;
          }
  
          // remove prefixes
          jspUri = jspUri.substring(m_jspWebAppRepository.length());
          if (jspUri.startsWith(CmsFlexCache.REPOSITORY_ONLINE)) {
              jspUri = jspUri.substring(CmsFlexCache.REPOSITORY_ONLINE.length());
          } else if (jspUri.startsWith(CmsFlexCache.REPOSITORY_OFFLINE)) {
              jspUri = jspUri.substring(CmsFlexCache.REPOSITORY_OFFLINE.length());
          } else {
              // this is not an OpenCms jsp file
              return;
          }
  
          // read the resource from OpenCms
          CmsFlexController controller = CmsFlexController.getController(request);
          try {
              CmsResource includeResource;
              try {
                  // first try to read the resource assuming no additional jsp extension was needed
                  includeResource = readJspResource(controller, jspUri);
              } catch (CmsVfsResourceNotFoundException e) {
                  // try removing the additional jsp extension
                  if (jspUri.endsWith(JSP_EXTENSION)) {
                      jspUri = jspUri.substring(0, jspUri.length() - JSP_EXTENSION.length());
                  }
                  includeResource = readJspResource(controller, jspUri);
              }
              // make sure the jsp referenced file is generated
              updateJsp(includeResource, controller, new HashSet<String>(8));
          } catch (Exception e) {
              if (LOG.isDebugEnabled()) {
                  LOG.debug(e.getLocalizedMessage(), e);
              }
          }
      }
docs: Updates the internal jsp repository when the servlet container
  tries to compile a jsp file that may not exist.<p>
  
  @param servletPath the servlet path, just to avoid unneeded recursive calls
  @param request the current request