Как это сделать? Однако вы хотите этого. Если вы просто делаете это в учебных целях, все, что вы делаете, будет хорошо.
Я бы предложил, чтобы все ваши действия реализовывали один и тот же интерфейс (возможно, расширяя сервлет), чтобы вам не приходилось компилировать во всех разных классах.
Тогда вы можете по существу делать то, что делаете, за исключением того, что ваше приведение к Foo
становится приведением к Servlet
, и тогда вам не нужно иметь особый случай для всех ваших различных классов.
Затем вы также можете загрузить маршруты из конфигурации (возможно, файла XML).
По сути, то, что вы делаете, реализуется инфраструктурой Struts 1 , поэтому стоит почитать об этом (это с открытым исходным кодом, так что вы также можете посмотреть на источник, если хотите).