Начать надо с понимания того, что есть стандарт JavaEE, который включает в себя множество других стандартов, в том числе стандартов web-разработки, таких как сервлеты, JSP, JSF и прочее. Крайне желательно их знать. Разработанные в соответствии с этими стандартами приложения запустятся на любом сервере приложений. Но не всегда сервер приложений нужен. Для многих задач хватит простого web-контейнера, такого как Tomcat. Что касается выбора фреймворка, Spring настолько всеобъемлющ и популярен, что тягаться с ним какой-либо другой фреймворк просто не сможет. Достаточно открыть любой работный сайт, поискать вакансии java-разработчик и почитать требования. Сильно сомневаюсь, что вы найдёте Grails.