Есть и другие способы, но они с точки зрения архитектора / дизайнера или с точки зрения принципов разработки программного обеспечения, которые могут быть или не быть проще / умнее. Если вы спросите дизайнера, он может сказать, что контроллер не должен знать о загрузке данных (модели). Некоторые могут даже рекомендовать не использовать HttpServletReponse в контроллере, а некоторые рекомендуют расширить AbstractView (или выбрать подходящий его подкласс), чтобы его можно было повторно использовать, или сбросить поток в теле ответа, чтобы отделить представление от контроллера.
Возможно, есть и другие способы, но я рекомендую сделать это простым и реализовать все, что работает в команде - хотя я бы порекомендовал проконсультироваться с дизайнером / архитектором (если у вас есть), чтобы избежать каких-либо переделок, потому что они могут иметь другую точку зрения.