public void doGet(HttpServletRequest req, HttpServletResponse resp)
      throws IOException {
    String uri = req.getPathInfo();
    ProspectsHandler handler = new ProspectsHandler();
    
    // Homepage - return prospects in order of overall rank
    if(uri == null) {
      Matcher loMatcher = loPattern.matcher(req.getQueryString());
      if(!loMatcher.find()) {
        Response.sendError(resp, NO_LO);
      }
      else {
        String prospects = null;
        try {
          prospects = handler.getProspectsByRank(Integer.parseInt(loMatcher.group(1)), 
              Integer.parseInt(loMatcher.group(2)));
        } catch (JsonSyntaxException | NumberFormatException
            | EntityNotFoundException e) {
          e.printStackTrace();
          Response.sendError(resp, SERVER_ERROR);
          return;
        }
        Response.sendJSONResponse(resp, prospects);
      }
      return;
    }
    
    Matcher idMatcher = idPattern.matcher(uri);
    Matcher searchMatcher = searchPattern.matcher(uri);
    
    // Id; return full prospect
    if(idMatcher.find()) {
      long id = Long.parseLong(idMatcher.group(1));
      try {
        String prospect = handler.getProspect(id);
        Response.sendJSONResponse(resp, prospect);
      } 
      catch (EntityNotFoundException e) {
        e.printStackTrace();
        Response.sendError(resp, String.format(ID_NOT_FOUND, id));
      }
    }
    
    // Search; return list of abbrev prospects
    else if(searchMatcher.find()) {
      String keywords = req.getQueryString();
      Matcher qMatcher = qPattern.matcher(keywords);
      if(qMatcher.find()) {
        String prospects = null;
        try {
          prospects = handler.getProspectsByKeywords(qMatcher.group(1));
        } catch (EntityNotFoundException e) {
          e.printStackTrace();
          Response.sendError(resp, SERVER_ERROR);
        }
        Response.sendJSONResponse(resp, prospects);
      }
      else {
        Response.sendError(resp, BAD_URI);
      }
    }
    
    // None; return 400
    else {
      Response.sendError(resp, BAD_URI);
    }
  }