Вам не нужно указывать имя в теге формы, удалите класс:
Не рекомендуется динамично подготовить URL во время выполнения, особенно на основе ServletRequest. Это, прежде всего, потому что Вы понятия не имеете о URL, что пользователи использовали бы для доступа к приложению - сервер приложений мог быть позади веб-сервера, брандмауэра или подсистемы балансировки нагрузки. Для хранения этого коротким нельзя предсказать топологии сети.
Ваш текущий метод выборки URL от файла свойств достаточно хорош для решения упомянутого вопроса. Возможно, необходимо посмотреть на обеспечение административной консоли для управления URL, появляющимся в письмах, особенно если там существует консоль администрирования, или если существуют связанные опции, которые должны войти в тот.
Править: Моя последняя точка повторяет то, о чем говорил Tony.
Почему просто не имеют веб-страницу установки, которая подходит в первый раз, когда приложение запущено, если конфигурационный файл не существует (в папке WEB-INF, например. Используя ServletContext, можно назвать getRealPath и получить реальный путь Файла и видеть, существует ли он (). Если это делает, перенаправляет к начальной странице приложения, если это не делает, открывает администраторскую страницу).
Лучшее Вы, которых бегунок делает с ServletContext, читаетесь некоторые настройки из web.xml, и получите путь контекста, только HttpRequest может дать Вам URL FQ.
Проверяли ли вы с помощью отладчика, не является ли ваш ServletContext экземпляром HttpServletContext? Если да, примените его и получите информацию оттуда.