code: @RequirePOST
      public synchronized void doConfigSubmit(StaplerRequest req,
              StaplerResponse rsp) throws IOException, ServletException, FormException {
          checkPermission(CONFIGURE);
  
          description = req.getParameter("description");
  
          JSONObject json = req.getSubmittedForm();
  
          try {
              try (BulkChange bc = new BulkChange(this)) {
                  setDisplayName(json.optString("displayNameOrNull"));
  
                  logRotator = null;
  
                  DescribableList<JobProperty<?>, JobPropertyDescriptor> t = new DescribableList<>(NOOP, getAllProperties());
                  JSONObject jsonProperties = json.optJSONObject("properties");
                  if (jsonProperties != null) {
                    t.rebuild(req,jsonProperties,JobPropertyDescriptor.getPropertyDescriptors(Job.this.getClass()));
                  } else {
                    t.clear();
                  }
                  properties.clear();
                  for (JobProperty p : t) {
                      p.setOwner(this);
                      properties.add(p);
                  }
  
                  submit(req, rsp);
                  bc.commit();
              }
              ItemListener.fireOnUpdated(this);
  
              final ProjectNamingStrategy namingStrategy = Jenkins.getInstance().getProjectNamingStrategy();
                  if(namingStrategy.isForceExistingJobs()){
                      namingStrategy.checkName(name);
                  }
                  FormApply.success(".").generateResponse(req, rsp, null);
          } catch (JSONException e) {
              LOGGER.log(Level.WARNING, "failed to parse " + json, e);
              sendError(e, req, rsp);
          }
      }
docs: Accepts submission from the configuration page.