A web application developer should not really care if it is a filter or a servlet. The developer should simply care about how the framework makes their development easier.
Now, I would even take this further to say that a Web framework does not even have to be based on the J2EE spec (as per the Play Framework), in which the rules have been entirely re-written to make web applications easier to develop for a Java programmer.
A Filter is definitely the best choice. A web framework will run as a web application in an application server. The application server will be better for handling some resources, i.e. images and other static files while the web framework should handle calls to dynamic resources. This is easier to achieve if you create a filter that can forward all requests for static resources to the application server (or another filter).
Check this benchmark. You will find Play!framework (Netty based) + Japid template engine is nearly close to static content hosting (even with concurrent user increased).