code: public static void include(
  		ServletContext servletContext,
  		String page,
  		HttpServletRequest request,
  		HttpServletResponse response,
  		Map<String,?> args
  	) throws SkipPageException, ServletException, IOException {
  		// Resolve the dispatcher
  		String contextRelativePath;
  		{
  			String currentPagePath = getCurrentPagePath(request);
  			if(logger.isLoggable(Level.FINE)) logger.log(
  				Level.FINE,
  				"request={0}, currentPagePath={1}",
  				new Object[] {
  					request,
  					currentPagePath
  				}
  			);
  			contextRelativePath = ServletUtil.getAbsolutePath(currentPagePath, page);
  			if(logger.isLoggable(Level.FINE)) logger.log(
  				Level.FINE,
  				"request={0}, contextRelativePath={1}",
  				new Object[] {
  					request,
  					contextRelativePath
  				}
  			);
  		}
  		RequestDispatcher dispatcher = servletContext.getRequestDispatcher(contextRelativePath);
  		if(dispatcher==null) throw new LocalizedServletException(accessor, "Dispatcher.dispatcherNotFound", contextRelativePath);
  		include(contextRelativePath, dispatcher, request, response, args);
  	}
docs: Performs an include, allowing page-relative paths and setting all values
  compatible with &lt;ao:include&gt; tag.
  
  @param  args  The arguments for the page, make unmodifiable and accessible as request-scope var "arg"
  
  @throws SkipPageException when the included page has been skipped due to a redirect.
  
  @see  #include(java.lang.String, javax.servlet.RequestDispatcher, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.util.Map)