First question: You want to use a timerange based calendar query. See https://www.rfc-editor.org/rfc/rfc4791#section-7.8.1
Second question: You need only one servlet. Typically, you verwrite its default service() method to dispatch to separate handlers, one for each method (REPORT, PUT,...).