Ответственность контроллера в MVC:
1. Получение параметров из представления (GET/POST итд) и передача их в модель
2. Возврат представления с параметрами, полученными из модели
3. Валидация и фильтрация параметров в обе стороны
4. Контроль доступа на основании правил, заложенных в модели
То есть контроллер - это посредник между представлением и моделью. Контроллер по возможности не должен содержать бизнес-логику. Представление по возможности не должно вызывать методы модели напрямую, модель gо возможности не должна содержать примеси представления (HTML) и возвращать представление. "По возможности" - так как не всегда это возможно/оправдано с точки зрения трудозатрат разработки.
Общее правило: тонкий контроллер и толстая модель.
. Вопрос такой - контроллер создается для каждого запроса отдельно или один запрашивающий получает тот же самый контроллер, что и другой запрашивающий?
Специфика веб-приложений в том, что на каждый запрос клиента создается новый экземпляр приложения, так как HTTP(S) - протокол без сохранения состояния (stateless).
Для всех клиентов существует один общий класс контроллера (class myController), но на каждый запрос каждый клиент получает собственный экземпляр контроллера (new myController)
если один пользователь запросит экшен1, а второй пользователь после этого запросит экшен2 - не может ли он получить значение "9"?
нет, второй пользователь получит 5, так как взаимодействует с собственным экземпляром контроллера.