Вариант 2 всегда кажется заманчивым, но по моему опыту он оказывается непрактичным. Неизменно, для чего-то большего, чем тривиальные сайты, поток страниц становится разным для полной версии и мобильной версии, при этом данные отображаются разными данными. Это становится больше, чем просто другой скин.
Мой совет состоит в том, чтобы приложить серьезные усилия для определения общей бизнес-логики и поместить ее в общий код. Держите контроллеры настолько тонкими, насколько это возможно, но имея контроллеры для настольных компьютеров и мобильных устройств, вы можете держать их в фокусе. Да, будет некоторое дублирование, но, надеюсь, его можно будет уменьшить.
Определите общую логику в виде bean-компонентов в файле /WEB-INF/applicationContext.xml
bean-файла уровня webapp. Затем определите отдельный DispatcherServlet
для каждого сайта, содержащий определенные контроллеры, совместно использующие общие компоненты.