code: public void doHelp(StaplerRequest req, StaplerResponse rsp) throws IOException, ServletException {
          String path = req.getRestOfPath();
          if(path.contains("..")) throw new ServletException("Illegal path: "+path);
  
          path = path.replace('/','-');
  
          PluginWrapper pw = getPlugin();
          if (pw!=null) {
              rsp.setHeader("X-Plugin-Short-Name",pw.getShortName());
              rsp.setHeader("X-Plugin-Long-Name",pw.getLongName());
              rsp.setHeader("X-Plugin-From", Messages.Descriptor_From(
                      pw.getLongName().replace("Hudson","Jenkins").replace("hudson","jenkins"), pw.getUrl()));
          }
  
          for (Klass<?> c= getKlass(); c!=null; c=c.getSuperClass()) {
              RequestDispatcher rd = Stapler.getCurrentRequest().getView(c, "help"+path);
              if(rd!=null) {// template based help page
                  rd.forward(req,rsp);
                  return;
              }
  
              URL url = getStaticHelpUrl(c, path);
              if(url!=null) {
                  // TODO: generalize macro expansion and perhaps even support JEXL
                  rsp.setContentType("text/html;charset=UTF-8");
                  try (InputStream in = url.openStream()) {
                      String literal = IOUtils.toString(in,"UTF-8");
                      rsp.getWriter().println(Util.replaceMacro(literal, Collections.singletonMap("rootURL",req.getContextPath())));
                  }
                  return;
              }
          }
          rsp.sendError(SC_NOT_FOUND);
      }
docs: Serves {@code help.html} from the resource of {@link #clazz}.