The model objects are where the business logic lives. That's where the data is processed. In the MVC model, the View is your
JSP page. No logic, just presentation. The Controller is a
servlet (or servlets) which act as the "traffic cop". It gets the request from the client and decides what needs to be done with it. So it will invoke DAOs to retrieve data, and Model objects to do something with that data before it's finally returned to the View layer for presentation. Personally, I consider DAOs and DTOs to be part of the Model layer even though they are generally limited to fetching data and not doing a lot of processing on it. I usually have the servlet pass the DTOs to Model layer classes for additional processing when needed, if for instance, financial calculations need to be performed, or graphs need to generated, or new database records need to be constructed.