code: private CmsSpellcheckingRequest parseHttpRequest(final ServletRequest req, final CmsObject cms) {
  
          if ((null != cms) && OpenCms.getRoleManager().hasRole(cms, CmsRole.ROOT_ADMIN)) {
              try {
                  if (null != req.getParameter(HTTP_PARAMETER_CHECKREBUILD)) {
                      if (CmsSpellcheckDictionaryIndexer.updatingIndexNecessesary(cms)) {
  
                          parseAndAddDictionaries(cms);
  
                      }
                  }
  
                  if (null != req.getParameter(HTTP_PARAMTER_REBUILD)) {
                      parseAndAddDictionaries(cms);
                  }
              } catch (CmsRoleViolationException e) {
                  LOG.error(e.getLocalizedMessage(), e);
              }
          }
  
          final String q = req.getParameter(HTTP_PARAMETER_WORDS);
  
          if (null == q) {
              LOG.debug("Invalid HTTP request: No parameter \"" + HTTP_PARAMETER_WORDS + "\" defined. ");
              return null;
          }
  
          final StringTokenizer st = new StringTokenizer(q);
          final List<String> wordsToCheck = new ArrayList<String>();
          while (st.hasMoreTokens()) {
              final String word = st.nextToken();
              wordsToCheck.add(word);
  
              if (Character.isUpperCase(word.codePointAt(0))) {
                  wordsToCheck.add(word.toLowerCase());
              }
          }
  
          final String[] w = wordsToCheck.toArray(new String[wordsToCheck.size()]);
          final String dict = req.getParameter(HTTP_PARAMETER_LANG) == null
          ? LANG_DEFAULT
          : req.getParameter(HTTP_PARAMETER_LANG);
  
          return new CmsSpellcheckingRequest(w, dict);
      }
docs: Parse parameters from this request using HTTP.
  
  @param req The ServletRequest containing all request parameters.
  @param cms The OpenCms object.
  @return CmsSpellcheckingRequest object that contains parsed parameters.