Q:

Static class usages inside Servlets

I've seen a few times a code, where inside of the Servlet was the inner class to store the values of parametrs and do all sort of validations and etc. Is it considered a good practice to do it? Seems to me as you're dublication the entity classes sometimes. Should the bussiness logic be separated from serlvet?
An example of such usage:
 private static class RequestShiftPreferences {

    private final String numbOfWorkingHoursPerWeek;
    private final String numbOfDaysOFf;
    private final String workTimePreference;

    private RequestShiftPreferences(String numbOfWorkingHoursPerWeek, String numbOfDaysOFf, String workTimePreference) {
        this.numbOfWorkingHoursPerWeek = numbOfWorkingHoursPerWeek;
        this.numbOfDaysOFf = numbOfDaysOFf;
        this.workTimePreference = workTimePreference;
    }

    public static ShiftPreferencesController.RequestShiftPreferences fromRequestParameters(HttpServletRequest request) {
        return new ShiftPreferencesController.RequestShiftPreferences(
                request.getParameter("numbOfWorkingHoursPerWeek"),
                request.getParameter("numbOfDaysOFf"),
                request.getParameter("workTimePreference"));
    }

A:

The main aim of a servlet is to parse an HTTP request to typed parameters and serializing business entity objects to a HTTP result. (Secondarily, it also might do either directly or indirectly some perimetral tasks like data compressing/decompressing, security, logging, etc.)
Upon this basis, I see no good reason to include inner bean-like classes into a servlet to store the input parameters, because they certainly duplicate the entity beans. And,  being private, those inner objects will be needed to be transformed to entity beans.

