private void handleRequest(RequestObject reqObj) {
    final Path path = reqObj.getPath();
    final HttpServerConnection conn = reqObj.getConn();
    final HttpRequest req = reqObj.getRequest();

    WebServerLog.log(this, "Request handler got a request:\n" + req.toString());

    if (!req.getRequestLine().getMethod().toUpperCase().equals("GET")) {
      return;
    }

    final HttpResponse response =
        new BasicHttpResponse(HttpVersion.HTTP_1_1, HttpStatus.SC_OK, ReasonPhrases.OK);

    boolean applyFilters;
    applyFilters = handleFileRequest(path, response);

    if (applyFilters) {
      filterChain.reset(path.toString());
      filterChain.doFilter(reqObj.getRequest(), response);
    }
    try {
      proc.process(response, new BasicHttpContext());
      addContentType(path, response);
    } catch (HttpException | IOException e1) {
      WebServerLog.log(this, "Request handler failed to 'process' response after filtering");
      e1.printStackTrace();
    }
    WebServerLog.log(this, "Request handler is sending a response:\n" + response.toString());

    try {
      conn.sendResponseHeader(response);
      conn.sendResponseEntity(response);
    } catch (HttpException | IOException e) {
      WebServerLog.log(this, "Request handler has encountered error while sending response");
      e.printStackTrace();
    }
  }