In Chapter 14, we showed you how modules can be used to customize the way that a request is handled—they can look at headers, set up state data, authenticate users, and even add bits of data to the response. But the job of generating the response is the responsibility of a handler. The lifecycle events, modules, and all of the preparatory work that goes into processing a request is about locating a handler, giving it the HTTP request, and asking it to generate a response. Modules are useful—but the heavy lifting goes on in the handler. In this chapter, we show you how handlers work, demonstrate the different ways that you can create and use them, and show you how to take control of the way that handlers are selected and created.