Как получить значения контекстного параметра Web.xml в методе действия контроллера? - PullRequest
3 голосов
/ 07 апреля 2011

Это похоже на основной вопрос, но мне не очень повезло, поиск в Google.

Мое приложение подключается к SMTP-серверу и через него отправляет почту.Мне нужно, чтобы этот SMTP-сервер можно было настраивать в зависимости от среды, в которой развернуто приложение.

Как указать имя SMTP-сервера в файле конфигурации web.xml и получить к нему доступ с контроллера Spring MVC 3.0?

Контроллер ничего не расширяет и не реализует.Он полностью основан на аннотациях @Controller и @RequestMapping.Из того, что я видел в Интернете, люди получают доступ к контекстным параметрам через API сервлета.Будучи управляемым аннотациями, у меня нет доступа к объекту сервлета.

Ответы [ 3 ]

2 голосов
/ 17 сентября 2013

Добавление экземпляра Servletcontext и автоматическое подключение это работало для меня

@Controller
public MyController {

// other instances relevant to your requirement

    @Autowired
    private ServletContext sCtx;

//other methods relevant to your requirement

}
2 голосов
/ 07 апреля 2011

Я решил это.

Заставьте ваш контроллер реализовать ServletContextAware, для которого требуется метод с именем

setServletContext(ServletContext servletContext)

Spring MVC внедрит контекст сервлета в этот метод, если ваш контроллер ServletContextAware.

Создайте приватную переменную на вашем контроллере для хранения servletController, который вводится в вышеупомянутый метод. Теперь вы можете использовать servletContext так же, как если бы вы использовали обычный сервлет.

НТН.

1 голос
/ 16 июня 2011

Полагаю, должно работать и следующее:

void action(final HttpServletRequest request) {
    final paramValue = request.getSession().getServletContext().getInitParameter("paramName");
    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...